Section courante

A propos

Section administrative du site

Assembleur 80x86

CMPS

INTEL 8088+ Compare String

Syntaxe

CMPS destination,source

Paramètres

Nom Description
destination Ce paramètre permet d'indiquer l'adresse à utiliser pour faire la comparaison.
source Ce paramètre permet d'indiquer l'adresse supplémentaire à utiliser pour faire la comparaison.

Description

Cette instruction permet d'effectuer la comparaison d'un octet, d'un mot, double mot ou du quadruple mot spécifié avec l'opérande source et destination spécifié et fixe l'état des drapeaux du registres EFLAGS en fonction des résultats de la comparaison.

Algorithme

MODULE CMPS(destination,source)
   Fixe les drapeaux d'états de (destination = source)
   SI (comparaison d'octet) ALORS
      SI DF = 0 ALORS
         (E)SI ← (E)SI + 1
         (E)DI ← (E)DI + 1
      SINON
         (E)SI ← (E)SI - 1
         (E)DI ← (E)DI - 1
      FIN SI
   SINON SI (comparison d'un mot) ALORS
      SI DF = 0 ALORS
         (E)SI ← (E)SI + 2
         (E)DI ← (E)DI + 2
      SINON
         (E)SI ← (E)SI - 2
         (E)DI ← (E)DI - 2
      FIN SI
   SINON SI (comparaison d'un double mot) ALORS
      SI DF = 0 ALORS
         (E)SI ← (E)SI + 4
         (E)DI ← (E)DI + 4
      SINON
         (E)SI ← (E)SI - 4
         (E)DI ← (E)DI - 4
      FIN SI
   SINON SI (comparaison d'un quadruple mot) ALORS
      SI DF = 0 ALORS
         (E)SI ← (E)SI + 8
         (E)DI ← (E)DI + 8
      SINON
         (E)SI ← (E)SI - 8
         (E)DI ← (E)DI - 8
      FIN SI
   FIN SI

Mnémonique

Instruction Opcode Description
CMPS mem8, mem8 A6h Compare l'octet à l'adresse DS:(R)SI avec l'octet à l'adresses ES:(R)DI et incrémente ou décrémente les registres (R)SI et (R)DI
CMPS mem16, mem16 A7h Compare le mot à l'adresse DS:(R)SI avec le mot à l'adresses ES:(R)DI et incrémente ou décrémente les registres (R)SI et (R)DI
CMPS mem32, mem32 A7h Compare le double mot à l'adresse DS:(R)SI avec le double mot à l'adresses ES:(R)DI et incrémente ou décrémente les registres (R)SI et (R)DI
CMPS mem64, mem64 A7h Compare le quadruple mot à l'adresse DS:(R)SI avec le quadruple mot à l'adresses ES:(R)DI et incrémente ou décrémente les registres (R)SI et (R)DI

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 comparer deux chaînes de caractères en mode réel en utilisant l'instruction CMPS :

  1. LDS SI,DWord Ptr String1
  2. LES DI,DWord Ptr String2
  3. MOVZX CX,AL
  4. CLD
  5. REPE CMPS String1,String2

Voir également

Instruction assembleur 80x86 - Instruction CMP
Instruction assembleur 80x86 - Instruction SCAS

Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 808
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 97.
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 219 à 224.

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