Assembleur 80x86 | SHRD |
---|---|
INTEL 80386+ | Shift Right Double Precision |
Syntaxe
SHRD operande16, operande16, immediat8 |
SHRD operande16, operande16, CL |
SHRD operande32, operande32, immediat8 |
SHRD operande32, operande32, CL |
Description
Cette instruction permet d'effectuer une rotation des bits d'un double mot vers la droite 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, COUNT - 1) BOUCLE POUR i ← 0 JUSQU'A SIZE - 1 - COUNT FAIRE BIT(DEST, i) ← BIT(DEST, i - COUNT) FIN BOUCLE POUR BOUCLE POUR i ← SIZE - COUNT JUSQU'A SIZE - 1 FAIRE BIT(DEST, i) ← BIT(inBits,i + COUNT - SIZE) FIN BOUCLE POUR FIN SI FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
SHRD reg/mem16, reg16, imm8 | 0Fh ACh /r ib | Effectue un décalage de bits vers la droite 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. |
SHRD reg/mem16, reg16, CL | 0Fh ADh /r | Effectue un décalage de bits vers la droite 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. |
SHRD reg/mem32, reg32, imm8 | 0Fh ACh /r ib | Effectue un décalage de bits vers la droite 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. |
SHRD reg/mem32, reg32, CL | 0Fh ADh /r | Effectue un décalage de bits vers la droite 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. |
SHRD reg/mem64, reg64, imm8 | 0Fh ACh /r ib | Effectue un décalage de bits vers la droite 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. |
SHRD reg/mem64, reg64, CL | 0Fh ADh /r | Effectue un décalage de bits vers la droite 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 SHLD
Instruction assembleur 80x86 - Instruction SHR
Instruction assembleur 80x86 - Instruction SHL
Instruction assembleur 80x86 - Instruction SAR
Instruction assembleur 80x86 - Instruction SAL
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 430 à 433.
Dernière mise à jour : Lundi, le 8 septembre 2014