Assembleur 80x86 | REP |
---|---|
INTEL 8088+ | Repeat String Prefix |
Syntaxe
REP chaine_d'instruction_paramètre |
Description
Cette instruction est utilisé comme préfixe avec d'autres instructions pour effectuer des répétitions d'instructions tant que CX ne vaut pas 0.
Algorithme
SI OpCode est [ INS, INSB, INSD, INSW, LODS, LODSB, LODSD, LODSQ, LODSW, MOVS, MOVSB, MOVSD, MOVSQ, MOVSW, OUTS, OUTSB, OUTSD, OUTSW, STOS, STOSB, STOSD, STOSQ, STOSW ] ALORS FAIRE TANT QUE CX ≠ 0 Exécute instruction_paramètre CX ← CX - 1 FIN DE FAIRE FIN SI SI OpCode est [ CMPS, CMPSB, CMPSD, CMPSQ, CMPSW, SCAS, SCASB, SCASD, SCASW ] ALORS FAIRE TANT QUE CX ≠ 0 Exécute instruction_paramètre CX ← CX - 1 SI ZF = 0 ALORS Fin de boucle FIN DE FAIRE FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
REP autreinstruction | F3h autreinstruction | Cette instruction est utilisé comme préfixe avec d'autres instructions pour effectuer des répétitions d'instructions tant que CX ne vaut pas 0. |
Exemple
Voici un exemple en Turbo Pascal 7 montrant une utilisation de cette instruction :
- Program AsmRepSamples;
-
- Const
- X:Array[0..10]of Byte=(0,1,2,3,4,5,6,7,8,9,10);
-
- Var
- I:Byte;
-
- Procedure MoveRight(Const Source;Var Dest;Count:Word);Assembler;ASM
- STD
- PUSH DS
- LDS SI,Source
- LES DI,Dest
- MOV CX,Count
- ADD SI,CX
- DEC SI
- ADD DI,CX
- DEC DI
- REP MOVSB
- POP DS
- END;
-
- BEGIN
- MoveRight(X[3],X[5],5);
- For I:=0 to 10 do Begin
- Write(X[I],',');
- End;
- WriteLn;
- END.
on obtiendra le résultat suivant :
0,1,2,3,4,3,4,5,6,7,10,Références
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 413
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 828
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 361 à 365.
Dernière mise à jour : Lundi, le 1 septembre 2014