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

ADD

signed or unsigned ADD


ADDitionne 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émoniqueOpcodeDescription
ADD AL, imm804 ibAjoute imm8 à AL.
ADD AX, imm1605 iwAjoute imm16 à AX.
ADD EAX, imm3205 idAjoute imm32 à EAX.
ADD RAX, imm3205 idAjoute sign-extended imm32 à RAX.
ADD reg/mem8, imm880 /0 ibAjoute imm8 à reg/mem8.
ADD reg/mem16, imm1681 /0 iwAjoute imm16 à reg/mem16.
ADD reg/mem32, imm3281 /0 idAjoute imm32 à reg/mem32.
ADD reg/mem64, imm3281 /0 idAjoute sign-extended imm32 à reg/mem64.
ADD reg/mem16, imm883 /0 ibAjoute sign-extended imm8 à reg/mem16.
ADD reg/mem32, imm883 /0 ibAjoute sign-extended imm8 à reg/mem32.
ADD reg/mem64, imm883 /0 ibAjoute sign-extended imm8 à reg/mem64.
ADD reg/mem8, reg800 /rAjoute reg8 à reg/mem8.
ADD reg/mem16, reg1601 /rAjoute reg16 à reg/mem16.
ADD reg/mem32, reg3201 /rAjoute reg32 à reg/mem32.
ADD reg/mem64, reg6401 /rAjoute reg64 à reg/mem64.
ADD reg8, reg/mem802 /rAjoute reg/mem8 à reg8.
ADD reg16, reg/mem1603 /rAjoute reg/mem16 à reg16.
ADD reg32, reg/mem3203 /rAjoute reg/mem32 à reg32.
ADD reg64, reg/mem6403 /rAjoute reg/mem64 à reg64.

Instructions apparentées

ADC, 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 nettoyé à 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 a dépassé la limite du segment de pile ou était non canonique.
Protection générale, #GPXXX
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, #PFXXUne faute de page a résulté 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