Section courante

A propos

Section administrative du site

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