Section courante

A propos

Section administrative du site

Assembleur 80x86

CMP

INTEL 8088+ Compare two operands

Syntaxe

CMP Opérande Cible, Opérande Source

Paramètres

Nom Description
Opérande Cible Ce paramètre permet d'indiquer l'opérande de base sur lequel l'opération de comparaison est effectuée.
Opérande Source Ce paramètre permet d'indiquer l'opérande supplémentaire avec laquelle la comparaison est effectué

Description

Cette instruction offre la possibilité essentielle de comparer 2 registres ou emplacements de mémoire. Le résultat de la comparaison est indiqué par les indicateurs (registre drapeau du microprocesseur).

Algorithme

MODULE CMP(opérande1,opérande2)
   Drapeauopérande1 = opérande2

Mnémonique

Instruction Opcode Description
CMP AL, imm8 3Ch ib Compare une valeur 8 bits immédiate avec le contenu du registre AL.
CMP AX, imm16 3Dh iw Compare une valeur 16 bits immédiate avec le contenu du registre AX.
CMP EAX, imm32 3Dh iw Compare une valeur 32 bits immédiate avec le contenu du registre EAX.
CMP RAX, imm32 3Dh id Compare une valeur 32 bits immédiate avec le contenu du registre RAX.
CMP reg/mem8, imm8 80h /7 ib Compare une valeur 8 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 8 bits.
CMP reg/mem16, imm16 81h /7 iw Compare une valeur 16 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 16 bits.
CMP reg/mem32, imm32 81h /7 id Compare une valeur 32 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 32 bits.
CMP reg/mem64, imm32 81h /7 id Compare une valeur 32 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 64 bits.
CMP reg/mem16, imm8 83h /7 ib Compare une valeur 8 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 16 bits.
CMP reg/mem32, imm8 83h /7 ib Compare une valeur 8 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 32 bits.
CMP reg/mem64, imm8 83h /7 ib Compare une valeur 8 bits immédiate avec le contenu d'une opérande mémoire ou d'un registre 64 bits.
CMP reg/mem8, reg8 38h /r Compare le contenu d'une opérande mémoire ou d'un registre 8 bits avec un registre 8 bits.
CMP reg/mem16, reg16 39h /r Compare le contenu d'une opérande mémoire ou d'un registre 16 bits avec un registre 16 bits.
CMP reg/mem32, reg32 39h /r Compare le contenu d'une opérande mémoire ou d'un registre 32 bits avec un registre 32 bits.
CMP reg/mem64, reg64 39h /r Compare le contenu d'une opérande mémoire ou d'un registre 64 bits avec un registre 64 bits.
CMP reg8, reg/mem8 39h /r Compare le contenu d'une opérande mémoire ou d'un registre 8 bits avec un registre 8 bits.
CMP reg16, reg/mem16 3Bh /r Compare le contenu d'une opérande mémoire ou d'un registre 16 bits avec un registre 16 bits.
CMP reg32, reg/mem32 3Bh /r Compare le contenu d'une opérande mémoire ou d'un registre 32 bits avec un registre 32 bits.
CMP reg64, reg/mem64 3Bh /r Compare le contenu d'une opérande mémoire ou d'un registre 64 bits avec un registre 64 bits.

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 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é

Exemple

L'exemple suivant permet de retourner 1 si le caractère spécifié par la variable «Chr» est une lettre de l'alphabet (majuscule ou minucule) ou 0 s'il ne l'est pas :

  1. XOR AL,AL 
  2. MOV CL,Chr 
  3. AND CL,0DFh 
  4. CMP CL,'A' 
  5. JB @1 
  6. CMP CL,'Z' 
  7. JA @1 
  8. INC AL 
  9. @1:

Voir également

Instruction assembleur 80x86 - Instruction SUB
Instruction assembleur 80x86 - Instruction CMPS
Instruction assembleur 80x86 - Instruction SCAS

Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 808
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 403
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 94 à 96.
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 206 à 208.

Dernière mise à jour : Lundi, le 1 septembre 2014