L'assembleur
Il
existe de nombreux assembleurs. Les plus connus sont MASM (Macro
Assembler) de Microsoft et TASM (Turbo Assembler) de Borland. Mais
ce ne sont pas les meilleurs : ils sont payants, et la syntaxe utilisée
pour l'asm et horrible et illogique. Il existe aussi de nombreux
assembleurs gratuits. Celui que nous allons utiliser lors de cette
initiation est NASM ( Netwide Assembler ). C'est celui que j'utilise.
Il est complet (instructions Pentium et MMX), gratuit, bien documenté
(y compris la documentation de toutes les instructions supportées),
et possède une syntaxe logique et agréable à
lire. Le seul hic, c'est qu'il n'est pas encore en version finale
: la dernière version est la 0.98. Mais il est parfaitement
utilisable et ne possède pas ou très peu de bugs.
Téléchargez-le sans plus attendre !
Le linker
L'assembleur ne créé
pas un fichier exécutable (.exe) directement, mais produit
un fichier objet. Un fichier objet contient des instructions
assemblées, et le nom des symboles (fonctions, variables,
etc...) utilisés. Ce fichier n'est pas exécutable
directement. C'est le linker qui va se charger de convertir le fichier
objet en fichier exécutable. Mais alors quel est son intérêt
? Pourquoi l'assembleur ne produit pas directement un fichier exécutable
? C'est parce-que le linker peut aussi combiner plusieurs
fichiers objets (pas obligatoirement créés avec le
même assembleur) pour former un seul fichier exécutable.
Cela vous permet d'inclure dans vos programmes des librairies, c'est-à-dire
un ensemble de fonctions externes au programme (par exemple il existe
des librairies qui s'occupent du son, du joystick, de l'affichage
en 3 dimensions, etc...) qui ont été crées
avec un assembleur différent, ou même avec un compilateur.
Cela vous permet aussi de séparer votre programme en plusieurs
fichiers sources (ce qui est vivement conseillé pour des
gros programmes), ce qui vous permet de mieux vous y retrouver,
et aussi d'accélérer les temps d'assemblage (seuls
les fichiers sources que vous avez modifiés sont assemblés).
Si vous n'avez pas compris ce que je viens de raconter, ne vous
inquiétez pas, vous comprendrez plus tard par la pratique.
Comme nous allons programmer en 32
bits, il nous faut un linker qui supporte le mode protégé
(voir la section mode réel et mode protégé
[BIENTOT DISPONIBLE]). Le 32 bits n'est pas à l'origine supporté
par DOS, il faut donc utiliser un DOS-EXTENDER : c'est un programme
qui permet de lancer des exécutables fonctionnant en mode
protégé (donc en 32 bits) sous DOS. Le plus simple
est d'utiliser l'environnement DJGPP : c'est le portage du compilateur
GCC du monde Linux pour DOS, créé par DJ Delorie.
Il contient un compilateur C et plein d'autres d'outils très
utiles, dont un linker 32 bits, un DOS-EXTENDER, un débogueur
(sert à trouver les erreurs dans les programmes, en l'exécutant
pas à pas), un programme "make" (vous tapez "make",
et le programme se charge d'assembler uniquement les fichiers sources
modifiés, puis de linker le tout ; mais avant il faut créer
un script indiquant les actions à effectuer : voyez la documentation),
et même un assembleur (en fait il est utilisé en interne
par le compilateur, on ne peut pas l'utiliser pour programmer en
asm directement car il possède une syntaxe plus qu'horrible
(syntaxe AT&T) et ne possède pas de documentation). Mais
surtout, il fait partie du projet GNU, c'est-à-dire qu'il
est gratuit et est livré avec ses sources.
En téléchargement :
Pour linker les fichiers objets crées
par NASM, vous devez au moins télécharger le linker.
Vous aurez également besoin du DOS-EXTENDER (en fait c'est
un serveur DPMI) CWSDPMI. Tout ceci est regroupé dans ce
fichier : asm.zip (1,84 Mo).
Ensuite, vous pouvez si vous voulez télécharger
c.zip (2,40 Mo), qui contient le compilateur
C. Il nous servira pour créer des exemples d'interfacage
de l'asm dans des programmes C.
Pour visualiser toutes les documentations de DJGPP, vous aurez
besoin de texinfo : txi390b.zip (455
Ko).
Et pour finir voici une très grosse FAQ sur DJGPP, frfaq21b.zip
(316 Ko).
Si vous voulez des versions à jour, allez
sur le site officiel de DJGPP : www.delorie.com/djgpp.
Il vous faudra télécharger :
le linker : bnuXXXb.zip
le serveur DPMI : csdpmiXb.zip
le compilateur C : gccXXXb.zip
le kit de développement : djdevXXX.zip
texinfo : txiXXXb.zip
la FAQ : frfaqXXb.zip
Les XXX représentent
les numéros de la dernière version.
Un éditeur de texte
N'importe quel éditeur
de texte peut faire l'affaire, même l'edit du DOS ou le bloc-notes
de Windows.
Côté matériel
Il vous faut simplement un PC muni d'un processeur
Intel 386 ou supérieur. Vous devriez avoir ça... :)
Ne vous inquiétez pas : un programme écrit pour le
386 fonctionnera sans problème sur un Pentium ; par contre
l'inverse n'est pas vrai. En effet, chaque nouvelle génération
de processeur apporte de nouvelles instructions, mais ne modifie
pas l'usage des instructions qui existaient déjà (heureusement
d'ailleurs).

|
Copyright 2000 Jean-Rémy Lacharnay.
Je ne pourrais être tenu pour responsable des éventuelles conséquences
que l'exécution des exemples fournis peut avoir sur votre machine (plantages,
pertes de données, etc...).
|
|
|