Retour à l'accueil Contact : etienne"point"sauvage"at"gmail.com Retour à la liste des instructions.

ADC

ADd with Carry


ADditionne 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émoniqueOpcodeDescription
ADC AL, imm814 ibAjoute imm8 à AL + CF.
ADC AX, imm1615 iwAjoute imm16 à AX + CF.
ADC EAX, imm3215 idAjoute imm32 à EAX + CF.
ADC RAX, imm3215 idAjoute sign-extended imm32 à RAX + CF.
ADC reg/mem8, imm880 /2 ibAjoute imm8 à reg/mem8 + CF.
ADC reg/mem16, imm1681 /2 iwAjoute imm16 à reg/mem16 + CF.
ADC reg/mem32, imm3281 /2 idAjoute imm32 à reg/mem32 + CF.
ADC reg/mem64, imm3281 /2 idAjoute sign-extended imm32 à reg/mem64 + CF.
ADC reg/mem16, imm883 /2 ibAjoute sign-extended imm8 à reg/mem16 + CF.
ADC reg/mem32, imm883 /2 ibAjoute sign-extended imm8 à reg/mem32 + CF.
ADC reg/mem64, imm883 /2 ibAjoute sign-extended imm8 à reg/mem64 + CF.
ADC reg/mem8, reg810 /rAjoute reg8 à reg/mem8 + CF.
ADC reg/mem16, reg1611 /rAjoute reg16 à reg/mem16 + CF.
ADC reg/mem32, reg3211 /rAjoute reg32 à reg/mem32 + CF.
ADC reg/mem64, reg6411 /rAjoute reg64 à reg/mem64 + CF.
ADC reg8, reg/mem812 /rAjoute reg/mem8 à reg8 + CF.
ADC reg16, reg/mem1613 /rAjoute reg/mem16 à reg16 + CF.
ADC reg32, reg/mem3213 /rAjoute reg/mem32 à reg32 + CF.
ADC reg64, reg/mem6413 /rAjoute reg/mem64 à reg64 + CF.

Instructions apparentées

ADD, SBB, SUB

rFLAGS affectés

IDVIPVIFACVMRFNTIOPLOFDFIFTFSFZFAFPFCF
MMMMMM
2120191817161413-1211109876420
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.

Exceptions

ExceptionRéel8086
virtuel
ProtégéCause de l'exception
Pile, #SSXXXUne adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique.
Protection générale, #GPXXX
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, #PFXXUne faute de page résulte de l'exécution de l'instruction.
Vérification d'alignement, #ACXXUne 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