Section courante

A propos

Section administrative du site

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 :

  1. Program AsmRepSamples;
  2.  
  3. Const
  4.  X:Array[0..10]of Byte=(0,1,2,3,4,5,6,7,8,9,10);
  5.  
  6. Var
  7.  I:Byte;
  8.  
  9. Procedure MoveRight(Const Source;Var Dest;Count:Word);Assembler;ASM
  10.  STD
  11.  PUSH DS
  12.   LDS SI,Source
  13.   LES DI,Dest
  14.   MOV CX,Count
  15.   ADD SI,CX
  16.   DEC SI
  17.   ADD DI,CX
  18.   DEC DI
  19.   REP MOVSB
  20.  POP DS
  21. END;
  22.  
  23. BEGIN
  24.  MoveRight(X[3],X[5],5);
  25.  For I:=0 to 10 do Begin
  26.   Write(X[I],',');
  27.  End;
  28.  WriteLn;
  29. 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