DAA              Decimal Adjust after Addition       Flags: O D I T S Z A P C
?       * * * * *

Logic:    If (AL & 0Fh) > 9 or (AF = 1) then
AL   AL + 6
AF   1
else AF   0
If (AL > 9Fh) or (CF = 1) then
AL   AL + 60h
CF   1
else CF   0

DAA corrects the result of a previous addition of two valid packed
decimal operands (note that this result must be in AL). This
instruction changes the content of AL so that it will contain a pair
of valid packed decimal digits.

Operands                  Clocks   Transfers  Bytes   Example
no operands                 4          -        1     DAA

Note:          Packed BCD stores one digit per nibble (4 bits); the
least significant digit is in the lower nibble.

It is not possible to apply an adjustment after
division or multiplication of packed BCD numbers.
If you need to use multiplication or division, it is
better to use unpacked BCD numbers.  See, for
example, the description of AAM (ASCII Adjust after

See also: DAS
See also: AAA
See also: AAS
See also: AAM
See also: AAD
See also: Flags

DAA Decimal Adjust after Addition