Assembleur 80x86 |
AAD |
INTEL 8088+ |
Ascii Adjust ax before Division |
Syntaxe
Paramètres
Nom |
Description |
immédiat 8 |
Ce paramètre permet une valeur statique de 8 bits |
Description
Grâce à cette instruction, on peut convertir une valeur de format DCB
non compactée se trouvant dans le registre AX (un chiffre dans le registre AH tandis que l'autre est dans le
registre AL) en un nombre binaire étant placée dans le registre AL. Pour la division, on utilise
l'instruction IDIV en veillant auparavant à ce que le registre AH soit vide.
Remarques
- L'instruction AAD définit la valeur dans le registre AL sur (AL + (10 * AH)), puis efface le registre AH sur 00h. La valeur dans le
registre AX est alors égale à l'équivalent binaire du nombre original à deux chiffres non compressé (base 10) des registres AH et AL.
- La version généralisée de cette instruction permet d'ajuster deux chiffres non empaquetés de toute base numérique en définissant l'octet imm8 sur la base numérique sélectionnée (par
exemple, 08h pour octal, 0Ah pour décimal ou 0Ch pour les numéros de base 12). La mnémonique AAD est interprétée par tous les assembleurs comme signifiant ajuster les valeurs ASCII
(base 10). Pour ajuster les valeurs dans une autre base de nombres, l'instruction doit être codée à la main dans le code machine (D5h imm8).
- L'instruction AAD n'est pas support dans le Long Mode proposé par le mode 64 bits x86-64 de Intel 64 et AMD64.
Algorithme
MODULE AAD(immédiat 8)
AL ← AH x immédiat 8 bits + AL
AH ← 00h
|
Mnémonique
Instruction |
Opcode |
Description |
AAD |
D5h 0Ah |
Ajuste 2 chiffres BCD dans les registres AL et AH (invalide en mode 64-bits) |
aucun |
D5h ib |
Ajuste 2 chiffres BCD dans les registres AL et AH (invalide en mode 64-bits) |
Cycles d'horloge
Instruction |
Opcode |
8086 |
8088 |
80186 |
80286 |
80386 |
i486 |
Pentium |
Cx486SLC |
Cx486DX |
IBM 486BL3X |
UMC U5S |
AAD |
D5h 0Ah |
60 |
60 |
15 |
14 |
19 |
14 |
10 |
4 |
4 |
15 |
11 |
Exceptions
Message |
Mode réel |
Virtuel 8086 |
Mode protégé |
Description |
#UD(Opcode invalide) |
|
|
X |
Cette instruction est exécutée en mode 64-bits |
Exemple
L'exemple suivant permet de diviser 74 par 9 et place le résultat dans les registres AL et AH :
- MOV AX, 0704H
- MOV CH, 09H
- AAD
- DIV CH
Voir également
Instruction assembleur 80x86 - Instruction AAA
Instruction assembleur 80x86 - Instruction AAM
Instruction assembleur 80x86 - Instruction AAS
Références
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 801
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 54.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 69 à 70.
Dernière mise à jour : Lundi, le 1 septembre 2014