| Supponendo che il valore lasciato in AL
sia il risultato esadecimale della somma
di 2 bytes di valore compreso tra 00H
e 09H, questa istruzione ne modifica il contenuto
in funzione del fatto che la somma, trattata come
fosse decimale ...
| ...non produca riporto (per
esempio con AL=08+01=09H o
AL=05+03=08H), ma anche se
ha lasciato la flag A (Auxiliary Carry)
a 1:
| il nibble basso di AL viene lasciato
inalterato, dato che esprime già il codice BCD corretto, tra
0000 (associato al decimale 0) e 1001 (associato al decimale
9). |
| il nibble alto di AL viene forzato a
0000 |
| il registro AH rimane inalterato. |
| le flag A (Auxiliary Carry)
e C (Carry)
sono poste entrambe a 0. |
|
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0100 NV UP EI PL NZ NA
PO NC
1192:0100 B008 MOV AL,08
-T
AX=0008 BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0102 NV UP EI PL NZ NA
PO NC
1192:0102 0401 ADD AL,01
-T
AX=0009 BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0104 NV UP EI PL NZ NA
PE NC
1192:0104 37
AAA
-T
AX=0009
BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0105 NV UP EI PL NZ NA
PE NC
1192:0105
|
| ...generi un riporto
(per esempio AL=08+04=0CH o
AL=09+09=12H):
| ad AL viene sommato
6, nei nostri esempi 0C+06=12H
o 12+06=18;
naturalmente la somma modifica anche i 4 bit più alti, ma di
essi non ci importa, dato che saranno azzerati, come vedremo tra
poco. |
| il nibble basso di AL
è dunque di nuovo un codice BCD, in stretto accordo con
l'aggiustamento decimale prodotto. |
| il nibble alto di AL viene forzato a
0000. |
| il registro AH viene incrementato. |
| le flag A (
Auxiliary Carry) e C ( Carry)
sono poste entrambe a 1. |
|
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0100 NV UP EI PL NZ
NA PO
NC
1192:0100 B008 MOV AL,08
-T
AX=0008 BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0102 NV UP EI PL NZ
NA PO
NC
1192:0102 0404 ADD AL,04
-T
AX=000C BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0104 NV UP EI PL NZ
NA PE
NC
1192:0104 37
AAA
-T
AX=0102 BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0105 NV UP EI PL NZ
AC
PE CY
1192:0105
|
-R
AX=0000
BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0100 NV UP EI PL NZ
NA PO
NC
1192:0100 B008 MOV AL,09
-T
AX=0009
BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0102 NV UP EI PL NZ
NA PO
NC
1192:0102 0404 ADD AL,09
-T
AX=0012
BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0104 NV UP EI PL NZ
AC
PE
NC
1192:0104 37
AAA
-T
AX=0108
BX=0000 CX=0000 DX=0000 SP=ED5D BP=0000 SI=0000 DI=0000
DS=1192 ES=1192 SS=1192 CS=1192 IP=0105 NV UP EI PL NZ
AC
PE CY
1192:0105
|
|