Boucle en assembleur

Résolu
elam2011 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   -
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 Date d'inscription   Statut Membre Dernière intervention   4
 
le nasm
par exemple for(i=0,i<n;i++)
{
instructions

}
et merci bcp
4
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   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 Date d'inscription   Statut Membre Dernière intervention   4 > kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention  
 
merci bcp, mais pour l'incrementation de i on fait comment svp?
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > elam2011 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   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