Section courante

A propos

Section administrative du site

Assembleur 80x86

STOSB

INTEL 8088+ Store String Byte

Syntaxe

STOSB

Description

Cette instruction permet de copier le registre AL dans la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 1 en fonction de l'état du drapeau de direction.

Algorithme

chainecible ← AL
SI DF = 0 ALORS
   (E)DI ← (E)DI + 1
SINON
   (E)DI ← (E)DI - 1
FIN SI

Mnémonique

Instruction Opcode Description
STOSB AAh Entrepose le contenu du registre AL dans ES:(R)DI et incrémente ou décrémente (R)DI.

Exceptions

Message Mode réel Virtuel 8086 Mode protégé Description
#GP(Protection général) X X X Une adresse mémoire dépasse la limite du segment ES ou n'est pas canonique
    X L'opérande de destination n'est pas dans un segment ES non écrivable
    X Un segment 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é

Exemples

Cet exemple suivant, destiné au 8088 mais peu performante, permet de remplir avec la valeur de la variable «Valeur» un tampon d'octets spécifié par la variable «Tampon» de la longueur spécifié par la variable «Longueur» avec une cadence de 8 bits à la fois :

  1. CLD
  2. LES DI,Tampon
  3. MOV CX,Longueur
  4. MOV AL,Valeur
  5. REP STOSB

Cet exemple suivant, destiné au 8086 et très performante, permet de remplir avec la valeur de la variable «Valeur» un tampon d'octets spécifié par la variable «Tampon» de la longueur spécifié par la variable «Longueur» avec une cadence de 16 bits à la fois :

  1. CLD
  2. LES DI,Tampon
  3. MOV CX,Longueur
  4. MOV AL,Valeur
  5. MOV AH,AL
  6. SHR CX,1
  7. REP STOSW
  8. ADC CX,CX
  9. REP STOSB

Cet exemple suivant, destiné au 80386 ou plus, permet de remplir avec la valeur de la variable «Valeur» un tampon d'octets spécifié par la variable «Tampon» de la longueur spécifié par la variable «Longueur» avec une cadence de 32 bits à la fois :

  1. CLD
  2. LES DI,Tampon
  3. MOV CX,Longueur
  4. MOV AL,Valeur
  5. MOV AH,AL
  6.  ; EAX := AX:AX
  7. PUSH AX
  8. PUSH AX
  9. POP EAX
  10. MOV BX,CX
  11. AND BX,3
  12. SHR CX,2
  13. REP STOSD
  14. MOV CX,BX
  15. REP STOSB

Voir également

Instruction assembleur 80x86 - Instruction STOSD
Instruction assembleur 80x86 - Instruction STOSQ
Instruction assembleur 80x86 - Instruction STOSW

Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 837
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 418
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 237.
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 468 à 472.

Dernière mise à jour : Lundi, le 1 septembre 2014