2004-2007, Pierre Jourlin. (document sous contrat Creative Commons)
Introduction à la programmation en
assembleur
(processeurs 64 bits de la famille 80x86)
2004-2007, Pierre Jourlin
Institut Universitaire Professionnalisé de Génie Informatique et Mathématique
Université d'Avignon et des Pays de Vaucluse
page 1 sur 43
2004-2007, Pierre Jourlin. (document sous contrat Creative Commons)
Paternité - Partage des Conditions Initiales à l'Identique 2.0 France
Vous êtes libres :
●de reproduire, distribuer et communiquer cette création au public
●de modifier cette création
●d'utiliser cette création à des fins commerciales
Selon les conditions suivantes :
Paternité. Vous devez citer le nom de l'auteur original.
Partage des Conditions Initiales à l'Identique. Si vous
modifiez, transformez ou adaptez cette création, vous n'avez le
droit de distribuer la création qui en résulte que sous un contrat
identique à celui-ci.
●A chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les
conditions contractuelles de mise à disposition de cette création.
●Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des
droits.
Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur
: copies réservées à l'usage privé du copiste, courtes citations, parodie...)
Ceci est la Résumé Explicatif du Code Juridique (la version intégrale du contrat, voir chapitre 14)
NOTE IMPORTANTE : Ce document est loin d'être parfait... Si vous
constatez des erreurs ou si vous avez des suggestions pour l'améliorer,
n'hésitez pas à contacter l'auteur par email :
Pierre.Jourlin@univ-avignon.fr
page 2 sur 43
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
2004-2007, Pierre Jourlin. (document sous contrat Creative Commons)
15.1 Premiers pas................................................................................................................................39
14. Contrat Creative Commons...........................................................................................................40
page 4 sur 43
2004-2007, Pierre Jourlin. (document sous contrat Creative Commons)
page 5 sur 43
1 / 43 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!