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 :

code assembleur en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 80
    Par défaut code assembleur en c
    salut
    comment faire le entrer le code assmebleur en c
    sachant que je connait l'instuction qui est asm
    en faite
    on fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    asm{
    mov ah,0x1
    int 0x21
    }
    mais la pb que jmp ne fonctionne pas cad
    je ne peut pas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    asm{
     
    etikette:mov ah,0x01
    jmp etikette
    }

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Tu veux vraiment faire de l'assembleur?

    Sinon, à une epoque je faisais des modules en assembleur utilisables dans du c apres avoir crée le header .h correspondant
    Mais je sais plus comment ça marche...

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    C'est vrai que tu peux faire un fichier assembleur à part, le compiler en objet, faire le .h et le lier ensuite (j'ai déjà fait cette méthode sur un M68k). Mais si c'est juste pour deux instructions, je ne sais pas, je me demande si il ne fallait pas en plus ajouter une option pour le compilateur.


    Tu as une raison particulière d'en mettre, ou c'est juste pour savoir ?

  4. #4
    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 : 39
    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
    Par défaut
    Pour le faire de manière standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    asm("...");
    asm("...");
    ...
    Mais l'insertion d'assembleur n'est pas portable.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 80
    Par défaut
    non il est portable

    telecharger turbo c cersion 3.0
    et ecrivez asm{
    mov ah,1
    int 0x21
    }
    il marche
    mais le jmp non

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    Par défaut
    Je conseille de faire une compilation séparée avec NASM et GCC .
    Va voir http://inferno.cs.univ-paris8.fr/~am.../os/nasmC.html

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par rare1
    non il est portable

    telecharger turbo c cersion 3.0
    et ecrivez asm{
    mov ah,1
    int 0x21
    }
    il marche
    mais le jmp non

    Non, ça ne peut pas être portable sur toutes les machines. Sur d'autres processeurs, il n'y a pas les mêmes instructions que sur les x86 (pentium, celeron) et les mêmes registres (par exemple, les instructions machines sur des processeurs motorola 68000 sont complétements différentes, ou encore sur une station SUN).


    Mais la plupart des PC en commerce ont le même jeu d'instruction (à peu près, il y a des ajouts supplémentaires sur certaines types de processeurs pour permettre des optimisations).

  8. #8
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Citation Envoyé par rare1
    non il est portable
    Il y a plusieurs choses à prendre en compte pour dire que c'est portable :
    • Le mot clés asm est bien définie par la norme C99 (C90 je ne suis pas sûr) donc portable
    • Les instructions doivent être fournies sous forme de chaîne de caractères, la syntaxe est propre à chaque compilateur, portable si tu compile toujours avec le même compilateur
    • On parle d'assembleur donc portable sur les machines possédant les instructions/registres que tu souhaite exécuter

    Donc en partant de quelque chose de standard, on arrive à un programme qui fonctionnera sur un nombre réduit de machines.

  9. #9
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par rare1
    il marche
    mais le jmp non
    Peux-tu être précis : jmp ne fonctionne pas c'est à dire ?
    Le code donné , on boucle indéfiniment ce qui fait que le flag Overflow du CPU doit être activé ou il y a dépassement de pile et la section en assembleur rend la main à la suite du programme.

    Les interruptions ne fonctionnent pas sous Windows seulement sous Dos et sans doute pas sous Unix

Discussions similaires

  1. [ST6] Besoin d'aide code assembleur
    Par doutsie dans le forum Autres architectures
    Réponses: 16
    Dernier message: 06/02/2006, 16h30
  2. Editer/colorer syntaxiquement du code assembleur
    Par gnogno dans le forum Langage
    Réponses: 8
    Dernier message: 26/09/2005, 22h34
  3. Réponses: 5
    Dernier message: 21/12/2004, 18h12
  4. Outils d'analyse statique de code assembleur ?
    Par atomic dans le forum Assembleur
    Réponses: 4
    Dernier message: 11/06/2004, 11h42
  5. Peut-on faire du son juste avec du code assembleur ?
    Par Rick1602 dans le forum Assembleur
    Réponses: 7
    Dernier message: 26/03/2004, 17h39

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