Accueil des Chevaliers de Malte - Développeur Notes légal des Chevaliers de Malte/Développeur Flux RSS des nouvelles du site Les Chevaliers de Malte/Développeur - Assembleur et Pascal - Instruction assembleur 80x86 - Instruction MOVS Section du logiciel DOS «MonsterBook» des Chevaliers de Malte/Développeur Inventaire de la bibliothèque des Chevaliers de Malte/Développeur Entrée administrateur


Assembleur 80x86 MOVS
INTEL 8088+ MOVe String


Syntaxe

MOVS opérandecible,opérandesource


Description

Cette instruction permet de copier un élément de l'adresse DS:SI dans l'adresse ES:DI et incrémente/décrémente les registres DI et SI en fonction de la taille de l'opérande source et de l'état du drapeau de direction.


Algorithme

opérandecibleopérandesource
SI opérande est un octet ALORS
   SI DF = 0 ALORS
      (E)SI ← (E)SI + 1
      (E)DI ← (E)DI + 1
   SINON
      (E)SI ← (E)SI - 1
      (E)DI ← (E)DI - 1
   FIN SI
SINON SI opérande est un mot ALORS
   SI DF = 0 ALORS
      (E)SI ← (E)SI + 2
      (E)DI ← (E)DI + 2
   SINON
      (E)SI ← (E)SI - 2
      (E)DI ← (E)DI - 2
   FIN SI
SINON SI opérande est un double mot ALORS
   SI DF = 0 ALORS
      (E)SI ← (E)SI + 4
      (E)DI ← (E)DI + 4
   SINON
      (E)SI ← (E)SI - 4
      (E)DI ← (E)DI - 4
   FIN SI
SINON
   SI DF = 0 ALORS
      (E)SI ← (E)SI + 8
      (E)DI ← (E)DI + 8
   SINON
      (E)SI ← (E)SI - 8
      (E)DI ← (E)DI - 8
   FIN SI
FIN SI


Mnémonique

Instruction Opcode Description
MOVS mem8, mem8 A4h Copie l'octet de DS:(R)SI à ES:(R)DI, et alors incrémente ou décrément le registre (R)SI et (R)DI.
MOVS mem16, mem16 A5h Copie le mot de DS:(R)SI à ES:(R)DI, et alors incrémente ou décrément le registre (R)SI et (R)DI.
MOVS mem32, mem32 A5h Copie le double mot de DS:(R)SI à ES:(R)DI, et alors incrémente ou décrément le registre (R)SI et (R)DI.
MOVS mem64, mem64 A5h Copie le double mot de DS:(R)SI à ES:(R)DI, et alors incrémente ou décrément le registre (R)SI et (R)DI.


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 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 MOV
Instruction assembleur 80x86 - Instruction LODS
Instruction assembleur 80x86 - Instruction STOS


Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 821
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 168.
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 792 à 796.

Dernière mise à jour: Lundi, le 28 décembre 2009