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 :

comment inserer du code assembleur dans un programme C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 2
    Par défaut comment inserer du code assembleur dans un programme C
    Salut!
    J'ai un projet en C, et je voudrais gerer la souris.
    J'ai donc du code assembleur pour la gestion de la souris.
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*Faire apparaitre le curseur de la sourie*/
    void sourie(void)
    {
    asm	mov	ax,01h
    asm	int	33h
    }
    Et voici l'erreur retournée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    In-line assembly not allowed in function sourie
    Merci d'avance !!!

    NB:J'utilise Turbo C version 2.0

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    pour ajouter de l'assembleur il te faut pour borland mettre
    asm{
    ton code assembleur
    }


    et pour visual

    _asm{
    [...]
    }

    mais attention visual utilise des registre étendu ( 2 fois la taille d'un registre normal)
    il te faudra utiliser eax,ebx...

    Y

  3. #3
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Et pour finir (il n'en manquait plus qu'un) pour gcc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    asm (
        "movl $0x01234567, %%eax\n"
        "addl %1, %%eax\n"
        "mov %%eax, %0" : "=r" (result) : "r" (value)
    );

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Baja
    J'ai un projet en C, et je voudrais gerer la souris.
    J'ai donc du code assembleur pour la gestion de la souris.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*Faire apparaitre le curseur de la sourie*/
    void sourie(void)
    {
    asm	mov	ax,01h
    asm	int	33h
    }
    Et voici l'erreur retournée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    In-line assembly not allowed in function sourie
    NB:J'utilise Turbo C version 2.0
    Chaque compilateur a sa syntaxe... Lire la doc... Il faut peut être aussi activer la compilation via l'assembleur (ce que ne fait pas Turbo C par défaut, pour aller plus vite).

    Au fait... mouse = souris, pas sourie...

  5. #5
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Fais attention tout même à l'utilisation des interruptions "int".
    A partir de Windows NT 3.51, ces opcodes passent par une couche d'émulation virtuelle qui émule le comportement du DOS. Donc si tu peux t'en passer mieux vaut utiliser directement un appel aux fonctions Win32 API équivalentes.

Discussions similaires

  1. [LibreOffice] comment inserer du code de programmation dans libre office
    Par flamant dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 06/11/2014, 10h47
  2. Intégrer un code assembleur dans un programme
    Par laracroft87 dans le forum C
    Réponses: 5
    Dernier message: 27/04/2008, 18h15
  3. Comment scanner des codes barre dans un programme ?
    Par looping dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2007, 08h14
  4. introduire du code assembleur dans un programme C++
    Par hzaki1986 dans le forum C++
    Réponses: 1
    Dernier message: 14/04/2007, 17h14
  5. Réponses: 5
    Dernier message: 21/12/2004, 18h12

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