Premetto che stò utilizzando emu8086
Ho questo codice
Non mi è chiaro ADD AH,'0' ;aggiungo il valore '0' al resto della divisione ... a che serve fare questo 0,2+0?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
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?

Rispondi quotando
nel commento c'era scritto