Ciao ragazzi! Sono alle prime armi con assembly, e lo reputo un linguaggio molto difficile per via della sua sintassi e logica. Detto questo, stavo provando a scrivere il seguente programma:
dato un numero in input (max=10) stampare tutti i numeri da 0 a numero finchè numero è diverso da 0.
Il codice scritto di mio pugno funziona, ma non capisco perchè in output vengano stampati codici ASCII molto strani, e poi alla fine la sequenza numerica.
Ciao!
.MODEL SMALL
.STACK 100H
.DATA
n DB ?
cont DB 00h
.CODE
.STARTUP
MOV AH,01H ;richiede in input il numero n
INT 21H
MOV n,AL
ciclo: CMP n,0 ;ripeti il ciclo fino a quando n!=0
JE fine ; se n==0 salta a fine
INC cont
MOV DH,0 ;azzeramento della parte alta di DX
MOV DL,cont
MOV AH,02h ;stampa cont
INT 21h
DEC n
JMP ciclo
fine: MOV AH,4Ch ;restituisco il comando al DOS
INT 21h
END