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] Paramètre dans la pile


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 111
    Points
    111
    Par défaut [NASM] Paramètre dans la pile
    Bonjour,

    Je réapprends l'assembleur grâce au tuto de Docteur Paul Carter sympathiquement traduit en francais. J'utilise les fonctions fournies avec pour l'affichage d'entier et d'autres opérations, je travaille en mode protégé.

    Lorsque je souhaite afficher un paramètre en le prenant directement dans la pile, j'ai droit à une erreur bizarre comme quoi une zone ne peut pas être READ. Les fonctions print_int et print_nl marchent très bien, je ne vois pas d'où vient l'erreur.

    Bref, voici le code :

    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
    ;code
    segment .text
     
        global _asm_main
    _asm_main:
        enter 0,0    ;initialisation
        pusha
     
        push    dword 1
     
        call    fonction
     
        popa
        mov    eax,0
        leave
        ret
     
    fonction:
        push    ebp
        mov    ebp,esp
     
        mov    eax,[ebp + 8]
        call    print_int
        call    print_nl
     
        pop    ebp
        ret

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 160
    Points
    160
    Par défaut
    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
     
    global _asm_main
    _asm_main:
    enter 0,0 ;initialisation
    pusha
     
    push dword 1
     
    call fonction
     
    popa
    mov eax,0
    leave
    ret
     
    fonction:
    push ebp
    mov ebp,esp
     
    mov eax,[ebp + 8]
    call print_int
    call print_nl
     
    pop ebp
    ret
     
     
    Main:
     
    call fonction
     
    ret ?
     
    fonction:
     
    mov eax 1
     
    call print_int
     
    call print_nl
     
    ret

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 111
    Points
    111
    Par défaut
    Merci mais c'est illisible.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 111
    Points
    111
    Par défaut
    Ok, je n'ai peut être pas été assez précis dans mon problème, j'interface du C et de l'assembleur. En faite mon petit morceau de code ASM et appelé par un programme en C, qui sert juste de support pour appeler ma routine ASM.

    La fonction a peut être pu vous embrouillez, voici le même code en encore plus simple :

    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
     
    %include "asm_io.inc"
    ;code
    segment .text
     
        global _asm_main
    _asm_main:
        enter 0,0    ;initialisation
        pusha
     
        push    dword 150
     
        mov        eax,[esp]
     
        popa
        mov    eax,0
        leave
        ret
    Même sans l'appel de la fonction, le simple fait d'affecter une valeur pointée dans la pile à un registre fait bugger le programme

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 111
    Points
    111
    Par défaut
    Oh non le noob, ca n'a rien a voir avec ce que je croyais !

    En faite j'oublie tout simplement de dépiller ma variable avant de retourner dans le C [programme appelant] !

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 160
    Points
    160
    Par défaut
    c'est pour ça que je n'utilisais pas la pile pour passer d'arguments...

    ben c'est cool...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer paramètres d'une méthode dans la pile
    Par Yopsolo33 dans le forum Langage
    Réponses: 9
    Dernier message: 28/09/2011, 12h04
  2. Ajout de paramètres dans le path du forward
    Par sylvain_neus dans le forum Struts 1
    Réponses: 6
    Dernier message: 14/11/2007, 17h31
  3. [jsp][struts] paramètre dans un iframe.
    Par ultimax dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/10/2004, 09h25
  4. Mettre la valeur d'un paramètre dans un champs
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/10/2004, 16h08
  5. [CR] insérer une image paramétrer dans une étiquette
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 22/08/2004, 11h58

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