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 :

Erreur code MASM


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Erreur code MASM
    Tout d'abord bonjour(soir),

    Voila j'ai un petit soucis au niveau de l'assemblage de mon code, je suit également le cours de Kip Irvine "assembleur x86" avec MASM, 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
     
    ; TITLE Addition et soustraction (addSub.asm)
     
    ; Addition et soustraction d'entiers sur 32 bits
     
     
    INCLUDE Irvine32.inc
     
     
    .code
    main PROC
     
    mov eax,1000h                     ; EAX = 1000h
    add eax,4000h                     ; EAX = 5000h
    sub eax,2000h                     ; EAX = 3000h
     
    exit
    main ENDP
    END main
    C'est du mot à mot , et voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    test.obj : error LNK2001: unresolved external symbol _ExitProcess@4
    test.exe : fatal error LNK1120: 1 unresolved externals
    Je suis vraiment débutant, si je pourrais avoir une réponse clair avec un petit exemple du code ça serait gentil, merci

  2. #2
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Points : 567
    Points
    567
    Par défaut
    Bonjour.

    Ce problème semble se poser régulièrement avec le livre de Irvine ...
    Voir http://www.winasm.net/forum/index.php?showtopic=586

    Personnellement, je pense que l'instruction " exit " placée à la fin de ce code fait référence à une macro située à l'intérieur du fichier Irvine32.inc.
    ( je précise que je n'ai pas le livre de Irvine ni le CD associé, et donc que je n'ai pas pu consulter le fichier Irvine32.inc )
    Cette macro contient certainement l'appel à ExitProcess, procédure appelée pour quitter un programme Win32.
    Pour que le compilateur fasse son travail, il faut qu'il sache où trouver cette procédure.
    Or cette procédure ExitProcess figure dans Kernel32.dll, librairie faisant partie de Windows.
    Il faut donc signifier au compilateur que cette procédure est une procédure externe au programme, et que l'éditeur de liens la trouvera dans Kernel32.dll.
    Cela se fait avec MASM en ajoutant dans le code la ligne " INCLUDE Kernel32.lib ", ou bien la ligne " INCLUDE Irvine32.lib " si ce fichier existe et contient les informations souhaitées sur la fonction ExitProcess.

    Pour répondre plus précisément à votre question, il faudrait connaître le contenu du fichier Irvne32.inc.
    Et en particulier toutes les références à ExitProcess figurant dans ce fichier.

    Pour finir, je vous conseille de passer à MASM32.
    ( voir http://www.masm32.com/ )
    Les fichiers sont complets, prêts à l'emploi, et il n'y a pas de fichiers propriétaires comme Irvine32.inc, Irvine32.lib ou je ne sais quoi d'autre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    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
    ; TITLE Addition et soustraction (addSub.asm)
     
    ; Addition et soustraction d'entiers sur 32 bits
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .586 ; processeur = Pentium
    .model flat, stdcall ; un seul segment de 4Go, appel standard
    option casemap: none ; l'assembleur respecte les majuscules et minuscules
    include \masm32\include\windows.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\kernel32.lib     
    include \masm32\include\user32.inc
    includelib \masm32\lib\user32.lib       
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     
    ;INCLUDE Irvine32.inc
     
    .data
    titre db "resultat",0
    zoen_fmt                db "%08lx",0
    caption dd ?,0
    zoen_buf                db 256 dup(0)
    .code
     
     
    main:
     
    mov eax,1000h                     ; EAX = 1000h
    add eax,4000h                     ; EAX = 5000h
    sub eax,2000h                     ; EAX = 3000h
    mov [caption],eax
     
     
                movzx  esi,word ptr[caption]                                                 
                push   esi                                                                
                push   offset zoen_fmt                                                    
                push   offset zoen_buf                                                    
                call   wsprintf                                                           
    invoke MessageBox, NULL, addr zoen_buf, addr titre, MB_OK
    invoke ExitProcess, 0 
    END main

Discussions similaires

  1. erreur code renommer table
    Par milielf dans le forum Access
    Réponses: 7
    Dernier message: 13/07/2006, 13h30
  2. Réponses: 6
    Dernier message: 09/06/2006, 01h19
  3. erreur code pour désactiver molette souris.
    Par rangernoir dans le forum Access
    Réponses: 2
    Dernier message: 27/09/2005, 11h14
  4. [CR] erreur code de touche incorrect ??
    Par CAPPE dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 09/05/2005, 17h52
  5. Réponses: 4
    Dernier message: 09/05/2003, 17h20

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