2004-2007, Pierre Jourlin. (document sous contrat Creative Commons)
Table des matières
Avant-Propos........................................................................................................................................6
1. Introduction.......................................................................................................................................6
1.1. Petits rappels sur la structure des ordinateurs............................................................................7
1.2. Qu'est-ce qu'un programme en langage machine ?...................................................................9
1.3. Qu'est-ce qu'un programme en assembleur ?..........................................................................10
2. Arithmétique Entière......................................................................................................................13
2.1. Un mot sur les registres généraux et leur capacité..................................................................13
2.2. Entiers signés et non-signés....................................................................................................14
2.3. Débordements.........................................................................................................................15
3. Instructions de branchement ..........................................................................................................17
3.1. Le registre RIP (Re-Extended Instruction Pointer).................................................................17
3.2. Branchement inconditionnel : instruction jmp (de « jump » : sauter).....................................17
3.3. Branchements conditionnels ..................................................................................................18
4. Structure des données : pointeurs, tableaux, matrices, etc. ...........................................................19
4.1. Registres « pointeurs »............................................................................................................19
4.2. Mode d'adressage « indirect ».................................................................................................19
4.3 Mode d'adressage « indirect indexé »......................................................................................20
4.4. Indexations complexes............................................................................................................21
5. Comparaisons et autres branchements conditionnels.....................................................................21
6. Équivalents des structures algorithmiques avancées......................................................................24
7. Utilisation de la pile........................................................................................................................25
8. Procédures......................................................................................................................................26
8.1 Les instructions call et ret........................................................................................................26
8.2 Les interruptions et les exceptions ..........................................................................................29
9. Autres instructions d'arithmétique entière......................................................................................30
9.1 Multiplication et division sur des entiers.................................................................................30
9.1.1. Multiplication non signée............................................................................................30
9.1.2. Division non signée ....................................................................................................31
9.2 Multiplication et division sur des entiers signés......................................................................31
9.2.1 Multiplication signée...................................................................................................31
9.2.2 Division signée............................................................................................................32
10. Opérateurs logiques......................................................................................................................32
11. Calculs en virgule flottante...........................................................................................................32
11.1 Introduction............................................................................................................................32
11.2. La norme IEEE 754...............................................................................................................33
11.3 Les registres du processeur à virgule flottante (x87).............................................................34
11.4 Principales instructions de calcul...........................................................................................34
11.5 Comparaisons et branchements conditionnels.......................................................................35
12. Parallélisme (MMX, SSE, 3DNow!)............................................................................................36
12.1 Registres MMX......................................................................................................................36
12.2 Instructions MMX..................................................................................................................36
13. Bibliographie................................................................................................................................37
15. Travaux Pratiques : Programmer en Assembleur sous GNU/Linux.............................................39
page 3 sur 43