Assembler – Moltiplicazione di numeri
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 |
Commenti