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:
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
Ed eseguendolo passo passo con il debug in ah che contiene la somma finale, sia mettendo ADD che ADC ottengo sempre 1Eh.
Perchè????