[C + ASM] strchr(const char *s, char c):

Calak Messages postés 38 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 24 janvier 2010 - 14 sept. 2004 à 23:35
Calak Messages postés 38 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 24 janvier 2010 - 15 sept. 2004 à 07:58
Voila, j'ai un petit probs...
Je suis en train d'essayer de recoder des fonction de string.h
mais j'ai un probs con (j'en suis sur -_- ) sur le strchr

Il ne trouve jamais le caractère demandé...

Bon, ça fait longtemps que j'ai plus fait d'assembleur, et puis je faisais seulement du 16 bits, mais c'est pas une excuse ^_^;

En fait, c'est assez "urgent" car je me refais une bibliothèques de fonction pour la rentrée scolaire ( demain ), et je bloque...
Ca doit faire bien 2 heures que je me chie sur ce probs -_-

Merci d'avance à tout ceux qui m'aideront :D

unsigned int str_chr(const char *s, int c)
{
__asm {
XOR eax, eax // On met eax à 0
XOR ebx, ebx

MOV ecx,s // On place l'adresse de "s" dans ecx
MOV edx,c

sstr_boucle:
MOV eax, [ecx+ebx]
CMP eax, 0 // Si le caractère pointé est '\0'
JE short sstr_pastrouve // au saute à la fin de la fonction

CMP eax, edx
JZ sstr_fin

INC ebx // et on passe au caractère suivant
JMP short sstr_boucle // puis on recommence la boucle

sstr_pastrouve:
xor eax, eax
sstr_fin:

}
}

5 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
15 sept. 2004 à 00:33
unsigned int str_chr(const char *s, int c)
{
__asm {
XOR eax, eax // On met eax à 0
XOR ebx, ebx

MOV ecx,s // On place l'adresse de "s" dans ecx
MOV edx,c

sstr_boucle:
MOV al, byte ptr [ecx+ebx] 
CMP al, 0 // Si le caractère pointé est '\0'
JE short sstr_pastrouve // au saute à la fin de la fonction

CMP al, dl
JE sstr_fin

INC ebx // et on passe au caractère suivant
JMP short sstr_boucle // puis on recommence la boucle

sstr_pastrouve:
xor eax, eax
sstr_fin:

}
} 



voila la au- ca a l'air de marcher...
a+ ;)
1
Rejoignez-nous