Section courante

A propos

Section administrative du site

Les instructions de boucle en assembleur ont une forme très différentes des langages de programmation évolué comme C, Pascal ou Ada. Il est cependant possible d'avoir un équivalent des formats classiques d'instructions conditionnelles, soit les formes suivantes :

BOUCLE POUR

Si nous partons de l'algorithme suivante :

BOUCLE POUR variable = valeurdebut JUSQU'A valeurfin
   instruction
FIN BOUCLE POUR

On aura donc une syntaxe ressemblant à ceci :

   MOV CX,valeurdebut
POUR1:
   CMP CX,valeurfin
   JA FINPOUR1
   instruction
   INC CX
   JMP POUR1
FINPOUR1:

Exemple

L'exemple suivant permet d'avoir la valeur multiplié du compteur à chaque passage de la boucle :

  1.    MOV CX,0
  2. POUR1:
  3.    CMP CX,10
  4.    JA FINPOUR1
  5.    MOV BX,CX
  6.    SHL BX,1
  7.    INC CX
  8.    JMP POUR1
  9. FINPOUR1:

FAIRE TANT QUE condition ... FIN FAIRE TANT QUE

Si nous partons de l'algorithme suivante :

BOUCLE FAIRE TANT QUE operande = valeur
   instruction
FIN BOUCLE FAIRE TANT QUE

Exemple

L'exemple suivant permet de diviser par la valeur de BX jusqu'à ce qu'elle a la valeur 0 :

  1. TANTQUE1:
  2.    CMP BX,0
  3.    JNZ FINTANTQUE1
  4.    SHR BX,1
  5.    JMP TANTQUE1
  6. FINTANTQUE1:

On aura donc une syntaxe ressemblant à ceci :

TANTQUE1:
   CMP operande,valeur
   JNZ FINTANTQUE1
   instruction
   JMP TANTQUE1
FINTANTQUE1:

REPETER ... JUSQU'A condition

Si nous partons de l'algorithme suivante :

REPETER
   instruction
JUSQU'A operande = valeur

On aura donc une syntaxe ressemblant à ceci :

REPETER1:
   instruction
   CMP operande,valeur
   JNZ REPETER1
FINREPETER1:

Exemple

L'exemple suivant permet de diviser par la valeur de BX jusqu'à ce qu'elle a la valeur 0 :

  1. REPETER1:
  2.    SHR BX,1
  3.    CMP BX,0
  4.    JNZ REPETER1
  5. FINREPETER1:


Dernière mise à jour : Samedi, le 25 mai 2019