Partage
  • Partager sur Facebook
  • Partager sur Twitter

Assembleur Nasm sous linux

Différentes syntaxes du langage d'assemblage

    16 juin 2021 à 9:25:03

    Salut tout le monde,

    Je commence à apprendre l'assembleur et j'ai quelques questions concernant les outils utilisés:

      1/ Existe t-il plusieurs syntaxes au langage d'assemblage? car j'ai essayé de tester plusieurs programmes (qui sont normalement compilable avec Nasm) mais sans succés.

    J'ai aussi trouvé différentes manières de compiler les fichiers sources mais je ne comprends pas où il faut utiliser tel ou tel options.

       2/ Sachant qu'en cours on utilise emu8086 sur windows, existe t-til quelque chose d'équivalent sur linux (qui me permetterait d'exécuter les mêmes codes sans changer la syntaxe)?

       3/ Y a t-il une différence si je programme sous windows ou sous linux (y a t-il des options valide dans un OS et invalide dans l'autre)?

       4/ Dans le cas où programmer sur windows serait la meilleure solution, quel IDE(gratuit) me conseillerez vous?

    Merci à tous ceux qui prendront le temps de répondre.

    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2021 à 15:54:02

      Bonjour.

      Bien sûr il existe plusieurs syntaxes puisque l'assembleur est fonction du type de processeur et du système d'exploitation donc elles sont différentes s'il s'agit de 32 ou 64 bits s'il s'agit d'un processeur Intel ou ARm ou AMD ou autres.

      Pouvez vous indiquer la nature du processeur de votre ordinateur et je pense que vous êtes sous Linux.

      Montrer un exemple de votre code et les erreurs rencontrées pour voir pourquoi il y a erreur.

      Je déconseille d'utiliser un émulateur pour l'assembleur sauf si vous voulez programmer en assembleur 16 bits comme il y a 40 ans !!!

      cdlt.
      • Partager sur Facebook
      • Partager sur Twitter
        16 juin 2021 à 16:19:50

        Salut.

        Merci pour d'avoir répondu.

        J'ai un Intel Core i3 7th Gen et je suis en dual boot mais j'essaie de faire le plus de choses possibles avec Linux pour me familiariser avec.

        Hier j'ai pu générer un fichier .com que je n'ai pas pu exécuter (permission non accordée) 

        J'ai aussi eu une erreur avec un autre fichier:

        BITS 16
        ORG 0x0100
        SEGMENT .data
        txt db 'MON PREMIER PROGRAMME NASM$'
        SEGMENT .text
         MOV AH,9 ; fonction 9 de int21
         MOV DX,txt ; adresse du début de la phrase
         INT 21h ; écrit la phrase
         MOV AX,4C00h ; fin programme
         int 21h
        

        L'erreur obtenue:(error: parser: instruction expected) ça vient de la ligne 2.  

        En fait, pour l'instant pour s'initier au langage d'assemblage, on apprend le 8086 en 16 bits (comme il y a 40 ans) mais est-il possible de compiler ces programmes avec les compilateurs qu'on trouve aujourd'hui comme le NASM?

        Merci d'avance.

        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2021 à 19:14:40

          Merci umfred pour la réponse.

          Donc si je comprends bien je devrais exécuter le fichier sur DOSBOX.

          Mais comment faire ça?

          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2021 à 9:57:34

            "
              PaulDurelin a écrit:

              Bien sûr il existe plusieurs syntaxes puisque l'assembleur est fonction du type de processeur et du système d'exploitation donc elles sont différentes s'il s'agit de 32 ou 64 bits s'il s'agit d'un processeur Intel ou ARm ou AMD ou autres.Pouvez vous indiquer la nature du processeur de votre ordinateur "

            Euh que ça soit Intel ou AMD , les syntaxes sont exactement les mêmes...
            Le but du x86 c'est la rétrocompatibilité ,techniquement tu pourrais faire tourner ton MS-DOS sur ta machine derniers cri.

            De même que ça soit du Linux ou Windows ,tu peux tout les deux utiliser la même syntaxe (par exemple NASM).

            Bref la dif entre Linux et windows c'est les call conventions et les appel système, donc rien n'a voir avec la syntaxe
            La dif avec Intel et AMD est très faible , a part quelque instruction spécifique (mais ça n'a rien n'a voir avec la syntaxe).

            -
            Edité par HelbaSama 17 juin 2021 à 10:01:44

            • Partager sur Facebook
            • Partager sur Twitter
              17 juin 2021 à 11:34:26

              Merci d'avoir répondu HelbaSama

              Qu'en est t-il du processeur 8086?

              Existe t-il un émulateur disponible sur Linux?

              J'ai lu qu'on pouvait utiliser DosBox mais je ne sais pas comment. Existe t-il un tuto qui explique un peu comment cela fonctionne?

              • Partager sur Facebook
              • Partager sur Twitter
                17 juin 2021 à 13:39:02

                Tu peux utiliser Nasm pour faire du 8086 donc ça reste compatible niveau "syntaxe".

                Pour le 8086 , en soit tu peux en faire sur ton PC (un exacutable windows ou Linux) , les instructions 8086 marche sur PC (enfin en asm , le code binaire n'est pas à 100% compatible en mode 32/64 bits) , et donc en émulateur tu as
                Tu as fake86 : http://fake86.rubbermallet.org/?downloads
                Tu as aussi comme tu dis DosBox .
                Et en soit les émulateurs consoles (qui embarque du compatible x86).

                J'ai pas de tuto en tête , je ne fais plus d'asm sur PC depuis belle lurette , et encore moins pour MS-DOS ;)
                • Partager sur Facebook
                • Partager sur Twitter

                Assembleur Nasm sous linux

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown