Section courante

A propos

Section administrative du site

Assembleur 80x86

CMPXCHG16B

x86-64+ Compare and Exchange Sixteen Bytes

Syntaxe

CMPXCHG16B dest

Paramètres

Nom Description
dest Ce paramètre permet d'indiquer le nombre de 128 bits à traiter.

Description

Cette instruction permet de comparer un nombre de 128 bits et les échanges si la condition est vrai.

Algorithme

MODULE CMPXCHG16B(dest)
   SI RDX:RAX = dest ALORS
      ZF ← 1
      dest ← RCX:RBX
   SINON
      ZF ← 0
      RDX:RAX ← dest
   FIN SI

Mnémonique

Instruction Opcode Description
CMPXCHG16B mem128 0Fh C7h /1 m128 Compare la paire de registres EDX:EAX à l'emplacement mémoire de 128 bits. S'ils sont égale, alors fixe le drapeau de zéro à 1 et copie RCX:RBX dans l'emplacement mémoire. Autrement, copie l'emplacement mémoire dans RDX:RAX et efface le drapeau de zéro.

Exceptions

Message Mode réel Virtuel 8086 Mode protégé Description
#UD(Opcode invalide) X X X L'instruction CMPXCHG16B n'est pas supporté, lequel est indiquer par le bit 13 du registre ECX de l'instruction CPUID, fonction 0000_0001h.
    X L'opérande est un registre.
#SS(Pile non-canonique) X X X Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique
#GP(Protection général) X X X Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique
    X L'opérande de destination n'est pas dans un segment non écrivable
    X Un segment de données nulle est utilisé comme référence mémoire
    X L'opérande mémoire pour l'instruction CMPXCHG16B n'est pas aligné avec une limite de 16 octets.
#PF(Faute de page)   X X Une faute de page résultat de l'exécution de l'instruction
#AC(Vérifie l'alignement)   X X Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé

Exemple

Cet exemple permet de tester la valeur d'un octet de deux adresses :

  1. MOVZX RBX,Byte Ptr [RAX]
  2. MOVZX RCX,Byte Ptr [RAX]
  3. MOVZX RDX,Byte Ptr [RAX]
  4. MOVZX RAX,Byte Ptr [RDI]
  5. CMPXCHG16B OWord Ptr [RAX]

Voir également

Instruction assembleur 80x86 - Instruction CMPXCHG

Références

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 236 à 238.

Dernière mise à jour : Samedi, le 2 août 2014