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 :

[MASM32 / 16 bits] Problème de création de librairie statique en assembleur


Sujet :

Assembleur

  1. #1
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut [MASM32 / 16 bits] Problème de création de librairie statique en assembleur
    Salut je programme en C++ et voudrais créér des librairies statiques en assembleur.

    J'en ai testé une avec une fonction qui appelle le mode video 13h avec l'interruption 10h.

    Je la compile sans probleme, avec TASM, et obtient un fichier .OBJ.

    Mais quand je tente de la lier avec le programme principal en C++ le compilateur (g++ livré avec l'IDE Dev-C++) ne reconna^tt pas la librairie et affiche:

    C:\Program Files\Dev-Cpp\bin>g++ biblistat.cpp LIBSTAT.OBJ
    LIBSTAT.OBJ: file not recognized: File format not recognized
    collect2: ld returned 1 exit status
    Si quelqu'un avait la moindre idée sur ce probleme...

    Voici le code assembleur
    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
    .486
    .model small
    .stack 100h
     
    .code
     
    start :
     
    f1 PROC NEAR
    MOV ah,00h
    MOV al,013h
    INT 10h
    f1 endp
     
     
    end start
    Et le code C++:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
    #include <stdlib>
    #include "libstat.hpp"
     
    using namespace std;
     
    int main(){
     
    	cout<<"debut"<<endl;
    	f1();
    	cout<<"fin"<<endl;
     
    return 0;
    }
    Et le header:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern "C"{
    void f1();
    }
    Merci à tous ceux qui prendront le temps de lire ces lignes!

    PS: Désolé de vous imposer du C++
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Je pense que le problème vient du fait que tu essayes de lier un fichier objet 16 bits avec un exécutable 32 bits.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Merci pour la réponse

    Quelle est la solution?

    Transformer le fichier objet en 32 bits?
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Ne serait-il pas plus simple d'appeler l'interruption directement dans le code C ? (je ne connais presque rien en C mais je mettrais ma main à couper que c'est possible).

    Dans un autre ordre d'idée, si le programme est en mode protégé, l'appel direct de ce genre d'interruption n'est pas possible.
    http://www.developpez.net/forums/vie...de+prot%E9g%E9
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Et si je compile avec Masm32???
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  6. #6
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    J'ai vu sur un autre forum que, pour utiliser les interruptions avec masm32, il faut un linker 16 bits.

    Est-ce que ça veut dire qu'il est impossible d'utiliser un programme assembleur "classique" pour en faire une librairie statique C???

    Il faut obligatoirement passer par des outils comme la programmation Win32???
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

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

Discussions similaires

  1. Problème à la création d'une librairie .so
    Par francois.cheminade dans le forum C++
    Réponses: 2
    Dernier message: 22/11/2012, 10h31
  2. Réponses: 2
    Dernier message: 24/01/2010, 00h38
  3. Création de librairie statique Prolog / C
    Par chacalju dans le forum Prolog
    Réponses: 6
    Dernier message: 18/09/2009, 14h03
  4. Réponses: 1
    Dernier message: 11/07/2006, 20h00
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

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