Section courante

A propos

Section administrative du site

Assembleur 80x86

LOOP

INTEL 8088+ Boucle

Syntaxe

LOOP étiquette

Paramètres

Nom Description
étiquette Ce paramètre permet d'indiquer l'emplacement ou doit se poursuivre l'exécution si la condition est satisfaisante.

Description

Cette instruction de boucle permet de décrémenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre CX ne vaut pas 0.

Algorithme

MODULE LOOP(Offset)
   CX ← CX - 1
   SI CX ≠ 0 ALORS
      IP ← IP + Offset
   FIN SI

Mnémonique

Instruction Opcode Description
LOOP rel8off E2h cb Décrémente (R)CX, si (R)CX ne vaut pas 0 alors effectuer un saut court.

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 de données ou n'est pas canonique

Exemple

Voici un exemple en Turbo Pascal 7 montrant une utilisation de cette instruction :

  1. Program AsmLoopSamples;
  2.  
  3. Const 
  4.  Source:Array[0..5]of Word = (256,1,257,2,258,3);
  5.  
  6. Var
  7.  Target:Array[0..5]of Byte;
  8.  I:Byte;
  9.  
  10. Procedure MoveWord2Byte(Const Source;Var Dest;Count:Word);Assembler;ASM
  11.  CLD
  12.  PUSH DS
  13.   LDS SI,Source
  14.   LES DI,Dest
  15.   MOV CX,Count
  16.   JCXZ @End
  17. @Count:
  18.   LODSW
  19.   STOSB
  20.   LOOP @Count
  21. @End:
  22.  POP DS
  23. END;
  24.  
  25. BEGIN
  26.  MoveWord2Byte(Source,Target,SizeOf(Target));
  27.  WriteLn('Après transformation : ');
  28.  For I:=0 to SizeOf(Target)-1 do Begin
  29.   Write(Target[I],',');
  30.  End;
  31.  WriteLn;
  32. END.

on obtiendra le résultat suivant :

Après transformation :
0,1,1,2,2,3,

Voir également

Instruction assembleur 80x86 - Instruction LOOPE
Instruction assembleur 80x86 - Instruction LOOPNE
Instruction assembleur 80x86 - Instruction LOOPNZ
Instruction assembleur 80x86 - Instruction LOOPZ

Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 819
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 410
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 151.
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 668 à 669.

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