IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

[NASM] Strcmp


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 56
    Points
    56
    Par défaut [NASM] Strcmp
    Bonjour,
    j ai commence a recoder strcmp en NASM
    et je segfault, mon my_strlen fonctionne (je l utilise dans une autre fonction)
    je ne vois pas pkoi..
    Si quelqu'un est plus doué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    section .text
            global my_strcmp
            global my_strlen
     
    my_strcmp:
            mov ebx, [esp+4]        ;chaine 1                                              
            test ebx, ebx           ;je test si ebx != NULL                                
            jz pointeurInvalide
            mov ecx, [esp + 8]      ;chaine 2                                              
            test ecx, ecx           ;je test si ebx != NULL                                
            jz pointeurInvalide
            push dword ebx
            call my_strlen
            mov edx, eax            ;edx = strlen(s1)                                      
            add esp, 4
            push dword ecx
            call my_strlen          ;eax = strlen(s2)                                      
            add esp, 4
            cmp edx, eax
            jng find                ;edx > eex                                             
            cmp edx, eax
            jnl find                ;edx < eex                                             
     
    find:
    pointeurInvalide:
            ret

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 56
    Points
    56
    Par défaut my_strcmp qui beug
    J ai tente de recoder strcmp de la lib c en NASM
    voila ce que j ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    section .text
            global my_strcmp
     
    my_strcmp:
            mov ebx, [esp+4]        ;chaine 1                                                                                   
            test ebx, ebx           ;je test si ebx != NULL                                                                     
            jz pointeurInvalide
            mov ecx, [esp + 8]      ;chaine 2                                                                                   
            test ecx, ecx           ;je test si ebx != NULL                                                                     
            jz pointeurInvalide
            mov edx, -1
     
    boucle:
            inc edx
     
            cmp byte[ebx+edx], 0
     
            je pointeurInvalide
     
            cmp byte[ecx+edx], 0
            je pointeurInvalide
     
            mov al, byte[ecx+edx]
            cmp byte[ebx+edx], al
            je boucle
            xor eax, eax
            sub al, byte[ecx+edx]
            cmp eax, 0
            jnl ret1
            jmp ret2
     
    find:
    pointeurInvalide:
            xor eax, eax
            ret
    ret1:
            mov eax, 1
            ret
    ret2:
            mov eax, -1
            ret
    Cela ne fonctionne pas, il me retourne toujours 1,
    Quelqu'un a t il une idée?

Discussions similaires

  1. [NASM] Ligne de commande
    Par sirozz dans le forum Assembleur
    Réponses: 1
    Dernier message: 23/08/2004, 19h31
  2. [Linux] [NASM] Entrée de chaines
    Par vi4ever dans le forum Assembleur
    Réponses: 4
    Dernier message: 27/07/2004, 21h28
  3. [NASM] Redirection de l'interruption 09h
    Par sirozz dans le forum Assembleur
    Réponses: 2
    Dernier message: 16/07/2004, 17h32
  4. Utilisation de strcmp!
    Par fmv12 dans le forum C
    Réponses: 10
    Dernier message: 30/10/2003, 12h22
  5. caractère générique utilisable dans strcmp
    Par barthelv dans le forum C
    Réponses: 9
    Dernier message: 01/08/2003, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo