Architecture d’Ordinateurs
Introduction Pratique Assembleur
Introduction
L’objectif de ce document est de donner les d´etails pratiques pour ´ecrire, compiler et ex´ecuter les premiers
programmes en Assembleur. On va travailler sur la machine sirius o`u on dispose du compilateur nasm. Pour
se connecter `a sirius, d´emarrer l’ordinateur sous Linux. Dans la fenˆetre “Gestionnaire de bureaux GNOME”
il faut choisir Action et apr`es “Connexion distante via XDMCP”. Choisir sirius comme hˆote et se connecter.
D’abord, il faut cr´eer un r´epertoire TP1_NOM_PRENOM o`u on peut cr´eer le fichier bonjour.nasm dans lequel
on va ´ecrire nos programmes. Je vous conseille d’utiliser l’´editeur Kate car il permet de faire la coloration
syntaxique (si besoin, il faut s´electionner Tools→Highlighting→Assembler→Intel X86 nasm).
Voici un premier exemple de programme qui affiche la chaˆıne Bonjour !
1 g l o b a l main ; c e c i e s t un commentaire
2 ex t er n p r i n t f
3 SECTION .data
4 bonjour : db ”Bo nj ou r ! ” , 1 0 , 0 ; 10 =c a r a c t `e r e ASCI Line Feed ( l e s au t de l i g n e ”\n ” en C)
5; 0 = c a r a c t `e r e pour marquer l a f i n de c haˆı ne ( pour p r i n t f )
6 SECTION . t e x t
7 g l o b a l main
8 main :
9push ebp
10 mov ebp ,esp
11 pushad
12
13 pushad
14 push dword bonjour ; on mets l ’ a d r e s s e de l a c haˆı n e dans l a p i l e
15 c a l l printf
16 popad
17 add esp , 4 ; pop s ta c k ( d´e p i l e r ) une f o i s
18
19 popad
20 xor eax ,eax ; r e t u r n v a l u e = 0
21 mov esp ,ebp
22 pop ebp
23 ret
Notons que les lignes 1-3, 6-11 et 19-23 ne doivent pas ˆetre modifi´ees dans les programmes que vous
´ecrivez ensuite. Pour compiler ce programme, on va cr´eer dans le mˆeme r´epertoire un fichier Makefile qui
contient :
a l l :
[TAB] nasm −f e l f −g bonjour . nasm
[TAB] gcc −ggdb −o bonjour bonjour .o
Dans ce fichier Makefile, [TAB] fait r´ef´erence `a la touche Tabulation. Ouvrez une console (terminal) est
aller dans le r´epertoire TP1_NOM_PRENOM qui contient ces deux fichiers (Makefile et bonjour.nasm). Tapez
make pour compiler et ./bonjour pour ex´ecuter.
Modifier le fichier bonjour.nasm afin de r´esoudre les exercices de TP1.
Indications : Pour l’exercice 1 du TP1, on utilise l’instruction mov (pour mettre les valeurs de aet b
dans les registres EAX et EBX), suivie par cmp (cet instruction compare deux registres – EAX et EBX – et mets
le r´esultat dans le registre flags), suivi par une instruction jle (Jump if Lower or Equal – au cas o`u le
r´esultat stock´e dans le registre flags indique que la valeur de EAX est inf´erieure `a celle de EBX, le programme
effectue un saut).
Pour avoir des renseignements sur une instruction, vous pourriez consulter le cours, ainsi que des ma-
t´eriaux sur Internet, e.g. une liste d’instructions se trouve `a en.wikipedia.org/wiki/X86_instruction_
listings
TP Architecture des ordinateurs, M2 CCI, Universit´e d’Angers – 2009-2010 Daniel Porumbel