Assembleur 80x86 | SHLD |
---|---|
INTEL 80386+ | Shift Left Double Precision |
Syntaxe
SHLD operande16, operande16, immediat8 |
SHLD operande16, operande16, CL |
SHLD operande32, operande32, immediat8 |
SHLD operande32, operande32, CL |
Description
Cette instruction permet d'effectuer une rotation des bits d'un double mot vers la gauche en réinsérant le bit dans l'indicateur de retenue (CF).
Algorithme
COUNT ← COUNT ∩ 1Fh SIZE ← taille de l'opérande SI COUNT = 0 ALORS pas d'opération SINON SI COUNT ≥ SIZE ALORS DEST est indéfinis CF, OF, SF, ZF, AF, PF sont indéfinis SINON CF ← BIT(DEST, SIZE - COUNT) BOUCLE POUR i ← SIZE - 1 JUSQU'A COUNT FAIRE BIT(DEST, i) ← BIT(DEST, i - COUNT) FIN BOUCLE POUR BOUCLE POUR i ← COUNT - 1 JUSQU'A 0 FAIRE BIT(DEST, i) ← BIT(inBits,i - COUNT + SIZE) FIN BOUCLE POUR FIN SI FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
SHLD reg/mem16, reg16, imm8 | 0Fh A4h /r ib | Effectue un décalage de bits vers la gauche de la combinaison d'une opérande registre ou mémoire 16 bits et d'un registre 16 bits du nombre de bits spécifié par la valeur immédiate de 8 bits. |
SHLD reg/mem16, reg16, CL | 0Fh A5h /r | Effectue un décalage de bits vers la gauche de la combinaison d'une opérande registre ou mémoire 16 bits et d'un registre 16 bits du nombre de bits spécifié par le registre CL. |
SHLD reg/mem32, reg32, imm8 | 0Fh A4h /r ib | Effectue un décalage de bits vers la gauche de la combinaison d'une opérande registre ou mémoire 32 bits et d'un registre 32 bits du nombre de bits spécifié par la valeur immédiate de 8 bits. |
SHLD reg/mem32, reg32, CL | 0Fh A5h /r | Effectue un décalage de bits vers la gauche de la combinaison d'une opérande registre ou mémoire 32 bits et d'un registre 32 bits du nombre de bits spécifié par le registre CL. |
SHLD reg/mem64, reg64, imm8 | 0Fh A4h /r ib | Effectue un décalage de bits vers la gauche de la combinaison d'une opérande registre ou mémoire 64 bits et d'un registre 64 bits du nombre de bits spécifié par la valeur immédiate de 8 bits. |
SHLD reg/mem64, reg64, CL | 0Fh A5h /r | Effectue un décalage de bits vers la gauche de la combinaison d'une opérande registre ou mémoire 64 bits et d'un registre 64 bits du nombre de bits spécifié par le registre CL. |
Cycles d'horloge
Opérande | Cycle d'horloge | Taille en octets | |||
---|---|---|---|---|---|
8086 | 80286 | 80386 | 80486 | ||
reg,reg,imm | - | - | 3 | 2 | 4 |
mem,reg,imm | - | - | 7 | 3 | 6 |
reg,reg,CL | - | - | 3 | 3 | 3 |
mem,reg,CL | - | - | 7 | 3 | 5 |
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 | L'opérande de destination n'est pas dans un segment non écrivable | |||
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 SHRD
Instruction assembleur 80x86 - Instruction SAL
Instruction assembleur 80x86 - Instruction SAR
Instruction assembleur 80x86 - Instruction SHR
Instruction assembleur 80x86 - Instruction SHL
Références
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 427 à 429.
Dernière mise à jour : Lundi, le 8 septembre 2014