<<<    Index    >>>
3-19
INSTRUCTION SET REFERENCE
AAM—ASCII Adjust AX After Multiply
Description
This instruction adjusts the result of the multiplication of two unpacked BCD values to create a
pair of unpacked (base 10) BCD values. The AX register is the implied source and destination
operand for this instruction. The AAM instruction is only useful when it follows an MUL
instruction that multiplies (binary multiplication) two unpacked BCD values and stores a word
result in the AX register. The AAM instruction then adjusts the contents of the AX register to
contain the correct 2-digit unpacked (base 10) BCD result. 
The generalized version of this instruction allows adjustment of the contents of the AX to create
two unpacked digits of any number base (refer to the “Operation” section below). Here, the
imm8 byte is set to the selected number base (for example, 08H for octal, 0AH for decimal, or
0CH for base 12 numbers). The AAM mnemonic is interpreted by all assemblers to mean adjust
to ASCII (base 10) values. To adjust to values in another number base, the instruction must be
hand coded in machine code (D4 imm8).
Operation
tempAL 
<
 AL;
AH 
<
 tempAL / imm8; (* imm8 is set to 0AH for the AAD mnemonic *)
AL 
<
 tempAL MOD imm8;
The immediate value (imm8) is taken from the second byte of the instruction.
Flags Affected
The SF, ZF, and PF flags are set according to the result. The OF, AF, and CF flags are undefined.
Exceptions (All Operating Modes)
None with the default immediate value of 0AH. If, however, an immediate value of 0 is used, it
will cause a #DE (divide error) exception.
Opcode
Instruction
Description
D4 0A
AAM
ASCII adjust AX after multiply
D4 ib
(No mnemonic)
Adjust AX after multiply to number base imm8
<<<    Index    >>>