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

Assembleur Discussion :

[Débutant] Pourquoi ce code plante-t-il ?


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 19
    Points
    19
    Par défaut [Débutant] Pourquoi ce code plante-t-il ?
    Bonjour,

    quelqu'un peut-il m'expliquer pourquoi le code suivant plante:

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    //using namespace std;
     
    int p10[20];
    int nd;
     
    void asm_main()
    {
        asm (".intel_syntax noprefix");//passage en syntaxe intel
        asm ("mov ebx, _p10");
        asm ("mov eax, [ebx]");
    //    asm ("mov eax, 8");
        asm ("mov _nd, eax");
        asm (".att_syntax noprefix");//passage en syntaxe at&t
    }    
     
    int main(int argc, char *argv[])
    {
        int i;
        for(i=0; i<20; i++) p10[i] =  8;
     
        nd = 0;  
     
        printf("avant asm_main %d\n",nd);
        asm_main();
        printf("apres asm_main %d \n",nd);
        system("PAUSE");	
        return 0;
    }
    Merci (et désolé pour cette question sans doute idiote)

    Jérôme

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Quel est le problème ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Le problème est que tout marche bien quand je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //    asm ("mov eax, [ebx]");
        asm ("mov eax, 8");
    mais que ça plante (petite fenêtre Windows qui dit que le programme a planté) quand je mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        asm ("mov eax, [ebx]");
    //    asm ("mov eax, 8");

    Jérôme

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Quel compilateur/EDI utilises-tu ?

  5. #5
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Il faut au moins ajouter un \n après chaque instruction et en général on ajoute un \t aussi pour que ça fasse plus joli si on regarde le listing (avec l'option -S).

    Citation Envoyé par SCalc Voir le message
    Ça ne m'étonnerait pas que EBX contienne le premier élément de p10 au lieu de son adresse. Essaie "offset _p10".
    :wq

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Dapounet avait raison, c'est la solution

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

Discussions similaires

  1. Pourquoi ce code plante (segmentation fault)
    Par fcjunic dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2011, 12h05
  2. [Conception] Pourquoi ce code plante ?
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/10/2007, 10h52
  3. [Débutante] Pourquoi ça ne marche pas...?
    Par Tootsi dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 12/02/2006, 16h58
  4. Pourquoi ce code marche pas sous FF?
    Par Death83 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/09/2005, 10h04
  5. Réponses: 4
    Dernier message: 06/11/2003, 10h37

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