Assembleur 80x86 | CMPSD |
---|---|
INTEL 80386+ | Compare String Double Word |
Syntaxe
CMPSD |
Description
Cette instruction permet d'effectuer la comparaison d'un double mot avec l'opérande source (DS:SI, DS:ESI ou DS:RSI) et destination (ES:DI, ES:EDI ou ES:RDI) et fixe l'état des drapeaux du registres FLAGS ou EFLAGS ou RFLAGS en fonction des résultats de la comparaison.
Algorithme
MODULE CMPSD SI 64 bits ALORS Fixe l'état des drapeaux de registres RFLAGS avec ([RDI] = [RSI]) SI DF = 0 ALORS RSI ← RSI + 4 RDI ← RDI + 4 SINON RSI ← RSI - 4 RDI ← RDI - 4 FIN SI SINON SI 32 bits ALORS Fixe l'état des drapeaux de registres EFLAGS avec ([EDI] = [ESI]) SI DF = 0 ALORS ESI ← ESI + 4 EDI ← EDI + 4 SINON ESI ← ESI - 4 EDI ← EDI - 4 FIN SI SINON Fixe l'état des drapeaux de registres FLAGS avec ([DI] = [SI]) SI DF = 0 ALORS SI ← SI + 4 DI ← DI + 4 SINON SI ← SI - 4 DI ← DI - 4 FIN SI FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
CMPSD | 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 |
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é |
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 809
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.