la programmmation en assembleur resume table des matieres

publicité
LA PROGRAMMMATION EN ASSEMBLEUR
J. RIVIERE
RESUME
L'étude de l'assembleur apporte une compréhension détaillée des
mécanismes de l'ordinateur et, de ce fait, constitue un élément
fondamental de réflexion sur la manière de programmer en langage
évolué, Elle ne saurait donc être omise dans la. formation de
l'informaticien.
La pratique de l'assembleur s'avère, malgré la puissance des langages
évolués, encore indispensable lorsqu' existent des contraintes de temps
d e réponse (certains grands programmes, systèmes d'exploitation,
compilateurs, temps réel...) ou bien de taille mémoire (minis et moyens
ordinateurs). ou encore des contraintes dues à l'insuffisance des
ressources logicielles (Fortran, Basic).
Par ailleurs, les utilisateurs de la micro-informa,tique trouveront
fréquemment dans la pratique de l'assembleur la seule solution à leurs
problèmes.
Cet ouvrage s'adresse aux étudiants et praticiens qui souhaitent
approfondir leurs connaissances en informatique, Constitué de chapitres
courts commençant à partir de remarques très simples sur une
calculette, il conduit peu à. peu le lecteur, notamment grâce à des
exercices corrigés, des notions de base de structure machine à l'étude de l'assembleur et du macro-langage. Il pourra bien
évidemment être utilisé comme manuel de référence et d'enseignement concernant la gamme des machines prises pour exemples
(séries IBM 370, 3000 et 4000) mais il a été conçu comme un guide général pour conduire sainement toute programmation en
assembleur.
TABLE DES MATIERES
PREMIERE PARTIE
1
GENERALlTES
3
3
5
7
8
8
UNE MACHINE SIMPLE
1.1
Etude d'une calculatrice de poche
1.2
Etude d'une calculatrice avec mémoire
1.3
De la calculatrice à l'ordinateur
1.3.1
Structure des instructions-machine
1.3.2
Mécanisme de reconnaissance et d'enchaînement des Instructions
1.4
Conclusion sur la machine simple
1.5
L'ordinateur, présentation classique
10
11
2
CODAGE DES INFORMATIONS
2.1
Les systèmes de numération
2.2
Les changements de bases
2.3
Intérêt des systèmes hexadécimal et octal
2.4
L'arithmétique en bases 2 et 16
2.5
Représentation interne des données
2.5.1
La mémoire
2.5.2
Représentation des données non numériques
2.5.3
Représentation des données numériques
A)
La virgule fixe
B)
La virgule flottante
C)
Les représentations décimales
Exercices
13
14
15
16
17
17
17
18
19
20
23
25
26
3
ADRESSAGE ABSOLU, ADRESSAGE RELATIF
27
3
ADRESSAGE ABSOLU, ADRESSAGE RELATIF
3.1
Généralités
3.2
Adressage basé
3.3
Adressage indexé
3.4
Adressage direct
3.5
Adressage indirect
3.6
Adressage immédiat
27
27
28
29
30
30
31
4
STRUCTVRE DES IBM 360/370
4.1
La mémoire
4.2
Les registres
4.3
Le PSW
4.3.1
Le PSW en mode BC
4.3.2
Le PSW en mode EC
32
32
32
33
33
34
5
LE LANGAGE MACHINE
5.1
Format des instructions-machine
5.2
Catégories d'instructions
5.3
Ecriture d'un programme en langage machine
36
36
38
38
6
LE LANGAGE ASSEMBLEUR
6.1
Caractéristiques des langages assembleurs
6.2
Définitions
6.3
Le processus d'assemblage
6.3.1
Le compteur d'emplacements
6.3.2
Adressage symbolique et références absolues
6.3.3
La table des symboles
6.3.4
Assemblage d'une instruction
6.4
Phases d'exécution d'un programme
42
42
43
43
44
45
45
46
47
DEUXIEME PARTIE
L'ASSEMBLEUR 360/370
7
ELEMENTS DE BASE
7.1
Généralités et présentation du programme
7.2
Eléments du langage assembleur
7.2.1
Les valeurs d'auto-définition
7.2.2
Les littéraux
7.2.3
L'attribut-longueur
7.3
Les expressions
51
51
52
53
53
54
55
8
DIRECTIVES DE DEFINITION DE SYMBOLES
8.1
Définition de constante DC
8.2
Les constantes d'adresse
8.3
Directive de réservation de mémoire DS
8.4
Directive d'équivalence EQU
Exercices
58
58
62
64
65
66
9
ECRITURE DES ADRESSES EN ASSEMBLEUR
9.1
Base implicite, base explicite
9.2
Ecriture des facteurs
9.3
Règles d'alignement
Exercices
67
67
68
69
71
10
LES INSTRUCTIONS EN ASSEMBLEUR – GENERALITES
10.1
Notation
10.2
Codes-opération mnémoniques
72
72
73
11
ARITHMETIQUE EN VIRGULE FIXE ET MOUVEMENTS
11.1
Chargement et rangement des registres généraux
LR, L, LH, LCR, LPR, LNR, LTR, LM, LA, IC, ICM
ST, STH, STM, STC, STCM
11.2
Instructions d'arithmétique en virgule fixe
75
75
11.3
AR, A, AH, SR, S, SH, MR, M, MH, DR, D
Les comparaisons en virgule fixe
CR, C, CH
Addition et soustraction « logiques»
ALR, AL, SLR, SL
11.5
Mouvements
MVI, MVC, MVCL, MVN, MVZ, MVO
Exercices
11.4
12
LES BRANCHEMENTS
12.1
Le code-condition
12.2
Instructions testant le CC : BCR et BC
78
80
80
81
83
84
84
84
12.2
13
Instructions testant le CC : BCR et BC
Mnémoniques étendus
12.3
Instructions testant la valeur prise par un registre
BCTR, BCT,BXHet BXLE
12.4
Branchements avec retour
BALR,BAL,EX
Exercices
84
LES OPERATIONS LOGIQUES
13.1
Les fonctions logiques
13.2
Les instructions logiques
Intersection
NR, N, NI, NC
Réunion
OR, O, OI, OC
Disjonction
XR, X, XI, XC
13.3
Les comparaisons logiques
CLR, CL, CLI, CLC, CLM, CLCM
13.4
Les comparaisons logiques particulières
CS, CDS, TM
Exercices
90
90
90
91
91
92
93
86
88
89
94
95
14
LES DECALAGES
14.1
Instructions «logiques» et instructions «arithmétiques»
14.2
Décalages algébriques
14.3
Décalages «logiques»
14.4
Instructions de décalages
Décalages algébriques : SLA, SLDA, SRA, SRDA
Décalages logiques :
SLL, SLDL, SRL, SRDL
Règles communes aux décalages logiques et algébriques
Exercices
97
97
97
99
99
99
99
100
100
15
PROBLEMES
15.1
Tri
15.2
Consultation dichotomique d'une table
101
101
104
16
L'ARITHMETIQUE DECIMALE
16.1
Généralités
16.2
Les instructions
AP,ZAP,SP,MP,DP,CP,SRP
108
108
109
17
L'ARITHMETIQUE FLOTTANTE
17.1
Généralités
17.2
Instructions
LER, LE, LDR, LD, LTBR, LTDR, LCER, LCDR, LCDR, LRER,
AER,AE,ADR,AD,AXR, AUR, AU, AWR, AW,
SER, SE, SDR, SD, SXR SUR, SU, SWR, SW,
MER,ME,MDR,MD,MXDR,MXD, MXR, DER, DE, DDR, DD,
HER, HDR
STE, STD, CER, CE, CDR,CD
111
111
112
18
INSTRUCTIONS DE CONVERSIONS DE REPRESENTATIONS
18.1
Généralités
18.2
Instructions de conversion PACK, UNPK, CVB, CVD
18.3
Edition ED, EDMK
18.4
Traduction TR, TRT
Exercices
114
114
115
116
117
118
19
INTERRUPTIONS ET ENTREES-SORTIES
19.1
Interruptions
19.1.1 Principe des interruptions
120
120
120
19.1.2
19.1.3
19.1.4
19.1.5
19.2
20
Mécanisme des interruptions
Masque des interruptions
Les interruptions dues au programme
Instructions liées aux interruptions
SPM, SVC, MC, STCK, TS
Les entrées-sorties
19.2.1 Définitions et mécanismes
19.2.2 Informations nécessaires à une entrée-sortie
19.2.3 Entrée-sortie au niveau logique
DIRECTIVES CONCERNANT L'ADRESSAGE ET LA STRUCTURE D'UN PROGRAMME
20.1
Définition et chargement des registres de base
A)
USING
B)
Chargement des registres de base
C)
DROP
120
121
121
123
124
124
125
126
128
128
128
130
131
20.2
20.3
20.4
20.5
Sectionnement des programme
20.2.1 Symboles internes, symboles externes
20.2.2 Directives de sectionnement
START,CSECT,DSECT,COM
20.2.3 Edition de liens
20.2.4 Chargement
20.2.5 Communication entre sections d'un même module source
20.2.6 Conclusion sur le sectionnement
Directives affectant le compteur d'emplacements
ORG, LTORG, CNOP.
Directives de contrôle du listing
ICTL, ISEQ, COPY, EJECT, SPACE, PRINT, TITLE, PUNCH,
REPRO
Directives utilisables sous OS seulement
PUSH,POP
131
131
132
135
136
137
138
140
140
141
21
LES SOUS-PROGRAMMES
21.1
Sous-programme et section de contrôle
21.2
Branchement à un sous-programme et retour
21.3
Passation de paramètres
21.4
Conventions de liaisons entre le système et le programme
142
143
143
144
147
22
ASSEMBLAGE CONDITIONNEL ET MACRO-INSTRUCTIONS
22.1
Assemblage conditionnel
22.1.1 Variables et constantes d'assemblage conditionnel
22.1.2 Les noms d'étiquettes
22.1.3 Directives d'affectation SETx
22.1.4 Directives de branchement à des étiquettes d'assemblage
AIF, AGO
22.1.5 Directive ANOP
22.1.6 Exemples d'utilisation de l'assemblage conditionnel
22.2
Les macro-procédures
22.2.1 Transmission d'arguments
22.2.2 Application
22.2.3 La directive MEXIT
22.2.4 La directive ACTR
22.2.5 La directive MNOTE
22.2.6 Les commentaires
22.2.7 Les fonctions intrinsèques
&SYSLIST, &SYSNDX, &SYSECT, &SYSPARM,
&SYSTIME,&SYSDATE
22.2.8 Les attributs
Type T', Longueur L', Partie entière l', Nombre de caractères N', Nombre
d'éléments d'une liste N', Longueur L', Facteur d'échelle S'
22.2.9 Exemples de macro-définitions
152
152
152
153
154
156
CONSEILS DE PROGRAMMATION
23.1
Structure d'un traitement
23.1.1 Programmation modulaire
167
167
167
23
156
156
157
158
159
159
159
160
160
160
162
164
23.1.2 Présentation et mise en page
Structure d'un module
23.2.1 Prologue et épilogue
23.2.2 Corps du programme
167
168
168
168
Conclusion
170
CORRIGES DES EXERCICES
ANNEXES
Table de codage des caractères
Index alphabétique des instructions
Directives de l'assembleur
Caractéristiques des constantes
Mnémoniques étendus
173
179
180
182
185
185
186
23.2
23.3
BIBLIOGRAPHIE
INDEX
TOP
187
189
Téléchargement