Retour à l'accueil | Contact : etienne"point"sauvage"at"gmail.com | Retour à la liste des instructions. |
ADD | signed or unsigned ADDADDitionne en signé ou non signé |
Additionne la valeur dans un registre ou un emplacement mémoire (premier opérande) et une valeur immédiate ou la valeur dans un registre ou un emplacement mémoire (second opérande), et stocke le résultat dans l'emplacement du premier opérande. L'instruction ne peut faire la somme de deux emplacements mémoire. L'instruction étend, en préservant le signe, une valeur immédiate à la taille du registre ou de l'emplacement mémoire de destination.
Cette instruction évalue le résultat pour les types signés (respectivement non signés) et met les drapeaux OF et CF pour indiquer une retenue dans un résultat signé (respectivement non signé). Elle positionne le drapeau SF pour indiquer le signe d'un résultat signé.
Les formes de l'instruction ADD qui écrivent en mémoire supportent le préfixe LOCK. Pour des détails à propos du préfixe LOCK, consulter "LOCK Prefix" page 10.
Mnémonique | Opcode | Description |
ADD AL, imm8 | 04 ib | Ajoute imm8 à AL. |
ADD AX, imm16 | 05 iw | Ajoute imm16 à AX. |
ADD EAX, imm32 | 05 id | Ajoute imm32 à EAX. |
ADD RAX, imm32 | 05 id | Ajoute sign-extended imm32 à RAX. |
ADD reg/mem8, imm8 | 80 /0 ib | Ajoute imm8 à reg/mem8. |
ADD reg/mem16, imm16 | 81 /0 iw | Ajoute imm16 à reg/mem16. |
ADD reg/mem32, imm32 | 81 /0 id | Ajoute imm32 à reg/mem32. |
ADD reg/mem64, imm32 | 81 /0 id | Ajoute sign-extended imm32 à reg/mem64. |
ADD reg/mem16, imm8 | 83 /0 ib | Ajoute sign-extended imm8 à reg/mem16. |
ADD reg/mem32, imm8 | 83 /0 ib | Ajoute sign-extended imm8 à reg/mem32. |
ADD reg/mem64, imm8 | 83 /0 ib | Ajoute sign-extended imm8 à reg/mem64. |
ADD reg/mem8, reg8 | 00 /r | Ajoute reg8 à reg/mem8. |
ADD reg/mem16, reg16 | 01 /r | Ajoute reg16 à reg/mem16. |
ADD reg/mem32, reg32 | 01 /r | Ajoute reg32 à reg/mem32. |
ADD reg/mem64, reg64 | 01 /r | Ajoute reg64 à reg/mem64. |
ADD reg8, reg/mem8 | 02 /r | Ajoute reg/mem8 à reg8. |
ADD reg16, reg/mem16 | 03 /r | Ajoute reg/mem16 à reg16. |
ADD reg32, reg/mem32 | 03 /r | Ajoute reg/mem32 à reg32. |
ADD reg64, reg/mem64 | 03 /r | Ajoute reg/mem64 à reg64. |
ADC, SBB, SUB
ID | VIP | VIF | AC | VM | RF | NT | IOPL | OF | DF | IF | TF | SF | ZF | AF | PF | CF |
M | M | M | M | M | M | |||||||||||
21 | 20 | 19 | 18 | 17 | 16 | 14 | 13-12 | 11 | 10 | 9 | 8 | 7 | 6 | 4 | 2 | 0 |
Note : les bits 31-22, 15, 5, 3 et 1 sont réservés. Un drapeau mis à 1 ou nettoyé à 0 est M (modifié). Les drapeaux non affectés sont blancs. Les drapeaux non définis sont U. |
Exception | Réel | 8086 virtuel | Protégé | Cause de l'exception |
Pile, #SS | X | X | X | Une adresse mémoire a dépassé la limite du segment de pile ou était non canonique. |
Protection générale, #GP | X | X | X | Une adresse mémoire a dépassé la limite d'un segment de données ou était non canonique. | X | L'opérande de destination était dans un segment non inscriptible. | X | Un segment de données NULL a été utilisé pour référencer la mémoire. |
Faute de page, #PF | X | X | Une faute de page a résulté de l'exécution de l'instruction. | |
Vérification d'alignement, #AC | X | X | Une référence mémoire non alignée a été faite pendant que la vérification d'alignement était active. |
Source : AMD x86-64 Architecture PROGRAMMER'S MANUAL Volume 3 General-Purpose and System Instructions, 24594 Rev. 3.02 August 2002.
Retour à l'accueil | Contact : etienne"point"sauvage"at"gmail.com | Retour à la liste des instructions |