Assembleur 80x86 | ADCX |
---|---|
INTEL 64 | Unsigned Integer Addition of Two Operands with Carry Flag |
Syntaxe
ADCX Destination, Source |
Paramètres
Nom | Description |
---|---|
Destination | Ce paramètre permet d'indiquer l'opérande recevant le résultat |
Source | Ce paramètre permet d'indiquer l'opérande à ajouter au résultat |
Description
Cette instruction permet d'effectuer une addition de l'opérande de destination (première opérande), l'opérande source (deuxième opérande) et de drapeau de retenue (CF) et entrepose le résultat dans l'opérande de destination. L'opérande de destination est un registre à usage général, tandis que l'opérande source peut être un registre à usage général ou un emplacement de mémoire. L'état du drapeau de retenue (CF), peut représenter une retenue d'une addition précédente. L'instruction fixe CF avec la retenue généré par l'ajout d'une addition naturel des opérandes.
L'instruction ADCX est exécutée dans le contexte de l'addition multi-précision, où vous ajoutez une série d'opérande avec une chaîne de retenue. Au début d'une chaîne d'ajouts, vous devez vous assurez que le drapeau de retenue CF est dans un état initial désiré. Souvent, cet état initial doit être à 0, lequel peut être obtenu avec une instruction CF à 0 (comme par exemple avec l'instruction XOR).
Remarques
- Cette instruction est supportée en mode réel et en mode virtuel 8086 et la taille de l'opérande est toujours 32 bits s'il n'est pas en mode 64 bits.
- En mode 64 bits, la taille par défaut de l'opérande est en 32 bits, toutefois, REX dans le format REX.R permet d'accéder à des registres supplémentaires (R8 à R15). L'utilisation du préfixe REX sous le format REX.W favorise une opération en 64 bits.
- L'instruction ADCX peut aussi bien s'exécuter à l'intérieur ou à l'extérieur d'une région de transaction.
- L'instruction ADCX définit le drapeau OF différemment des instructions ADD ou ADC.
Algorithme
MODULE ADCX(dest,source) SI taille de l'opérande est 64 bits ALORS CF:dest(63..0) ← dest(63..0) + source(63..0) + CF SINON CF:dest(31..0) ← dest(31..0) + source(31..0) + CF FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
ADCX r32, r/m32 | 66 0F 38 F6 /r | Cette instruction permet d'effectuer une addition de l'opérande de destination (première opérande), l'opérande source (deuxième opérande) et de drapeau de retenue (CF) et entrepose le résultat dans l'opérande de destination. |
ADCX r64, r/m64 | 66 REX.w 0F 38 F6 /r | Cette instruction permet d'effectuer une addition de l'opérande de destination (première opérande), l'opérande source (deuxième opérande) et de drapeau de retenue (CF) et entrepose le résultat dans l'opérande de destination. |
Affectations des registres de drapeaux
Cette instruction affectera les bits du registre de drapeaux de la façon suivante :
Drapeau | Description |
---|---|
AF | Ce bit n'est pas modifié. |
CF | Ce bit vaut 1 si une retenue décimale est provoquée par le résultat de cette opération autrement il vaudra 0. | OF | Ce bit n'est pas modifié. | PF | Ce bit n'est pas modifié. | SF | Ce bit n'est pas modifié. | ZF | Ce bit n'est pas modifié. |
Exceptions
Message | Description |
---|---|
#UD | Si le bit de préfixe LOCK est utilisé. |
#UD | Si CPUID.(EAX=07H, ECX=0H):EBX.ADX[bit 19] = 0. |
#SS(0) | Si l'adresse du segment SS est illégale. |
#GP(0) | Si l'opérande de mémoire d'adresse mémoire est illégale pour les segments CS, DS, ES, FS ou GS. |
#PF(fault-code) | Pour une faut de page. |
#AC(0) | Si la vérification de l'alignement est actif et qu'une référence mémoire est désaligné dans le niveau de privilège 3 courant. |