Section courante

A propos

Section administrative du site

Assembleur 80x86

XADD

INTEL 80486+, x86-64 eXchange ADDition

Syntaxe

XADD dest, source

Paramètres

Nom Description
dest 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 et recevant le résultat original

Description

Cette instruction permet d'échanger le premier opérande avec le deuxième opérande, et ensuite effectue la somme des valeurs dans le première opérande.

Remarques

Algorithme

MODULE XADD(dest, source)
   Temporarydest
   destdest + source
   sourceTemporary

Mnémonique

Instruction Opcode Description
XADD reg/mem8, reg8 0Fh C0h /r Echange le contenu d'un registre 8 bits avec le contenu d'une opérande mémoire ou registre 8 bits et charge la somme dans la destination.
XADD reg/mem16, reg16 0Fh C1h /r Echange le contenu d'un registre 16 bits avec le contenu d'une opérande mémoire ou registre 16 bits et charge la somme dans la destination.
XADD reg/mem32, reg32 0Fh C1h /r Echange le contenu d'un registre 32 bits avec le contenu d'une opérande mémoire ou registre 32 bits et charge la somme dans la destination.
XADD reg/mem64, reg64 0Fh C1h /r Echange le contenu d'un registre 64 bits avec le contenu d'une opérande mémoire ou registre 64 bits et charge la somme dans la destination.

Cycles d'horloge

Opérande Cycle d'horloge Taille en octets
8086 80286 80386 80486
reg,reg - - - 3 2
mem,reg - - - 4 2 à 4

Exceptions

Message Mode réel Virtuel 8086 Mode protégé Description
#SS(Pile) 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
#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é

Exemples

L'exemple suivant permet d'échanger le registre DL avec AH et d'effectuer une addition :

  1. XADD DL,AH

L'exemple suivant permet d'échanger l'octet de l'emplacement mémoire avec AL et d'effectuer une addition :

  1. XADD [EDX+112],AL

L'exemple suivant permet d'échanger le registre AX avec DX et d'effectuer une addition :

  1. XADD AX,DX

L'exemple suivant permet d'échanger un mot de l'emplacement mémoire avec DX et d'effectuer une addition :

  1. XADD [EAX+10],DX

L'exemple suivant permet d'échanger le registre EAX avec EDX et d'effectuer une addition :

  1. XADD EDX,EAX

L'exemple suivant permet d'échanger le registre EDI avec l'adresse indiquer mémoire ESI et d'effectuer une addition :

  1. XADD [ESI],EDI

Voir également

Instruction assembleur 80x86 - Instruction BSWAP
Instruction assembleur 80x86 - Instruction XCHG

Références

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 535 à 537.

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