Premetto che stò utilizzando emu8086
Ho questo codice
codice:
#ORG 100h
JMP start
NUM DB 32 ;dichiaro una var Num di tipo Byte valorizzata con un num dec a 2 cifre(es32)
B DB ?,?,? ;dichiaro un vettore di 3 elementi non valorizzati di tipo byte
start:
MOV AH,0 ;azzero AH per ospitare l'eventuale resto della divisione
MOV AL,NUM ;sposto nel registro AL il valore specificato in NUM (in questo caso 32)
MOV BL,10 ;imposto in un registro il valore del divisore
DIV BL ;eseguo la divisione tra AL (dividendo) e BL (divisore)
MOV NUM,AL ;aggiorno la var NUM con il quoziente della divisione
ADD AH,'0' ;aggiungo il valore '0' al resto della divisione
MOV B[1],AH ;metto nell'elemento dell'array B di indice 1 il risultato della somma precedente
MOV AH,0 ;riazzero AH per ospitare l'eventuale resto della divisione
DIV BL ;eseguo la divisione tra AL (dividendo) e BL (divisore)
ADD AH,'0' ;aggiungo il carattere '0' al resto della divisione
MOV B[0],AH ;metto nell'elemento dell'array B di indice 0, il resto+il carattere '0'
MOV B[2],'$' ;metto in B[2] il carattere $
LEA DX,B
MOV AH,9
INT 21H
HLT ; Termino il programma
Non mi è chiaro ADD AH,'0' ;aggiungo il valore '0' al resto della divisione ... a che serve fare questo 0,2+0?
Il resto della prima divisione è 0,2 ... io facendo quell'istruzione (aggiungo 0) è come se diventasse 2?? e la stessa cosa vale per il secondo resto della divisione (3/10 = 0,3 -> 0,3 + 0=3) e una volta stampato a schermo esce 32?
E a cosa servono le istruzioni
MOV AH,9
INT 21H
??
Si riferisce al comando per stampare il risultato? cioè l'interrupt 21 , funz 21 ovvero stampa una stringa?