Riprendiamo a parlare di linguaggio a basso livello.
Ecco un nuovo esercizio in linguaggio Assembler: realizzare un programma capace di effettuare la moltiplicazione di due numeri con somme ripetute. (Stampa del prodotto max a 2 cifre).

;ESERCIZIO: Moltiplicazione di due numeri con somme ripetute. (stampa max 2 cifre)
 
.model small
 
.stack 100h
 
.data
striper byte 32d, 'per', 32d, '$'
 
.code
 
start:
 
mov ah, 1h
int 21h
sub al, 30h  ; dato che un carattere immesso da tastiera viene convertito nel corrispettivo codice ascii. Per poter lavorare col numero ascii, dobbiamo sottrarre 30h. (dal segmento data invece lo abbiamo già diretto il numero ascii)
 
 
mov bl, al
 
cmp bl, 0
je finez
 
sub bl, 1
 
mov ax, @data
mov ds, ax
 
mov dx, offset striper
mov ah, 9h
int 21h
 
mov ah, 1h
int 21h
sub al, 30h
 
cmp al, 0
je finez
 
mov dl, al
 
prodotto:
 
cmp bl, 0
jle fine
add dl, al
dec bl
jmp prodotto
 
fine:
 
mov bl, dl
 
mov dl, ' '
mov ah, 2h
int 21h 
 
mov dl, '='
mov ah, 2h
int 21h
 
mov dl, ' '
mov ah, 2h
int 21h
 
mov ah, 0
mov al, bl
 
mov cl, 10
 
div cl
 
add ah, 30h
mov bl, ah
 
add al, 30h
 
mov dl, al
mov ah, 2h
int 21h
 
mov dl, bl
mov ah, 2h
int 21h
 
mov ax, 4c00h
int 21h
 
finez:
 
mov dl, ' '
mov ah, 2h
int 21h
 
mov dl, '='
mov ah, 2h
int 21h
 
mov dl, ' '
mov ah, 2h
int 21h
 
mov dl, '0'
mov ah, 2h
int 21h
 
mov ax, 4c00h
int 21h
 
end start