[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:

}
}
A voir également:

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