Section courante

A propos

Section administrative du site

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