Assembleur 80x86 | MOVZX |
---|---|
INTEL 80386+ | Move with Zero-Extend |
Syntaxe
MOVZX operandedestination, operandesource |
Paramètres
Nom | Description |
---|---|
operandedestination | Ce paramètre permet d'indiquer l'opérande recevant la valeur. |
operandesource | Ce paramètre permet d'indiquer l'opérande contenant la valeur à copier. |
Description
Cette instruction permet de copier un registre de taille inférieur dans un registre de plus grande taille en remplissant les bits supplémentaires par des 0.
Remarques
- Il est souvent plus pratique d'utiliser cette instruction 2 instructions MOV avec une initialisation à 0 ou un MOV et un XOR, car cette instruction occupe moins d'espace de code machine que les deux instructions et utilise moins de cycle d'horloge.
- MOVSX vs MOVZX : La différence majeure entre MOVSX et MOVZX réside dans le fait que MOVSX est destiné à convertir des nombres entiers dans un plus grand format tandis que le MOVZX est destiné à convertir des nombres naturels en plus grand format.
- Si l'instruction n'est pas supporté par votre microprocesseur, on peut considérer que cette instruction pour des registres 32 bits :
- MOVZX EDX,AX
est équivalente à ceux-ci :
Algorithme
MODULE MOVZX(operandedestination, operandesource) SI taille de l'opérande source = 8 bits ALORS SI taille de l'opérande destinataire = 16 bits ALORS operandedestination(15..8) ← 00h operandedestination(7..0) ← operandesource SINON operandedestination(31..8) ← 000000h operandedestination(7..0) ← operandesource FIN SI SINON operandedestination(31..16) ← 0000h operandedestination(15..0) ← operandesource FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
MOVZX reg16, reg/mem8 | 0Fh B6h /r | Copie le contenu d'une opérande de registre ou d'un emplacement mémoire 8 bits dans un registre 16 bits avec un extension des zéros. |
MOVZX reg32, reg/mem8 | 0Fh B6h /r | Copie le contenu d'une opérande de registre ou d'un emplacement mémoire 8 bits dans un registre 32 bits avec un extension des zéros. |
MOVZX reg64, reg/mem8 | 0Fh B6h /r | Copie le contenu d'une opérande de registre ou d'un emplacement mémoire 8 bits dans un registre 64 bits avec un extension des zéros. |
MOVZX reg32, reg/mem16 | 0Fh B7h /r | Copie le contenu d'une opérande de registre ou d'un emplacement mémoire 16 bits dans un registre 32 bits avec un extension des zéros. |
MOVZX reg64, reg/mem16 | 0Fh B7h /r | Copie le contenu d'une opérande de registre ou d'un emplacement mémoire 16 bits dans un registre 64 bits avec un extension des zéros. |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#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 MOVSXD
Instruction assembleur 80x86 - Instruction MOVSX
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 818 à 819.
Dernière mise à jour : Jeudi, le 23 juillet 2015