begin process at 2010 02 10 00:48:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Processeurs

 > 

X86

 > 

[ASM] Strcmp, prob evec la valeur de retour.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ASM] Strcmp, prob evec la valeur de retour.

dimanche 26 avril 2009 à 14:49:45 | [ASM] Strcmp, prob evec la valeur de retour.

Ilsundal

Bonjour a tous, j'ai réaliser la fonction strlen en ASM x86. tout fonctionne parfaitement sauf pour la valeur de retour, je souhaiterait qu'elle corresponde a la différence des 2 caractères qui changent.   ex ( strcmp("coucou", "coutou") renvoie  -17   (man ascii pour les valeurs)).


voici deja mon code.

si quelq'un a une idee de comment faire, merci, jai tester plusieur truc sans success. merci d'avance !

===== STRLEN ASM =====
global  strcmp

strcmp:
        push    ebp
        mov     ebp,            esp

        push    edi
        push    esi
        push    ecx

        mov     edi,            [ebp + 8]       ; ARGU. 1 DANS EDI (CHAR * DESTINATION)
        mov     esi,            [ebp + 12]      ; ARGU. 2 DANS ESI (CHAR * SOURCE)
        mov     ecx,            0               ; COMPTEUR

_loop:
        mov     al,             [esi + ecx]     ; MOVE DANS BON REGISTRE POUR LES TEST
        mov     ah,             [edi + ecx]     ; MOVE DANS BON REGISTRE POUR LES TEST


        cmp     ah,             al              ; COMPARE EDI ET ESI : Whouhouuu !
        jl      _not                            ; SI INFERIEUR
        jg      _not_sup                        ; SI SUPERIEUR

        cmp     al,             0               ; TEST FIN DE CHAINE POUR ESI
        je     _end                             ; ALORS SE BARRER
        cmp     ah,             0               ; TEST FIN DE CHAINE POUR EDI
        je      _end                            ; ALORS SE CASSER

        inc     ecx                             ; INCREMENT ECX
        jmp     _loop                           ; SINON ON REFAIT UN TOUR DE MANEGE

_not:
        mov     eax,            -1               ; PARAM DE RETOUR

        pop     ecx
        pop     esi
        pop     edi

        leave
        ret

_not_sup:
        mov     eax,            1               ; PARAM DE RETOUR

        pop     ecx
        pop     esi
        pop     edi

        leave
        ret

_end:
        mov     eax,            0               ; PARAM DE RETOUR

        pop     ecx
        pop     esi
        pop     edi

        leave
        ret

____________________
Ma Quete n'est pas Terminee
dimanche 26 avril 2009 à 16:36:11 | Re : [ASM] Strcmp, prob evec la valeur de retour.

ToutEnMasm

Il faut deja savoir ce que l'on veut faire.Les fonctions de traitement de chaines sont légions,j'ai les miennes.
Strlen renvoie une longueur.
Strcmp compare deux chaines.
Trim coupe les espaces tab......
Il faut déja savoir quel résultat on veut,après l'écriture n'est pas difficile.
dimanche 26 avril 2009 à 17:27:48 | Re : [ASM] Strcmp, prob evec la valeur de retour.

Ilsundal

mille excuse, c'est bien strcmp que je veux, je me suis trpomper en tqpqn t le header

____________________
Ma Quete n'est pas Terminee
dimanche 26 avril 2009 à 23:05:47 | Re : [ASM] Strcmp, prob evec la valeur de retour.

BruNews

Administrateur CodeS-SourceS

Je t'ai deja donné strcmp() ici il y a qlqs jours:
http://www.asmfr.com/forum.v2.aspx?ID=1300200

r = strcmp(s1, s2);
SI r == 0 ALORS s1 = s2
SI r < 0 ALORS s1 < s2
SI r > 0 ALORS s1 > s2
Tourne précisément comme strcmp() du C.

On veut bien aider gratos mais faudrait tout de même voir à lire les réponses, on aura moins l'impression de perdre notre temps.

strlen est encore plus trivial.
Pour avoir des perfs, faut surtout pas en faire une fonction mais mettre le code là où on en a besoin (inline).
admettons adresse chaine en EDX:
lea eax, [edx - 1]
goLEN:
  add eax, 1
  cmp byte ptr[eax], 0
  jne short goLEN ; BOUCLE PLUS COURTE, TU MEURS
sub eax, edx
C'est fini, EAX contient strlen(edx)

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : pop, mov, edi, esi, ecx


Répondre à ce message

Sujets en rapport avec ce message

Aligner des données pour le SSE [ par epineurien ] Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu mon code ne marche pas [ par mohoguess ] Bonjour a tous,je suis débutant en asembleur, et j'ai écrit un code qui sert a additionner le chiffre 1 jusqu'à 999999 fois (mon code ne sert à rien j Recherche de fichier recursif [ par maximus4 ] Bonjour, j'ai la procédure suivante pour la recherche récursive, le résultat est stocké dans un fichier texte. [code=autre]invoke CreateFile,offset fi assembleur [ par rojbeni ] bonjour tous,comment  faire pour  saisie une suite de nombre  a stocker  dans un tableau   . le nombre maximum de nombre que l'on peut saisir est de 1 Inversion de chaîne [ par Bidou ] Bonjour à tous,A vrai dire je suis plutôt nouveau en asm et pas très bon lol. Mais bon, faut bien commencer un jour hein. Pour me faire la main, j'ai afficher un nom en fonction d'un algo quelconque [ par pseudo nul ] bonjour comment  modifier ce bout de code  en masm 32 pour faire afficher dans la case serial (edi) un numéro de serie en faisant la somme de la valeu # Export Table - Kernel32.dll - GetProcessAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la # Export Table --- Kernell32.dll --- GetProcAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la HELP ! :'( [ par TheHacker ] Salut j'ai un probleme: voici mon code, il fonctionne correctement, activer le programme vous verres qu'a la fin i laffiche un MessageBox avec marqué delphi vers asm [ par cricri_b34 ] salut , J'ai un code en delphi que j'aimerais traduire en assembleur (masm32) :varKeyTable: array [0..255] of boolean[....]procedure CheckState;var  I


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales