Assembleur 80x86 |
AAM |
INTEL 8088+ |
Ascii adjust AX After Multiplication |
Syntaxe
Paramètres
Nom |
Description |
immédiat 8 |
Ce paramètre permet une valeur statique de 8 bits |
Description
Cette instruction offre la possibilité de convertir le produit de la multiplication de 2 valeurs de format DCB en un format
DCB. Étant donné que le microprocesseur multiplie ces valeurs comme s'il s'agissait de nombres normaux, des
débordements peuvent éventuellement se produire dans les résultats. L'instruction AAM rectifie cela. Lors de
l'exécution de cette commande, le contenu du registre AL est divisé en 2 chiffres de format DCB nom compactés :
le chiffre le plus élevé est placé dans le registre AH tandis que le moins élevé est mis
dans le registre AL.
Remarques
- La version généralisée de l'instruction AAM permet d'ajuster le contenu du registre AX afin de créer deux chiffres décompressés de toute base numérique.
Ici, l'octet imm8 est défini sur la base de numéro sélectionnée (par exemple, 08h pour l'octal, 0Ah pour le nombre décimal ou 0Ch pour les nombres en base 12). La mnémonique AAM est
interprétée par tous les assembleurs comme un ajustement aux 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 (D4h imm8).
- L'instruction AAM n'est pas support dans le Long Mode proposé par le mode 64 bits x86-64 de Intel 64 et AMD64.
Algorithme
MODULE AAM(immédiat 8)
AH ← AL ÷ immédiat 8
AL ← AL MOD immédiat 8
|
Mnémonique
Instruction |
Opcode |
Description |
AAM |
D4h 0Ah |
Crée une paire des valeurs dépaqueter BCD dans les registres AL et AH (invalide en mode 64-bits) |
aucun |
D4h ib |
Crée une paire des valeurs dépaqueter immédiatement dans l'octet de base (invalide en mode 64-bits) |
Cycles d'horloge
Instruction |
Opcode |
8086 |
8088 |
80186 |
80286 |
80386 |
i486 |
Pentium |
Cx486SLC |
Cx486DX |
IBM 486BL3X |
UMC U5S |
AAM |
D4h 0Ah |
83 |
83 |
19 |
16 |
17 |
15 |
18 |
16 |
16 |
17 |
12 |
Exceptions
Message |
Mode réel |
Virtuel 8086 |
Mode protégé |
Description |
#DE(Division par zéro) |
X |
X |
X |
Valeur immédiate 8 bits contient 0 |
#UD(Opcode invalide) |
|
|
X |
Cette instruction est exécutée en mode 64-bits |
Exemple
L'exemple suivant permet de multiplier 9 et 7 et de retourner le résultat dans le registre AX :
- MOV AL, 00000111b
- MOV BH, 00001001b
- MUL BH
- AAM
Voir également
Instruction assembleur 80x86 - Instruction AAA
Instruction assembleur 80x86 - Instruction AAD
Instruction assembleur 80x86 - Instruction AAS
Références
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 802
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 55.
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 71 à 72.
Dernière mise à jour : Lundi, le 1 septembre 2014