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 :

Le port parallèle en Assembleur dans code C


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Par défaut Le port parallèle en Assembleur dans code C
    Bonjour à tous,

    J'essaie désespérément d'envoyer une valeur sur le port parallèle de mon pc. J'utilise Visual c++ 6 et quelques lignes que j'ai trouvées sur le net :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __asm
    {
    MOV DX,378h
    MOV AX, 01h
    OUT DX,AX
    }
    Si je fais de l'adressage direct, c'est-à-dire Mov 378h,01h, il me renvoie une erreur d'opérande comme si le format d'adresse n'était pas valide. J'ai donc essayé la solution ci-dessus, ça compile mais lors de l'exécution ça plante et la valeur n'est pas modifiée.

    Si certains d'entre vous ont une idée ? Merci d'avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 193
    Par défaut
    Tout dépend dans quel systeme on est.L'adressage direct des ports marchait avec les premiers micros.Avec windows tout passe ou presque par des fichiers systèmes.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Par défaut
    En faite je ne suis pas très calé en asm, je suis étudiant le seul assembleur que j'ai fait est sur des microcontroleurs 8x51. Je m'était dit que sur un processeur pc x86 ça devait avoir des ressemblances, la syntaxe semble pareille mais peut être pas le fonctionnement du proc et l'adressage.

    A la base je chercher à envoyer cette valeur en c, mais il semblerait qu'une simple include et une ligne de commande ne suffit pas. J'ai donc penser que quelques lignes assembleur dans mon code c cela aurait put marcher. Sur internet beaucoup de solution sont proposée des syntaxe comme
    outportb(adresse,valeur), mais je n'arrive à faire marcher aucune d'entre elle.

  4. #4
    Membre expérimenté

    Inscrit en
    Février 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 200
    Par défaut
    Le mélange qui pose problème ne vient pas de l'assembleur et du c mais du fait que le "mode" assembleur utilisé n'est pas le bon.
    Un recherche dans le SDK (sur MSDN par exemple si tu ne veux pas télécharger tout le bazard juste pour tes essais) de l'Api idoine sera plus efficace et gratifiant !
    L'avantage et aussi que tu pourras coder directement tout-ça en C.

  5. #5
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,
    Sous Windows XP et plus (NT quoi ^^),on ne peut plus accéder directement aux ports parallèles.
    Pour cela,tu peux regarder inpout32.dll (http://logix4u.net/Legacy_Ports/Para...000/NT/XP.html) qui est une bibli pour accéder aux ports parallèles sous XP.

  6. #6
    Membre expérimenté

    Inscrit en
    Février 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 200
    Par défaut
    Citation Envoyé par supersnail Voir le message
    Bonjour,
    Sous Windows XP et plus (NT quoi ^^),on ne peut plus accéder directement aux ports parallèles.
    Si je comprends "l'intention", la réalité est autre:
    Il est tout à fait possible d'accéder directement à n'importe quelle partie de l'electronique quelque soit l'OS cible. Ce n'est qu'une question de mécanismes utilisés.
    L'OS n'a qu'un rôle protecteur "optionel". Tous comme les "bacs à sable" de Seven ne t'empêchent pas de travailler avec des drivers en mode Kernel: Les bacs à sable travaillant avec des drivers en mode User pour sécuriser les autres applications au prix de perfs nettement dégradées...).

    Pour ma part, et pour éviter certains problèmes, j'éviterais d'utiliser une bibliothèque tierce et utiliserais les api de base.

  7. #7
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    @Rémi Coquet: J'ai déjà travaillé avec inpout32,et je n'ai eu aucun problème,et de plus,Windows ne fournit pas d'APIs pour le port parallèle(enfin à ma connaissance).

    Donc on a pas vraiment d'autre choix que d'utiliser des APIs tierces.

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

Discussions similaires

  1. Insertion assembleur dans code C++ ?
    Par bulki dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 27/03/2010, 10h18
  2. Réponses: 13
    Dernier message: 08/03/2010, 19h31
  3. gcc & assembleur dans code C ou C++
    Par uriotcea dans le forum Débuter
    Réponses: 9
    Dernier message: 08/01/2010, 15h38
  4. Problème avec assembleur dans code C++
    Par wishmerhill dans le forum C++
    Réponses: 0
    Dernier message: 05/03/2008, 11h38
  5. probleme d'insertion de code assembleur dans du c++
    Par Pragmateek dans le forum C++
    Réponses: 4
    Dernier message: 05/03/2006, 23h30

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