Intel 253666-024US Manuel D’Utilisation

Page de 760
Vol. 2A 3-21
INSTRUCTION SET REFERENCE, A-M
AAD—ASCII Adjust AX Before Division
AAD—ASCII Adjust AX Before Division
Description
Adjusts two unpacked BCD digits (the least-significant digit in the AL register and the 
most-significant digit in the AH register) so that a division operation performed on 
the result will yield a correct unpacked BCD value. The AAD instruction is only useful 
when it precedes a DIV instruction that divides (binary division) the adjusted value in 
the AX register by an unpacked BCD value.
The AAD instruction sets the value in the AL register to (AL + (10 * AH)), and then 
clears the AH register to 00H. The value in the AX register is then equal to the binary 
equivalent of the original unpacked two-digit (base 10) number in registers AH 
and AL.
The generalized version of this instruction allows adjustment of two unpacked digits 
of any number base (see the “Operation” section below), by setting the imm8 byte to 
the selected number base (for example, 08H for octal, 0AH for decimal, or 0CH for 
base 12 numbers). The AAD mnemonic is interpreted by all assemblers to mean 
adjust ASCII (base 10) values. To adjust values in another number base, the instruc-
tion must be hand coded in machine code (D5 imm8).
This instruction executes as described in compatibility mode and legacy mode. It is 
not valid in 64-bit mode.
Operation
IF 64-Bit Mode
THEN
#UD;
ELSE
tempAL ← AL;
tempAH ← AH;
AL ← (tempAL + (tempAH ∗ imm8)) AND FFH; 
(* imm8 is set to 0AH for the AAD mnemonic.*)
AH ← 0;
FI;
The immediate value (imm8) is taken from the second byte of the instruction.
Opcode
Instruction
64-Bit Mode Compat/
Leg Mode
Description
D5 0A
AAD
Invalid
Valid
ASCII adjust AX before division.
D5 ib
(No mnemonic)
Invalid
Valid
Adjust AX before division to 
number base imm8.