Partage
  • Partager sur Facebook
  • Partager sur Twitter

[asm] strcasecmp

    15 mars 2011 à 11:11:51

    Bonjour,
    j ' ai un soucis sur le recode de cette fonction et je ne vois pas mon erreur !
    le but de cette fonction est la meme que strcmp mais la case est insensitive ! (du coup : Coucou et COUCou retourne true)
    Voici mon code :

    strcasecmp:
    push ebp
    mov ebp, esp
    push ebx
    push ecx
    xor ebx, ebx
    mov ecx, [ebp + 8]
    mov edx, [ebp + 12] // je recupere ici mes 2 pointers sur mes chaines de charactere

    count: jmp end_string // ma boucle principale
    end_cmp:
    inc ecx
    inc edx
    jmp count

    end_string: cmp byte [ecx], 0 // check si je sors de la loop ou pas
    je end_find
    cmp byte [edx], 0
    je end_find

    change_ecx: cmp byte [ecx], 'a'
    ja change_edx
    cmp byte [ecx], 'z'
    jb change_edx
    add [ecx], 32 // passe en minuscule le char courant dans ecx si elle est en Maj
    change_edx: cmp byte [edx], 'a'
    ja go
    cmp byte [edx], 'z'
    jb go
    add [edx], 32 // la meme mais pour edx
    go:
    cmp byte [ecx], [edx] // je compare
    jne end
    jmp end_cmp

    end_find:
    mov eax, 0
    leave
    ret


    end:

    mov eax, -1
    leave
    ret



    Merci de votre aide.


    Cordialement.
    • Partager sur Facebook
    • Partager sur Twitter
      18 septembre 2020 à 11:36:10

      Bonjour.

      Quelle est l'erreur ?  

      Il y a déjà 2 push au début qui ne sont pas compensés par 2 pop finaux.

      L'instruction leave ne compense que le push ebp du début.

      Pour faire propre, il faut mieux utiliser enter 0,0 que les 2 instructions push ebp et mov ebp,esp.

      • Partager sur Facebook
      • Partager sur Twitter
        18 septembre 2020 à 17:42:13

        Comme on dit , mieux vaut tard que jamais !
        Mais je doute que 10 ans plus tard , le gars bloque encore sur un exo de cours ;)
        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2020 à 9:58:46

          Ah oui, je me suis fait avoir !! J'avais pas vu la date du premier message.

          Mais comment se fait-il que ce message soit réapparu en début de ce forum ??

          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2020 à 14:41:54

            C'est à cause de ThomasPéan,il a remonté ce fil en postant "nbh"
            • Partager sur Facebook
            • Partager sur Twitter

            [asm] strcasecmp

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown