L'istruzione di addizione ADD nn tiene conto del riporto
Quindi eseguendo la seguente addizione:
AL=00100011 +
AH=11111011 =
-------------
1|00011110 che è uguala ad 1Eh
^
|
|
|
Riporto
Ottengo un risultato che è dato dalla somma dei due senza l'addizione del riporto alla somma finale
Utilizzando l'istruzione ADC invece, facendo la stessa somma dovrei avere la somma finale + il riporto, quindi più uno:
AL=00100011 +
AH=11111011 =
-------------
1|00011110 che è uguala ad 1Eh
^
|
|
|
Riporto che si aggiunge alla somma finale (1Eh) e quindi il risultato finale è 1Fh
Fin qui tutto dovrebbe andare bene ma eseguendo questo programma:
Ed eseguendolo passo passo con il debug in ah che contiene la somma finale, sia mettendo ADD che ADC ottengo sempre 1Eh.codice:.model small .data val1 db 00100011b val2 db 11111011b .code inizio: mov ax,@data mov ds,ax mov ax,0 mov al,val1 mov ah,val2 adc ah,al mov ax,4c00h int 21h end inizio
Perchè????![]()

Rispondi quotando

