Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pour commencer [ Divers / Général ] (didoux95)

mardi 12 juin 2007 à 13:54:03 | pour commencer

didoux95

Bonjour a tous.
j'ai des connaissance en Java et j'aimerais apprendre l'Assembleur. je me suis déjà un peu rensseigné sur le net et j'ai trouver quelque tutos. Cependant, les avis restent assez partagés sur quel compilateur utiliser et aussi sur quel éditeur utiliser. J'aimerais avoir vos avis pour débuter en Assembleur dans les meilleurs conditions ;-)

merci.

mardi 12 juin 2007 à 15:17:28 | Re : pour commencer

Nasman

Bonjour,

Personnellement j'utilise Nasm, assembleur multi plateforme qui permet de compiler sous plusieurs formats, omf, coff, coff pour windows, binaire.
Il est simple d'emploi et est téléchargeable sur sourceforge.net

Pour l'édition des liens j'utilise alink (télechargeable sur le même site)

Pour la compilation des ressources j'utilise gorc

Enfin pour travailler de façon plus conviviale j'utilise ConText comme IDE.
Ce dernier permet d'éditer le programme (éditeur de texte) mais également possède des boutons d'action paramètrables pour lancer la compilation, l'édition de liens etc.

Un conseil pour débuter, regarde les sources les plus simples pour comprendre les différentes instructions en assembleur. L'assembleur n'est pas un langage très compliqué (les instructions sont en nombre limité), ce qui complique les choses c'est l'utilisation des fonctions du système d'exploitation (en bien plus grand nombre).
Un programme assembleur utilisant les interruptions DOS ou les API windows sera à reprendre quasiment en entier pour fonctionner sous unix et vice versa.

C'est un langage très proche de la machine, des instructions pour un Pentium ne fonctionneront pas sur un microprocesseur plus archaïque.

A+

mardi 12 juin 2007 à 16:11:48 | Re : pour commencer

didoux95

slt.
Merci pour ta réponse. Est ce que tu pourait m'en dire plus sur Nasm (je l'ai téléchargé et je me retrouve avec trois fichiers : deux .exe. et un .FICHIER donc je suis un peu perdu).

merci.

mardi 12 juin 2007 à 16:29:02 | Re : pour commencer

_dune2_

Membre Club
Salut,


tu trouveras un tutorial pour nasm sur ce lien :
[ Lien ]

Ne pas oublier que google est ton meilleur ami ;)

Gentoo... que du bonheur ...

mardi 12 juin 2007 à 16:46:26 | Re : pour commencer

Nasman

Rebonjour didoux95,

S'il y a plusieurs fichiers exécutables c'est que chacun est conçu pour fonctionner sur des environnements différents:
Si tu travailles sur une plateforme Windows 32bits (ce que j'estime fort probable), c'est le Win32 binaries qui t'interesse. Si tu travailles sous DOS ou Linux tu devras télécharger DOS binaries ou Linux RPM binaries.

Sous windows tu auras l'exécutable nasmw.exe (assembleur) et ndisasmw.exe (desassembleur).
Je te conseille de télécharger le chm manual pour savoir utiliser nasm.
Ce dernier fonctionne en mode console (ligne de commande) par exemple:

nasmw -fbin monfichier.asm   donne un fichier binaire pur (pour .com .sys)
nasmw -fobj monfichier.asm   donne un fichier .obj (format omf) - pourra alors transformé à l'édition de liens en exe, dll
d'autre formats sont disponibles pour Linux etc...

Si tu veux t'exercer à la compilation avec Nasm, regarde une de mes précédentes sources
http://www.asmfr.com/codes/CREATION-DIFFERENTS-EXECUTABLES-AVEC-NASM-ALINK_37036.aspx

A+


mardi 12 juin 2007 à 17:30:20 | Re : pour commencer

didoux95

Bonjour.
j'ai regarde le lien que tu m'a passé et ...
c'est pas contre toi, mais j'ai rien compris. peut-être est ce par ce que je suis sur l'assemble depuis ce matin mais bon je suis un peu larguer.
Ce que j'ai compris : il faut compiler le .asm anvant d'en faire un .exe un .dll ou autre.
Ce que je n'ai pas compris: comment utiliser Alink pour "convertir" le fichier compilé en .exe (donc, entre autre, utiliser ta source).

je te remerci de bien vouloir m'aiclairer parceque je dois avouer que là j'arrive plus a suivre lol.
merci.

mardi 12 juin 2007 à 17:35:05 | Re : pour commencer

sheorogath

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
[ Lien ]
telecharge naside (l'executable pas la version java qui est pas au point)

ensuite il te fait tout automatiquement meme le link ^^

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"

mercredi 13 juin 2007 à 09:01:38 | Re : pour commencer

Nasman

Réponse acceptée !

Bonjour didoux95,

Lorsque tu veux réaliser un fichier exécutable tu dois effectuer les opérations suivantes:

1) Ecrire un programme (format texte) contenant les instructions (mnémoniques) devant être exécutées pas le microprocesseur. Pour des questions de commodité les adresses ne sont généralement pas écrites en dur mais font références à des labels du style
      jne fin
      xxx
      yyy
      zzz
fin   suite du programme

Si le résultat est différent de zéro alors va à fin sinon exécute xxx, yyy et zzz

Si tu utilises des labels appartenant à un autre morceau de programme (assemblé par ailleur), il faudra que tu déclares ces label comme provenant d'un fichier externe.

2) Compiler le programme
C'est là que Nasm intervient, son rôle est de transformer les instructions sous forme de mnémoniques en octets. Par exemple
mov dx,hello devient BA 0C 01 (écriture dont la compréhension est moins évidente). BA correspond à mov dx et 0C 01 correspond à l'adresse de hello, en l'occurence l'adresse d'offset 010C. L'offset 0100 correspond au début du programme .com (c'est la directive org 0x100) et 0C (soit 12 en décimal) est la distance entre le début du programme et l'étiquette hello (c'est en fait la longueur de la section programme car hello est la première étiquette de la section de données).
Si ton programme n'utilise pas de références externes la compilation (format -fbin) te donnera quelque chose de directement exécutable (si le nom du programme compilé est xxx.com. Dans le cas contraire tu devras passer par un fichier objet qui contiendra la conversion mnémoniques/octets mais aussi les références externes nécessaires (labels externes, bibliothèques, fonctions importées).

3) Effectuer l'édition des liens.
C'est là qu'alink (ou un autre linker) intervient. Son rôle est de rassembler les différents morceaux compilés, par exemple programme principal et sous programmes, ressources et de résoudre les problèmes de références aux étiquettes. Tu pourras avoir par exemple:
alink -oPE programmeprincipal.obj sousprogramme.obj ressource.res win32.lib

Ce qui se traduit en:
crééer un exécutable windows (format PE) en rassemblant programmeprincipal.obj (déjà compilé)
sousprogramme.obj (déjà compilé)
ressourse.res (ressource compilée format .res - elle peut aussi être compilée en .obj pas GoRC)
win32.lib    librairie contenant des tas de déclarations,
 
Si le programme déclare une référence comme extern, il faut que cette même référence ait été déclarée comme global pas le module où elle se situe (pour qu'elle soit vue pas les autres modules.

J'espère que j'ai pu t'éclairer sur ce point.
Nota: dans la souce citée en référence j'ai mis les instructions de compilation et pour l'édition des liens. Ce qui est entre crochets (facultatif) sert à donner un nom de sortie spécifique (dans ce cas il faut enlever les crochets)

A+


mercredi 13 juin 2007 à 14:44:06 | Re : pour commencer

didoux95

Merci beaucoup.
je commence comprendre pas mal de choses.



Cette discussion est classé dans : utiliser, assembleur, avis, commencer


Répondre à ce message

Sujets en rapport avec ce message

commencer en assembleur [ par raidentr ] Quel est le meilleur soft pour commencer en Asm sur PC sous Windows ? Débutant : Commencer par le début [ par cire2003 ] BonjourJe viens tout juste de commencer à apprendre l'assembleur et dans les tuto que je lis, ils y a différents exemples. Je les retranscris et les c Utiliser un ActiveX dans un projet assembleur [ par vulpes87 ] BonjourDepuis un bout de temps je recherche des informations, si c'est possible d'utiliser un ActiveX dans un projet assembleur. J'ai utilié des resso OS -> passer d'ASM au C pour la programmation [ par djmoa ] Bonjour. j'ai quelques notions d'assembleur, et j'aimerai commencer la programation d'un petit OS, me basant sur des choses existant, mais je vois bea NASM et DEVCPP - fonction assembleur appellee en C/C++ [ par jean84 ] Salut a tous !Et bien comme le titre l'indique, je souhaiterai creer des fonctions en assembleur et pouvoir les appeller en C/C++ dans le meme projet. Comment faire un sleep en assembleur MIPS ? [ par Yakurena ] Bonsoir, J'aimerais faire un programme en assembleur MIPS permettant de synchroniser la saisie de caractères au clavier par l'utilisateur et leur affi SPBRG [ par blueburry ] Bonjour, je suis en train de programmer un PIC16F877 et je suis en train d'utiliser un quartz de 20 MHz. Je voudrais utiliser le registre USART en mod HELP ! apprentissage de l'assembleur HELP ! [ par scottmat ] Bonjours à tous, Je programme actuellement en VB.Net 2005 et Assembleur et langage C sous Linux [ par lapinfroid ] Bonjour a tous ,avant toute chose , je tiens a preciser que j en ai aucune notion d'assembleur Je pratique plutot le C et le JavaDans un programme C , documentation fasm [ par koma24 ] Salutje débute en assembleur et le seul assembleur que j'ai réussi a installer est fasm.Mais le problème c'est que je ne trouve pas de documentation e


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.