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

C Discussion :

Insérer de l'assembleur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut Insérer de l'assembleur
    Bonjour,
    J'ai un problème. Je voudrai insérer des fonctions avec Dev C++ dans un programme en C pour lire et écrire sur des ports. Sachant que sous Dev C++, on est obligé de recourir à l'assembleur(avec la convention AT&T), j'ai essayé de programmer ces fonctions. Mais le problème c'est qu'à chaque fois, le compilateur me signale une erreur de compilation: suffixe or operands invalid for 'in' et 'mov'. En fait, j'ai trop du mal avec la syntaxe de l'assembleur AT&T.
    Quelqu'un peut-il m'aider car je ne suis pas vraiment un pro en programmation?

    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
    unsigned char lire_port(unsigned short adressereg)
    {        
      unsigned char result;       
      asm("movw $adressereg, %bx");           
      asm("inw %bx, %ax");
      asm ("movw %ax, $result");
      return result;
    }
     
    void ecrire_port(unsigned short adressereg2, unsigned char valeur)
    {
      asm("movw $adressereg2, %dx");
      asm("movw $valeur, %ax");
      asm("outw %ax, %dx");
    }

  2. #2
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Salut,

    2 petites remarques

    1) Utilise la balise code pour présenter ton code.
    2) Si tu travailles sur un Windows "récent", les entrées/sorties sont interdites je pense. Il faut passer par un dll

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut
    Merci de me répondre.
    Mais je ne suis pas un pro en info.
    Les entrées sorties sont interdites sous XP? et sous Windows 98?
    C'est quoi un dll?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Par défaut
    Je confirme, sous XP, tu pourra pas faire d'E/S, mais ca passe sous 98.

    Sinon pour ce qui est de ces fonctions, elle existent deja dans un include genre bios.h ou dos.h (je ne suis plus sur j'ai pas ca sous la main), et son deja programmée en assembleur, donc assez inutile de te prendre la tete.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut
    Merci pour ton aide.
    Si tu as plus d'infos sur ces include bios.h ou dos.h ton aide est la bienvenue.

  6. #6
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    dos.h n'est pas disponible sur les Windows récent (ou alors seulement fourni avec TurboC, qque chose du genre).

    Pour faire des entrées/sorties sous Windows, utilise la bibliothèque Inpout32.dll

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

Discussions similaires

  1. comment insérer du code assembleur
    Par blueLight dans le forum C++
    Réponses: 16
    Dernier message: 13/02/2008, 09h24
  2. Tutoriels, F.A.Q : la rubrique Assembleur de Developpez.com
    Par Alcatîz dans le forum Assembleur
    Réponses: 3
    Dernier message: 07/06/2007, 19h14
  3. ecrire son OS (assembleur ??)
    Par Anonymous dans le forum Programmation d'OS
    Réponses: 9
    Dernier message: 25/11/2002, 19h25
  4. Random en Assembleur
    Par funx dans le forum Assembleur
    Réponses: 9
    Dernier message: 02/09/2002, 17h05
  5. Quel désassembleur/assembleur pour un exe Windows ?
    Par Anonymous dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 17/04/2002, 10h59

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