Boucle en assembleur

Résolu
elam2011 Messages postés 9 Statut Membre -  
kilian Messages postés 8854 Statut Modérateur -
Bonjour,
svp si qlq 1 pourra m'aider comment on fait une boucle en assembleur svp aidez moi

2 réponses

elam2011 Messages postés 9 Statut Membre 4
 
le nasm
par exemple for(i=0,i<n;i++)
{
instructions

}
et merci bcp
4
kilian Messages postés 8854 Statut Modérateur 1 526
 
Faut utiliser les instructions cmp et jxx
xx étant la condition, ça peut être jb pour "si plus petit" avec des entiers non signés, ja pour "si plus grand".
Pour ton exemple si i est dans ecx et n dans eax:
mov ecx, 0
boucle:
    cmp ecx, eax   ;comparaison ecx, et eax
    jnb finBoucle   ;si ecx >= eax alors on saute vers finBoucle

    ;instructions

    jmp boucle ;on boucle (saut inconditionnel

finBoucle:
   ;........

Ici tu as une référence des sauts conditionnels:
http://www.unixwiz.net/techtips/x86-jumps.html
0
elam2011 Messages postés 9 Statut Membre 4 > kilian Messages postés 8854 Statut Modérateur
 
merci bcp, mais pour l'incrementation de i on fait comment svp?
0
kilian Messages postés 8854 Statut Modérateur 1 526 > elam2011 Messages postés 9 Statut Membre
 
Zut j'ai oublié d'incrémenter i.
Si j'étais un bon prof, j'aurais dit que c'était pour savoir si tu suivais O_o

Il faut que tu fasses
inc ecx

inc => incrémenter.
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Bonjour,

Ca dépend. En quel assembleur?
Et c'est pour faire une boucle à partir d'une condition particulière? Si oui laquelle?
0