Partage
  • Partager sur Facebook
  • Partager sur Twitter

Language assembleur x86

chaine de caractère ne s'affiche pas dans son intégralité

Sujet résolu
    30 avril 2021 à 11:21:29

    Bonjour,

    Je voudrais afficher le message "Hello everybody!!!" en nasm. Le problème est qu' il ne m'affiche que "Hell" et je ne comprends pas pourquoi.

    SECTION .data
        message db "Hello everybody!!!", 0Ah
    
    SECTION .text
        global _start
        _start:
            mov ebx, message
            mov eax, ebx
    
        verification:
            cmp byte [eax], 0
            jz finished
            inc eax
            jmp verification
    
        finished:
            sub eax,ebx
             
            mov eax, 4
            mov ebx, 1
            mov ecx, message
            mov edx, eax
            int 0x80
    
            mov eax, 1
            mov ebx, 0
            int 0x80
    
    



    • Partager sur Facebook
    • Partager sur Twitter

    Crois-tu qu' un avion peut être créer par hasard? Alors pourquoi crois-tu êtres le fruit du hasard?

      30 avril 2021 à 11:40:05

      D'après ce que j'ai pu voir sur le net, edx doit contenir la longueur du texte or tu lui mets la valeur de eax donc 4 donc il t'affiche 4 caractères !
      • Partager sur Facebook
      • Partager sur Twitter
        30 avril 2021 à 12:13:45

        rouloude a écrit:

        D'après ce que j'ai pu voir sur le net, edx doit contenir la longueur du texte or tu lui mets la valeur de eax donc 4 donc il t'affiche 4 caractères !

        Effectivement c'est bien mon erreur. En fait vu que eax après l'instruction
        sub eax,ebx

        contient la longueur de la chaine j'aurai du juste après le mettre dans edx avant l'appel du write

         mov eax, 4

        Et effectivement ça marche quand je fais

        finished:
                sub eax,ebx
        
                mov edx, eax 
                mov eax, 4
                mov ebx, 1
                mov ecx, message
                
                int 0x80
        
                mov eax, 1
                mov ebx, 0
                int 0x80

        Merci beaucoup! problème résolu



        -
        Edité par {nom:"EmmanuelKoffi"} 30 avril 2021 à 12:19:42

        • Partager sur Facebook
        • Partager sur Twitter

        Crois-tu qu' un avion peut être créer par hasard? Alors pourquoi crois-tu êtres le fruit du hasard?

        Language assembleur x86

        × 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