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 :
- Program AsmLoopSamples;
-
- Const
- Source:Array[0..5]of Word = (256,1,257,2,258,3);
-
- Var
- Target:Array[0..5]of Byte;
- I:Byte;
-
- Procedure MoveWord2Byte(Const Source;Var Dest;Count:Word);Assembler;ASM
- CLD
- PUSH DS
- LDS SI,Source
- LES DI,Dest
- MOV CX,Count
- JCXZ @End
- @Count:
- LODSW
- STOSB
- LOOP @Count
- @End:
- POP DS
- END;
-
- BEGIN
- MoveWord2Byte(Source,Target,SizeOf(Target));
- WriteLn('Après transformation : ');
- For I:=0 to SizeOf(Target)-1 do Begin
- Write(Target[I],',');
- End;
- WriteLn;
- 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.