Assembleur 80x86 | CMOV |
---|---|
INTEL P6+ | Conditionnel MOVe |
Syntaxe
CMOVcc registre, valeur |
Paramètres
Nom | Description |
---|---|
cc | Ce paramètre permet d'indiquer le code de condition : O, NO, B, C,... |
registre | Ce paramètre permet d'indiquer le registre à affecter. |
valeur | Ce paramètre permet d'indiquer la valeur à copier dans le registre. |
Description
C'est l'équivalent d'un MOV conditionnel. Cette instruction copie des données d'une source (valeur) à une destination (registre) à la condition que la condition (cc) demandé soit remplie.
Algorithme
MODULE CMOV(cc,registre,valeur) SI cc ALORS registre ← valeur FIN SI |
Remarque
- Avant de lancer cette instruction, il est important que vous sachiez que cette instruction n'est pas supporté par tous les Pentium Pro, l'instruction CPUID retourne un indicateur confirmant ou niant que cette instruction est supportée.
Mnémonique
Instruction | Opcode | Description |
---|---|---|
CMOVO reg16, reg/mem16 | 0Fh 40h /r | Copie si débordement (OF = 1) |
CMOVO reg32, reg/mem32 | 0Fh 40h /r | Copie si débordement (OF = 1) |
CMOVO reg64, reg/mem64 | 0Fh 40h /r | Copie si débordement (OF = 1) |
CMOVNO reg16, reg/mem16 | 0Fh 41h /r | Copie si pas de débordement (OF = 0) |
CMOVNO reg32, reg/mem32 | 0Fh 41h /r | Copie si pas de débordement (OF = 0) |
CMOVNO reg64, reg/mem64 | 0Fh 41h /r | Copie si pas de débordement (OF = 0) |
CMOVB reg16, reg/mem16 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVB reg32, reg/mem32 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVB reg64, reg/mem64 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVC reg16, reg/mem16 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVC reg32, reg/mem32 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVC reg64, reg/mem64 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVNAE reg16, reg/mem16 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVNAE reg32, reg/mem32 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVNAE reg64, reg/mem64 | 0Fh 42h /r | Copie si retenu (CF = 1) |
CMOVNB reg16,reg/mem16 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVNB reg32,reg/mem32 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVNB reg64,reg/mem64 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVNC reg16,reg/mem16 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVNC reg32,reg/mem32 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVNC reg64,reg/mem64 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVAE reg16, reg/mem16 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVAE reg32, reg/mem32 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVAE reg64, reg/mem64 | 0Fh 43h /r | Copie si pas retenu (CF = 0) |
CMOVZ reg16, reg/mem16 | 0Fh 44h /r | Copie si drapeau du zéro (ZF = 1) |
CMOVZ reg32, reg/mem32 | 0Fh 44h /r | Copie si drapeau du zéro (ZF = 1) |
CMOVZ reg64, reg/mem64 | 0Fh 44h /r | Copie si drapeau du zéro (ZF = 1) |
CMOVE reg16, reg/mem16 | 0Fh 44h /r | Copie si drapeau du zéro (ZF = 1) |
CMOVE reg32, reg/mem32 | 0Fh 44h /r | Copie si drapeau du zéro (ZF = 1) |
CMOVE reg64, reg/mem64 | 0Fh 44h /r | Copie si drapeau du zéro (ZF = 1) |
CMOVNZ reg16, reg/mem16 | 0Fh 45h /r | Copie si drapeau de pas de zéro (ZF = 0) |
CMOVNZ reg32, reg/mem32 | 0Fh 45h /r | Copie si drapeau de pas de zéro (ZF = 0) |
CMOVNZ reg64, reg/mem64 | 0Fh 45h /r | Copie si drapeau de pas de zéro (ZF = 0) |
CMOVNE reg16, reg/mem16 | 0Fh 45h /r | Copie si drapeau de pas de zéro (ZF = 0) |
CMOVNE reg32, reg/mem32 | 0Fh 45h /r | Copie si drapeau de pas de zéro (ZF = 0) |
CMOVNE reg64, reg/mem64 | 0Fh 45h /r | Copie si drapeau de pas de zéro (ZF = 0) |
CMOVBE reg16, reg/mem16 | 0Fh 46h /r | Copie si drapeau de zéro (ZF = 1) ou drapeau de retenu (CF = 1) |
CMOVBE reg32, reg/mem32 | 0Fh 46h /r | Copie si drapeau de zéro (ZF = 1) ou drapeau de retenu (CF = 1) |
CMOVBE reg64, reg/mem64 | 0Fh 46h /r | Copie si drapeau de zéro (ZF = 1) ou drapeau de retenu (CF = 1) |
CMOVNA reg16, reg/mem16 | 0Fh 46h /r | Copie si drapeau de zéro (ZF = 1) ou drapeau de retenu (CF = 1) |
CMOVNA reg32, reg/mem32 | 0Fh 46h /r | Copie si drapeau de zéro (ZF = 1) ou drapeau de retenu (CF = 1) |
CMOVNA reg64, reg/mem64 | 0Fh 46h /r | Copie si drapeau de zéro (ZF = 1) ou drapeau de retenu (CF = 1) |
CMOVNBE reg16, reg/mem16 | 0Fh 47h /r | Copie si drapeau de pas de zéro (ZF = 0) et drapeau de pas de retenu (CF = 0) |
CMOVNBE reg32, reg/mem32 | 0Fh 47h /r | Copie si drapeau de pas de zéro (ZF = 0) et drapeau de pas de retenu (CF = 0) |
CMOVNBE reg64, reg/mem64 | 0Fh 47h /r | Copie si drapeau de pas de zéro (ZF = 0) et drapeau de pas de retenu (CF = 0) |
CMOVA reg16, reg/mem16 | 0Fh 47h /r | Copie si drapeau de pas de zéro (ZF = 0) et drapeau de pas de retenu (CF = 0) |
CMOVA reg32, reg/mem32 | 0Fh 47h /r | Copie si drapeau de pas de zéro (ZF = 0) et drapeau de pas de retenu (CF = 0) |
CMOVA reg64, reg/mem64 | 0Fh 47h /r | Copie si drapeau de pas de zéro (ZF = 0) et drapeau de pas de retenu (CF = 0) |
CMOVS reg16, reg/mem16 | 0Fh 48h /r | Copie si drapeau de signe (SF = 1) |
CMOVS reg32, reg/mem32 | 0Fh 48h /r | Copie si drapeau de signe (SF = 1) |
CMOVS reg64, reg/mem64 | 0Fh 48h /r | Copie si drapeau de signe (SF = 1) |
CMOVNS reg16, reg/mem16 | 0Fh 49h /r | Copie si drapeau de pas de signe (SF = 0) |
CMOVNS reg32, reg/mem32 | 0Fh 49h /r | Copie si drapeau de pas de signe (SF = 0) |
CMOVNS reg64, reg/mem64 | 0Fh 49h /r | Copie si drapeau de pas de signe (SF = 0) |
CMOVP reg16, reg/mem16 | 0Fh 4Ah /r | Copie si drapeau de parité (PF = 1) |
CMOVP reg32, reg/mem32 | 0Fh 4Ah /r | Copie si drapeau de parité (PF = 1) |
CMOVP reg64, reg/mem64 | 0Fh 4Ah /r | Copie si drapeau de parité (PF = 1) |
CMOVPE reg16, reg/mem16 | 0Fh 4Ah /r | Copie si drapeau de parité (PF = 1) |
CMOVPE reg32, reg/mem32 | 0Fh 4Ah /r | Copie si drapeau de parité (PF = 1) |
CMOVPE reg64, reg/mem64 | 0Fh 4Ah /r | Copie si drapeau de parité (PF = 1) |
CMOVNP reg16, reg/mem16 | 0Fh 4Bh /r | Copie si drapeau de pas de parité (PF = 0) |
CMOVNP reg32, reg/mem32 | 0Fh 4Bh /r | Copie si drapeau de pas de parité (PF = 0) |
CMOVNP reg64, reg/mem64 | 0Fh 4Bh /r | Copie si drapeau de pas de parité (PF = 0) |
CMOVPO reg16, reg/mem16 | 0Fh 4Bh /r | Copie si drapeau de pas de parité (PF = 0) |
CMOVPO reg32, reg/mem32 | 0Fh 4Bh /r | Copie si drapeau de pas de parité (PF = 0) |
CMOVPO reg64, reg/mem64 | 0Fh 4Bh /r | Copie si drapeau de pas de parité (PF = 0) |
CMOVL reg16, reg/mem16 | 0Fh 4Ch /r | Copie si SF <> OF |
CMOVL reg32, reg/mem32 | 0Fh 4Ch /r | Copie si SF <> OF |
CMOVL reg64, reg/mem64 | 0Fh 4Ch /r | Copie si SF <> OF |
CMOVNGE reg16, reg/mem16 | 0Fh 4Ch /r | Copie si SF <> OF |
CMOVNGE reg32, reg/mem32 | 0Fh 4Ch /r | Copie si SF <> OF |
CMOVNGE reg64, reg/mem64 | 0Fh 4Ch /r | Copie si SF <> OF |
CMOVNL reg16, reg/mem16 | 0Fh 4Dh /r | Copie si SF = OF |
CMOVNL reg32, reg/mem32 | 0Fh 4Dh /r | Copie si SF = OF |
CMOVNL reg64, reg/mem64 | 0Fh 4Dh /r | Copie si SF = OF |
CMOVGE reg16, reg/mem16 | 0Fh 4Dh /r | Copie si SF = OF |
CMOVGE reg32, reg/mem32 | 0Fh 4Dh /r | Copie si SF = OF |
CMOVGE reg64, reg/mem64 | 0Fh 4Dh /r | Copie si SF = OF |
CMOVLE reg16, reg/mem16 | 0Fh 4Eh /r | Copie si ZF = 1 ou SF <> OF |
CMOVLE reg32, reg/mem32 | 0Fh 4Eh /r | Copie si ZF = 1 ou SF <> OF |
CMOVLE reg64, reg/mem64 | 0Fh 4Eh /r | Copie si ZF = 1 ou SF <> OF |
CMOVNG reg16, reg/mem16 | 0Fh 4Eh /r | Copie si ZF = 1 ou SF <> OF |
CMOVNG reg32, reg/mem32 | 0Fh 4Eh /r | Copie si ZF = 1 ou SF <> OF |
CMOVNG reg64, reg/mem64 | 0Fh 4Eh /r | Copie si ZF = 1 ou SF <> OF |
CMOVNLE reg16, reg/mem16 | 0Fh 4Fh /r | Copie si ZF = 0 et SF = OF |
CMOVNLE reg32, reg/mem32 | 0Fh 4Fh /r | Copie si ZF = 0 et SF = OF |
CMOVNLE reg64, reg/mem64 | 0Fh 4Fh /r | Copie si ZF = 0 et SF = OF |
CMOVG reg16, reg/mem16 | 0Fh 4Fh /r | Copie si ZF = 0 et SF = OF |
CMOVG reg32, reg/mem32 | 0Fh 4Fh /r | Copie si ZF = 0 et SF = OF |
CMOVG reg64, reg/mem64 | 0Fh 4Fh /r | Copie si ZF = 0 et SF = OF |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#UD(Opcode invalide) | X | X | X | Cette instruction n'est pas supporté. C'est instruction est supporté si l'indicateur de bit 15 du registre EDX de l'instruction CPUID avec la fonction 0000_0001h ou 8000_0001h. |
#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 | 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 MOV
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 199 à 204.
Dernière mise à jour : Mercredi, le 17 septembre 2014