Lanoaoe Assembleur PC



 


Paul A. Carter 20 mars 2005
Table des matieres
Preface V
2 Bases du Langage Assembleur 29
3 Operations sur les Bits 49
4 Sous-Programmes 69
5 Tableaux 99
6 Virgule Flottante 121
7 Structures et c++ 149
A lnstructions 80x86 181
lndex 190
Ressources sur Internet
1.1 Systemes Numeriques
1.1.1 Decimal
1.1.2 Binaire
1.1.3 Hexadecimal
1.2 Organisation de l'Ordinateur
1.2.1 Memoire
1.2.2 Le CPU (processeur)
1.2.3 La famille des processeurs 80x86
1.2.4 Regitres 16 bits du 8086
1.2.5 Registres 32 bits du 80386
1.2.6 Mode Reel
1.2.7 Mode Protege 16 bits
1.2.8 Mode Protege 32 bits
1.2.9 Interruptions
1.3 Langage Assembleur
1.3.1 Langage Machine
1.3.2 Langage d'Assembleur
1.3.3 Operandes d'Instruction
1.3.4 Instructions de base
1.3.5 Directives
1.3.6 Entrees et Sorties
1.3.7 Debogage
1.4 Creer un Programme
1.4.1 Premier programme
1.4.2 Dependance vis ä. vis du compilareur
1.4.3 Assembler le code
1.4.4 Compiler le code C
1.4.5 Lier les fichiers objets
1.4.6 Comprendre un listing assembleur
1.5 Fichier Squelette
1.5. FlCHlliR SQUliLliTTli 27
2.1 Travailler avec les Entiers
2.1.1 Representation des entiers
2.1.2 Extension de signe
2.1.3 Arithmetique en complement ä. deux
2.1.4 Programme exemple
2.1.5 Arithmetique en precision etendue
2.2 Structures de Contröle
2.2.1 Comparaison
2.2.2 Instructions de branchement
2.3.1 Instructions if
2.3.3 Boucles do while
2.4 Exemple : Trouver des Nombres Premiers
2.4. liXliMPLli : TROU\!liR DliS NOMHRliS PRliMlliRS 47
3.1 Operations de Decalage
3.1.1 Decalages logiques
3.1.2 Utilisation des decalages
3.1.3 Decalages arithmetiques
3.1.4 Decalages circulaires
3.1.5 Application simple
3.2 Operations Booleennes Niveau Bit
3.2.1 L'operation ET
3.2.2 L'operation OU
3.2.5 L'instruction TEST
3.2.6 Utilisation des operations sur les bits
3.3 Eviter les Branchements Conditionnels
3.4 Manipuler les bits en C
3.4.1 Les operateurs niveau bit du C
3.4.2 Utiliser les operateurs niveau bit en C
3.5 Representations Big et Little Endian
3.5. RliPRESliNTA.TlONS HlG liT LlTTLli liNDlA.N 61
3.6 Compter les Bits
3.6.1 Methode une
3.6.2 Methode deux
3.6.3 Methode trois
4.1 Adressage Indirect
4.2 Exemple de Sous-Programme Simple
4.2. liXliMPLli Dli SOUS-PROGRA.MMli SlMPLli 71
4.3 La pile
4.4. LliS lNSTRUCTlONS CA.LL liT RliT 73
4.4 Les Instructions CALL et RET
4.5 Conventions d'Appel
4.5.1 Passer les parametres via la pile
4.5.2 Variables locales sur la pile
4.6 Programme Multi-Modules
4.6. PROGRA.MMli MULTl-MODULliS 83
4.7 Interfacer de l'assembleur avec du C
4.7.1 Sauvegarder les registres
4.7.2 Etiquettes de fonctions
4.7.3 Passer des parametres
4.7.4 Calculer les adresses des variables locales
4.7.5 Retourner des valeurs
4.7.6 Autres conventions d'appel
4.7.7 Exemples
4.7.8 Appeler des fonctions C depuis l'assembleur
4.8 Sous-Programmes Reentrants et Recursifs
4.8.1 Sous-programmes recursifs
4.8.2 Revision des types de stockage des variables en C
5.1 Introduction
5.1.1 Definir des tableaux
5.1.2 Acceder aux elements de tableaux
5.1.3 Adressage indirect plus avance
5.1.4 Exemple
5.1.5 Tableaux Multidimensionnels
5.2 Instructions de Tableaux/Chaines
5.2.1 Lire et ecrire en memoire
5.2.2 Le prefixe d'instruction REP
5.2.3 Instructions de comparaison de chaines
5.2.4 Les prefixes d'instruction REPx
5.2.5 Exemple
6.1 Representation en Virgule Flottante
6.1.1 Nombres binaires non entiers
6.1.2 Representation en virgule flottante IEEE
6.2 Arithmetique en Virgule Flottante
6.2. A.RlTHMETlQUli liN \!lRGULli FLOTTA.NTli 127
6.3 Le Coprocesseur Arithmetique
6.3.1 Materiel
6.3.2 Instructions
6.3.3 Exemples
6.3.5 Lire un tableau depuis un fichier
6.3.6 Renchercher les nombres premiers
7.1 Structures
7.1.1 Introduction
7.1.2 Alignement en memoire
7.1.3 Champs de Bits
7.1.4 Utiliser des structures en assembleur
7.2 Assembleur et C++
7.2.1 Surcharge et Decoration de Noms
7.2.2 References
7.2.3 Fonctions inline
7.2.4 Classes
7.2.5 Heritage et Polymorphisme
0 vtablep • 4
7.2.6 Autres fonctionnalites C++
A.1 Instructions hors Virgule Flottante
A.2 Instruction en Virgule Flottante
A..2. lNSTRUCTlON liN \!lRGULli FLOTTA.NTli 189