Retour à l'accueil | Contact : etienne"point"sauvage"at"gmail.com | Retour à la liste des instructions. |
ADC | ADd with CarryADditionne aveC retenue |
Additionne le drapeau de retenue (CF), 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. Le drapeau CF indique une retenue provenant d'une précédente addition. 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é.
Utilisez l'instruction ADC après une instruction ADD comme partie d'une addition multi-octets ou multi-mots.
Les formes de l'instruction ADC 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 |
ADC AL, imm8 | 14 ib | Ajoute imm8 à AL + CF. |
ADC AX, imm16 | 15 iw | Ajoute imm16 à AX + CF. |
ADC EAX, imm32 | 15 id | Ajoute imm32 à EAX + CF. |
ADC RAX, imm32 | 15 id | Ajoute sign-extended imm32 à RAX + CF. |
ADC reg/mem8, imm8 | 80 /2 ib | Ajoute imm8 à reg/mem8 + CF. |
ADC reg/mem16, imm16 | 81 /2 iw | Ajoute imm16 à reg/mem16 + CF. |
ADC reg/mem32, imm32 | 81 /2 id | Ajoute imm32 à reg/mem32 + CF. |
ADC reg/mem64, imm32 | 81 /2 id | Ajoute sign-extended imm32 à reg/mem64 + CF. |
ADC reg/mem16, imm8 | 83 /2 ib | Ajoute sign-extended imm8 à reg/mem16 + CF. |
ADC reg/mem32, imm8 | 83 /2 ib | Ajoute sign-extended imm8 à reg/mem32 + CF. |
ADC reg/mem64, imm8 | 83 /2 ib | Ajoute sign-extended imm8 à reg/mem64 + CF. |
ADC reg/mem8, reg8 | 10 /r | Ajoute reg8 à reg/mem8 + CF. |
ADC reg/mem16, reg16 | 11 /r | Ajoute reg16 à reg/mem16 + CF. |
ADC reg/mem32, reg32 | 11 /r | Ajoute reg32 à reg/mem32 + CF. |
ADC reg/mem64, reg64 | 11 /r | Ajoute reg64 à reg/mem64 + CF. |
ADC reg8, reg/mem8 | 12 /r | Ajoute reg/mem8 à reg8 + CF. |
ADC reg16, reg/mem16 | 13 /r | Ajoute reg/mem16 à reg16 + CF. |
ADC reg32, reg/mem32 | 13 /r | Ajoute reg/mem32 à reg32 + CF. |
ADC reg64, reg/mem64 | 13 /r | Ajoute reg/mem64 à reg64 + CF. |
ADD, 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 netàyé à 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 dépasse la limite du segment de pile ou n'est pas canonique. |
Protection générale, #GP | X | X | X X X | Une adresse mémoire dépasse la limite d'un segment de données ou n'est pas canonique. L'opérande de destination était dans un segment non inscriptible. 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 résulte 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 |