Ascii Adjust for Addition
86/88 |
Y |
186 |
Y |
286 |
Y |
386 |
Y |
486 |
Y |
AAA |
Ovfl |
N |
Dir |
N |
Int |
N |
Trap |
N |
Sign |
? |
Zero |
? |
Aux |
? |
Prty |
? |
Carry |
Y |
Converts the number in the lower 4 bits (nibble) of AL to an unpacked
BCD number (high-order nibble of AL is zeroed).
If the lower 4 bits of the number in AL is greater than 9, or the
auxiliary carry flag is set, this instruction converts AL to its
unpacked BCD form by adding 6 (subtracting 10) to AL; adding 1 to AH;
and setting the auxiliary flag and carry flags. This instruction will
always leave 0 in the upper nibble of AL.
Note: Unpacked BCD stores one digit per byte; AH contains
the most-significant digit and AL the least-
significant digit.
------------------------------------ Timing ----------------------------------
OpCode Instruction 386 286 86
37 AAA 4 3 6
------------------------------------ Logic -----------------------------------
If (AL & 0Fh) > 9 or (AF = 1) then
AL = AL + 6
AH = AH + 1
AF = 1
CF = 1
else
AF = 0
CF = 0
AL = AL and 0Fh
See Also AAD AAS AAM ADC DAA ADD INC Flags |