Section courante

A propos

Section administrative du site

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

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