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è????