Vous êtes sur la page 1sur 144

Page de couverture

Systmes Informatiques I, autres douments :


Partie I: Assembleur (fragmente pour web) *)
Partie II: UNIX
Travaux pratiques
*) 1 document PDF denviron 200 kbytes pour chaque chapitre
pas de chanage hypertexte (PDF) entre documents
Table des matires
1. Introduction
2. Larchitecture du CPU Intel 8086
3. Principes dun assembleur
4. Le rpertoire dinstructions
5. Variables et expressions
6. Aspects mta-assembleur
7. Extensions de larchitecture de la famille 8086
8. Principes de lentre / sortie
Liste des instructions du CPU Intel 8086
Littrature et rfrences
Mots-cl

Systmes Informatiques I
Partie I: Assembleur
Jrgen Harms
juergen.harms@cui.unige.ch
http://cui.unige.ch
UNIVERSIT DE GENVE
Boutons dans
les documents:
dbut du chapitre fin du chapitre
page prcdente page en arrire
page suivante page dacceuil
Version 2.31 - 2000 / 01 (document PDF intgr)
S
y
s
t

m
e
s

I
n
f
o
r
m
a
t
i
q
u
e
s

I


-


A
s
s
e
m
b
l
e
u
r
Table des matires
Pour accder une page, slectionner la page avec un click de la sourris
2. 1. 2001 Version 2.31 - 2000 / 01 - Matires 1 -
Table des matires
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1
Buts (cours, document) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2
Evolution des familles de microprocesseurs . . . . . . . . . . . . . . . . . . . . 1.5
Exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6
Code-source et code-objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6
Segments et adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7
Parties principales dun programme en machine . . . . . . . . . . . . . . 1.8
Description de la zone-instructions dun programme . . . . . . . . . 1.9
LARCHITECTURE DU CPU INTEL 8086 . . . . . . . . . . . . . . . . . 2.1
Configuration dun systme Intel 8086 . . . . . . . . . . . . . . . . . . . . . . . . 2.2
Mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3
Mot-mmoire ladresse n, sexe des bytes . . . . . . . . . . . . . . . 2.3
Implantation physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4
- Plan de la mmoire (Intel 8086) . . . . . . . . . . . . . . . . . . . . . . . . . 2.4
Mmoire physique et mmoire logique . . . . . . . . . . . . . . . . . . . . . 2.5
Reprsentation externe des adresses . . . . . . . . . . . . . . . . . . . . . . . . 2.5
Gnration une adresse-bus dans le CPU . . . . . . . . . . . . . . . . . . . . 2.6
La pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7
Squence physique - squence logique . . . . . . . . . . . . . . . . . . . . . . 2.9
Instructions et donnes dun programme . . . . . . . . . . . . . . . . . . . . 2.10
Format dune opration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11
Champs du code dune opration . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11
- Oprandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11
Proprits des oprations du CPU Intel 8086 . . . . . . . . . . . . . . . . . 2.12
Diffrences entre instructions-assembleur et instructions-machine 2.13
Registres du CPU Intel 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.15
Registres-oprandes et dindexage . . . . . . . . . . . . . . . . . . . . . . . . . 2.15
Recouvrement des registres 8 et 16 bits . . . . . . . . . . . . . . . . . . 2.16
Registres de base (segment registers) . . . . . . . . . . . . . . . . . . . . . 2.17
Compteur ordinal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.17
Registre dtat (flag register) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.18
- Le rle du bit carry (report arithmtique, dcalage) . . . . . . . 2.19
Quelques oprations typiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.20
Adressage Intel 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.21
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.21
Modes dadressage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.22
Combinaison des modes (phase 1 et 2) . . . . . . . . . . . . . . . . . . . . . . 2.24
- Modes dadressage (exemples Intel 8086) . . . . . . . . . . . . . . . . . 2.25
PRINCIPES DUN ASSEMBLEUR . . . . . . . . . . . . . . . . . . . . . . . . 3.1
Assembleur : introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2
Caractristiques dun assembleur . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4
Forme gnrale dune instruction MASM . . . . . . . . . . . . . . . . . . . 3.4
Signification des champs de linstruction . . . . . . . . . . . . . . . . . . . . 3.5
- Champ dtiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5
- Champ dopration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5
- Champ doprande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6
- Champ de commentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6
Syntaxe : constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7
- Format des constantes numriques . . . . . . . . . . . . . . . . . . . . . . 3.7
- Format des chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . . 3.7
Spcification dadresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8
- Slection du mode dadressage . . . . . . . . . . . . . . . . . . . . . . . . . 3.8
Mode dadressage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9
- Calcul de ladresse effective . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9
- Recherche de loprande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10
Gnration de code-objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11
Tables de code-objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11
Segment logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11
Compteur de position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12
- Rle du compteur de position . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12
- Contrle du compteur de position . . . . . . . . . . . . . . . . . . . . . . . 3.12
- Valeur du compteur de position . . . . . . . . . . . . . . . . . . . . . . . . . 3.12
S
y
s
t

m
e
s

I
n
f
o
r
m
a
t
i
q
u
e
s

I


-


A
s
s
e
m
b
l
e
u
r
2. 1. 2001 Version 2.31 - 2000 / 01 - Matires 2 -
- Compteur de position et compteur-ordinal . . . . . . . . . . . . . . . . . 3.13
- Valeur initiale du compteur-ordinal lors de lexcution . . . . . . 3.13
Contrle des segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.14
Linstruction SEGMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.14
Association du code-objet un segment logique . . . . . . . . . . . . . . 3.15
- Dcomposition du code en segments logiques . . . . . . . . . . . . . . 3.15
- Gestion laide dun compteur de position . . . . . . . . . . . . . . . . 3.15
- Alternance entre segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.15
- Exemple: rsultat du travail de lditeur de liens . . . . . . . . . . . 3.16
Placement de segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.17
Alignement de ladresse de base dun segment . . . . . . . . . . . . . . . 3.18
Gestion des registres de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.19
Initialisation des registres de base . . . . . . . . . . . . . . . . . . . . . . . . . . 3.19
- Ralisation (assembleur et diteur de liens) . . . . . . . . . . . . . . . . 3.20
Association segments logiques - registres de base . . . . . . . . . . . . . 3.21
Gestion des registres de base, exemple . . . . . . . . . . . . . . . . . . . . . . 3.22
Contrle des segments, rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.24
Exemple dun programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.25
Dfinition de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.26
Pseudo-instructions pour la rservation et dfinition de donnes . . 3.26
- La fonction DUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.27
- Constantes-caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.27
- Formats possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.27
Rservation de donnes, exemples . . . . . . . . . . . . . . . . . . . . . . . . . 3.28
LE RPERTOIRE DINSTRUCTIONS . . . . . . . . . . . . . . . . . . . . . . . 4.1
Oprations utilisant la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2
Utilisation dune pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2
Oprations utilisant la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3
Oprations de branchement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4
Forme des instructions de branchement . . . . . . . . . . . . . . . . . . . . . 4.4
Branchements sans condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4
Branchements pour itrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4
Branchements conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5
Oprations arithmtiques & logiques . . . . . . . . . . . . . . . . . . . . . . . . . 4.6
Extension du bit de signe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9
Oprations itratives, actions sur chanes de caractres . . . . . . . . . . . 4.10
Rsum des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10
Contrle des itrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11
Contrle des bits du registre flags . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12
Diverses oprations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12
VARIABLES ET EXPRESSIONS . . . . . . . . . . . . . . . . . . . . . . . . . 5.1
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2
Composantes dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2
Dfinition dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3
- Visibilit dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3
Types de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4
Etiquettes (labels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4
Variables relogeables (variables) . . . . . . . . . . . . . . . . . . . . . . . . 5.5
Constantes (numbers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6
Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7
Fonction pour laccs au compteur de position . . . . . . . . . . . . . . . 5.7
Fonctions pour obtenir les attributs dun RECORD . . . . . . . . . . 5.7
Fonctions pour obtenir les attributs dune variable . . . . . . . . . . . . 5.8
Fonctions pour manipuler les attributs dune variable . . . . . . . . . . 5.9
Fonctions comme oprateurs dans une expression . . . . . . . . . . . . . 5.10
ASPECTS MTA-ASSEMBLEUR . . . . . . . . . . . . . . . . . . . . . . . . . 6.1
Assemblage conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2
- Conditions reconnues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2
- Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3
Assemblage rptitif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4
Substitutions de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6
Macro-assemblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7
Dfinition dune macro-instruction . . . . . . . . . . . . . . . . . . . . . . . . 6.7
Appel dune macro-instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7
- Principes de la substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7
S
y
s
t

m
e
s

I
n
f
o
r
m
a
t
i
q
u
e
s

I


-


A
s
s
e
m
b
l
e
u
r
2. 1. 2001 Version 2.31 - 2000 / 01 - Matires 3 -
Dclaration de variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8
Sparateur de chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . . 6.8
Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9
- Macro instruction pour imprimer une chane de caractres . . . . 6.9
- Macro instructions pour la gestion de files dattente . . . . . . . . . 6.10
Importation de code-source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13
Dcomposition en modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14
Procdures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14
Utilisation de variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14
Utilisation de procdures, exemple . . . . . . . . . . . . . . . . . . . . . . . . . 6.15
Contrle de limpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.16
Suppression de limpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.16
Lignes den-tte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.16
Mise-en-page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.16
Impression de code conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . 6.17
Impression des macro-instructions . . . . . . . . . . . . . . . . . . . . . . . . . 6.17
EXTENSIONS DE LARCHITECTURE DE LA FAMILLE 8086 . . . . . 7.1
Evolution de larchitecture du CPU 8086 . . . . . . . . . . . . . . . . . . . . 7.2
Agrandissement de la taille dun mot-CPU a 32 bits . . . . . . . . . . . 7.3
Espace-mmoire, mode dadressage . . . . . . . . . . . . . . . . . . . . . . . . 7.4
- Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4
- Descripteurs de segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5
- Dsignation dun descripteur par un registre de base . . . . . . . . 7.6
Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6
Extension du rpertoire dinstructions . . . . . . . . . . . . . . . . . . . . . . . . . 7.7
ENTRE / SORTIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1
Entre / sortie dans un systme micro-informatique . . . . . . . . . . . . . . 8.2
Concept architectural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2
Fonctionnement des oprations dentre / sortie . . . . . . . . . . . . . . . 8.3
Registres internes des quipements dentre / sortie . . . . . . . . . . . 8.4
Droulement dune opration dentre / sortie . . . . . . . . . . . . . . . . 8.5
- Ecriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5
- Lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.6
- Esquisse dun contrleur DMA . . . . . . . . . . . . . . . . . . . . . . . . . 8.7
- Fin de lopration dentre / sortie physique . . . . . . . . . . . . . . . 8.8
- Interruption dentre / sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.9
Initialisation dun quipement dentre / sortie . . . . . . . . . . . . . . . 8.10
- Opration reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10
- Squence dinitialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10
Adressage des registres internes . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.11
Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.12
Entre / sortie memory-mapped ou non-memory-mapped . . . 8.13
ACIA (Motorola 6850) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.14
Tches de linterface ACIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.15
Standard V.24 de lUIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.15
- Signaux changs entre linterface et le modem . . . . . . . . . . . . 8.16
Signification des contenus des registres (ACIA) . . . . . . . . . . . . . . 8.17
- Le registre status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.17
- Le registre contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.18
ACIA: Schma (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.20
Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.24
LISTE DES INSTRUCTIONS DU CPU INTEL 8086
LITTRATURE ET RFRENCES

Systmes informatiques I - Assembleur - 1.1 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
1. Introduction
Chapitre 1 :
Introduction
Rsum :
Buts du cours sur lassembleur
Familles de microprocesseurs
Illustration simple dun programme assembleur

Systmes informatiques I - Assembleur - 1.2 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Buts (cours, document)
Buts du cours
base pour des activits professionnelles toujours dactualit (bien que taux dutilisation
relativement faible):
- programmation en langage de base,
- comprhension des principes de bas niveau,
comprhension du fonctionnement du matriel:
- contrle directe du CPU,
- mcanisme de base des oprations dentre/sortie,
aspects culturels (dveloppement historique).
systme = support de programmes crit en assembleur,
systme = support pour les actions fondamentales de lutilisateur.
Matrise de la programmation dune machine en langage de base
Familiarisation avec un systme simple du genre MS-DOS:

Systmes informatiques I - Assembleur - 1.3 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Mise-en-garde
Le prsent document propose:
- une documentation de base en support aux leons (viter distraction prendre des notes),
- une documentation technique supplmentaire prendre la maison.
Importance des travaux pratiques:
aspect artisanal: la matrise dun assembleur sapprend en faisant des exercices,
mlange de difficults conceptuelles et pratiques - concentration sur les concepts en
automatisant les activits de programmation.
Choix problmatique du CPU Intel 8086:
larchitecture de lIntel 8086 est quelque peu baroque,
confrontation choc avec la complexit du matriel,
passablement de concepts se retrouvent dans les architectures plus modernes,
mthodes dadressage, concept de segment, etc.
Ce document nest pas:
le remplacement dun livre,
un polycopi traditionnel.

Systmes informatiques I - Assembleur - 1.4 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Ce document est disponible sur le serveur Web du CUI
Navigation par lien hypertext
rfrences par mots cl (accs par ou la marque liste de rfrences)
liens dans la table des matires (accs par ou la marque table des matires),
parcours squentiel de pages sans limite de chapitre:
- = avancer une page, = reculer une page;
- = avancer au dbut du chapitre, = reculer la fin du chapitre;
- = recharger la dernire page visite.
Version pour utilisation locale http://cui.unige.ch/tios/cours/asm/slides.pdf
un seul fichier denvirons 2 Mbytes
liens hypertext sans contraintes
Version pour accs par liaison faible dbit http://cui.unige.ch/tios/cours/asm/home.pdf
un fichier par chapitre (chacun environs 200 Kbytes)
liens hypertext restreints (pas de parcours squentiel dun chapitre lautre,
changement de chapitre = recherche dun nouveau fichier par le rseau).

Systmes informatiques I - Assembleur - 1.5 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Evolution des familles de microprocesseurs
type
vitesse
(mbps)
mot
(# bits)
date
dannonce
commentaire
Intel 4004 ? 4 11. 1971
8008 ? 8 4. 1972
8080 2 8.5 4. 1974
8085 2 8.5 3. 1976 CPU single chip 8080
8086 8 16 6 1978
8088 8 16 6. 1979 8086, bus de 8 bits
80186 10 16 8086 + DMA + priphriques
80286

10 16 2. 1982 MMU (memory management


unit), support systme
Pentium >>100 64 ds 1993
ZILOG Z 80 2.5 8 8080 + extensions
Z 8000 10 16 8086 + extensions
Motorola 680x 2 8.5
68000 10 16
68010 10 16 MMU
6802x 25 32 MMU
6803x > 25 32 MMU
RISC au dbut: alternative aux architectures traditionnelles; aujourdhui:
structure de base en support de toute implantation de processeur.

Systmes informatiques I - Assembleur - 1.6 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Exemple simple
Code-source et code-objet
Remplir une zone de mmoire de nombres entiers allant de 0 la val. de la variable l_tab - 1
Note : Distinguer entre interruption DOS et interruption CPU (= mcanisme matriel)!
1 Adr. Code gnr Instruction Commentaire
2 0000 m_seg SEGMENT ; dbut du segment logique m_seg
3 ASSUME CS:m_seg,
DS:m_seg
; reg. de base <-> segment logique
4
5 = 004D l_tab EQU 77 ; dfinir constante: longueur de la table
6 0000 4D [ table DB l_tab DUP(?) ; rs.de la mmoire pour la table
7 ??]
8 004D B8 ---- R debut: MOV AX,m_seg ; premire instruction excuter
9 0050 8E D8 MOV DS,AX ; initialiser DS = base du segment
10 0052 BB 00 4D MOV BX,l_tab ; initialiser BX = pointeur dans la table
11 0055 4B rempl: DEC BX ; mise--jour pointeur (vers le dbut)
12 0056 88 9F 0000 R MOV table[BX],BL ; stocker (BL = byte infrieur de BX)
13 005A 83 FB 00 CMP BX,0 ; 0 = dbut de la table
14 005D 75 F6 JNZ rempl ; continuer sauf si au dbut
15 005F B4 4C MOV AH,4CH ; prp. la requte (4CH = fin excution)
16 0061 CD 21 INT 21H ; faire la requte MS/DOS
17 0063 m_seg ENDS ; fin du segment
18 END debut ; fin, dfinir ladresse du dbut

Systmes informatiques I - Assembleur - 1.7 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Segments et adresses
Microsoft MACRO Assembler Version 3.00
Segments and Groups:
Name Size Align Combine Class
M_SEG 0063 PARA NONE
Symbols:
Name Type Value Attr
REMPL L NEAR 0055 M_SEG
DEBUT L NEAR 004D M_SEG
TABLE L BYTE 0000 M_SEG Length=004D
L_TAB Number 004D
49708 Bytes free
Warning
Errors
Severe
Errors
0 0

Systmes informatiques I - Assembleur - 1.8 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Parties principales dun programme en machine
Note : Le CPUcherche les instructions du programme excuter, lune aprs lautre, des positions
conscutives de la mmoire; les positions-mmoire servant au stockage des variables doivent
donc tre rserves ailleurs - dans une autre zone.
En rgle gnrale, ces zones (segments) sont stockes dans diffrentes parties de la mmoire, dis-
jointes les unes des autres.
Afin que le programme puisse accder aux positions de la mmoire utilises pour la gestion des
valeurs des variables, il en doit connatre les adresses (collaboration assembleur - diteur de
liens!)

zone-pile:
gestion dynamique des donnes temporaires.

zone-donnes:
positions-mmoire pour la reprsentation et la gestion des
valeurs des variables du programme.

zone-instructions:
squence de positions-mmoire contenant la reprsentation
binaire des instructions excuter lune aprs lautre (= le code
excutable du programme).

Systmes informatiques I - Assembleur - 1.9 - Introduction


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
1
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Description de la zone-instructions dun programme
Le systme dexploitation connat ladresse du dbut du programme - de la premire instruc-
tion excuter (adresse de transfert, dfinie dans linstruction end).
Cette adresse ne doit pas tre ncessairement au dbut de la zone-mmoire alloue au
programme.
En gnrale, les premires instructions *) du programme servent dfinir ltat de diffrents
registres de contrle du CPU.
Cette partie dinitialisation de lenvironnement est suivie des instructions servant accom-
plir la tche proprement dit du programme.
Normalement, le dbut de cette partie sert initialiser ltat des variables (tableaux, struc-
tures de donnes) utilises par le programme.
La dernire instruction *) du programme sert rendre le contrle au systme dexploitation.
*) premier et dernier dans lordre de lexcution des instructions (= de la squence
logique) - qui peut tre diffrent de lordre physique du stockage des instructions (= de
leur squence physique).

Systmes informatiques I - Assembleur - 2.1 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
2. Larchitecture du CPU INTEL 8086
Chapitre 2 :
Larchitecture du CPU INTEL 8086
Rsum :
Architecture: mmoire et CPU
Organisation de la mmoire
Registres du CPU
Instructions
Adressage

Systmes informatiques I - Assembleur - 2.2 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Configuration dun systme Intel 8086
Note : Evolution ultrieure de la taille des mots: 16 bits 32 (80386) 64 (Pentium) - et de la
taille de lespace dadresses: 1M 64 M (80386) 4 G (80486, Pentium)
Tout systme micro-informatique est organis autour dun bus
Architecture de la famille Intel 80xx:
CPU 16 bits
mmoire organise en bytes (8 bits)
espace-mmoire avec des adresses reprsentes sur 20 bits
Adresses
20 bits
Donnes
16 bits
8 bits
Bus CPU Mmoire
Equipements
dentre / sortie
16 bits

Systmes informatiques I - Assembleur - 2.3 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Mmoire
en gnral bornes entre 0 et une limite suprieure
normalement impose par la plus grande valeur qui peut tre reprsente en machine:
- soit dans un registre,
- soit dans une instruction.
Mot-mmoire ladresse n, sexe des bytes
La squence des bytes stocks pour reprsenter un mot en mmoire diffre de machine machine
Mmoire = espace contigu dadresses
adresses (= numrotation des positions de stockage)
limite suprieure de la mmoire (la plus grande adresse)
2
15
2
0
adresse
n-1
n
n+1
n+2
mots-CPU (p.ex. 16 bits)
bytes-mmoire
(8 bits)
Little Endian (Intel 8086) Big Endian (Motorola 68000)
2
15
2
0

Systmes informatiques I - Assembleur - 2.4 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Implantation physique
Plan de la mmoire (Intel 8086)
Implantation physique de la mmoire =
sous-ensemble de lespace dadresses,
effectivement quip de mmoire (vive ou morte), organis en zones contigus
Segment de mmoire =
concept pour dsigner une partie contigu de la mmoire
adresse
0
FFFFF
16
type de mmoire
installe
RAM
ou
ROM
RAM
ROM
utilisation fige (conception du 8086)
0 - 400
16
(256 vecteurs dinterruption)
FFFF0
16
- FFFFF
16
(programme dinitialisation)

Systmes informatiques I - Assembleur - 2.5 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Mmoire physique et mmoire logique
\
Reprsentation externe des adresses
adresse physique adresse logique base
a
p
= a
l
+ ( registre de base 16
10
)
convention de Intel
base : adresse-logique
exemple: 1C395 =
1000 : C395
ou
1B29 : 1105
Registre de base
(Segment register)
2
15
2
0
0
Segment
logique
Segment
physique
FFFFF
16
(= 1 048 575
10
)
FFFF
16
(= 65 535
10
)
adresses
logiques
adresses
physiques
0
Mmoire physique Mmoire logique
max 64 K
base du segment
0
2
19
2
0

Systmes informatiques I - Assembleur - 2.6 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Gnration une adresse-bus dans le CPU
Modle fonctionnel
illustration: MOV AX,5000H
0 MOV

DS,AX ; 5000H dfinir la base du segment DS = 50000H


O MOV AL,dummy ; dummy reprsente une donne dont la place est
; rserve ladresse 1234H du data segment
Evaluation
doprandes
Bus
20 bits
16 bits 4 bits
Adresses
20 bits
Donnes
16 bits
16 bits
CPU
+
= registre = lment actif
0
O
adresse-
oprande
1 2 3 4
5 0 0 0 0
DS
5 1 2 3 4
adresse-bus
code-
instruction
.. .. .. ..

Systmes informatiques I - Assembleur - 2.7 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
La pile
Larchitecture du 8086 (comme la plupart des autres machines) supporte un mcanisme particulier
daccs la mmoire: la pile (stack)
zone de mmoire part, rserve au stockage temporaire de donnes;
implantation 8086: la valeur SS:SP dsigne ladresse courante sur la pile (= le pointeur-
pile - stack pointer);
le CPU supporte des instructions conues pour exploiter le mcanisme de la pile;
concept:
- zone de mmoire gre dynamiquement;
- accs limit une extrmit de la pile (= le haut de la pile);
- actions de base: empiler, des-empiler (i.e. ajout/retrait dune valeur de ladresse
SS:SP avec mise--jour automatique du contenu de SP).
Note : La pile du 8086 grandit vers le bas - le haut de la pile correspond son adresse la plus petite
(autre machines: linverse)
p
i
l
e
p
i
l
e
des-empiler
empiler
SS:SP
SS:SP

Systmes informatiques I - Assembleur - 2.8 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
.
des contraintes dadressage (p.ex. accessible sous contrle dun certain registre de base),
des caractristiques de la mmoire physique installe (p.ex. RAM/ROM, vitesse daccs),
la fragmentation de la mmoire physique.
- destin pour le chargement dans un segment physique,
- dfinie comme une partie de la structure modulaire du code-objet.
Note : La notion de mmoire virtuelle se rfre une technique particulire pour implanter la
mmoire logique dans le cadre dun systme dexploitation.
Segment physique =
zone contigu de la mmoire physique, dtermine par:
Segment logique =
partie du code-objet dun programme

Systmes informatiques I - Assembleur - 2.9 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Squence physique - squence logique
La numrotation des positions de stockage (= succession des adresses) implique la
La squence physique dtermine lordre de laccs aux positions de la mmoire lors dun accs
squentiel, p.ex. par une opration dentre / sortie.
Instructions dun programme stock en mmoire
squence physique des positions de la mmoire
squence physique des instructions suite des positions de la mmoire utilises pour le stockage
des instruction.
squence logique des instructions squence dtermine par lexcution des instructions lors-
que le CPU les cherche et les interprte.
Adresse
de transfert
1
2
3
4
9
10
Squence
physique
Squence
logique
1
2
3 JMP 2
5
6
7
JMP 9
4
5
6
7
8
8
9

Systmes informatiques I - Assembleur - 2.10 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Instructions et donnes dun programme
Ce tri doit tre fait par le programmeur (assembleur) ou le compilateur (langage lev): viter un
mlange entre code et donnes (= reprsentation de variables).
Normalement, cela aboutit dans le regroupement dinstructions et de donnes dans des segments
(logiques) distincts:
- segment de code,
- segment de donnes
En excutant un programme, le CPU cherchera les instructions dans la mmoire,
une instruction aprs lautre.
Cette recherche sera faite btement en suivant la squence logique.
Chaque rsultat de cette recherche est interprt comme une instruction.
Donc, attention!
Lorsque - dans lexemple - la recherche de la prochaine instruction fournit la
valeur 1234, le CPU la comprendra comme le code dune instruction excu-
ter, peut importe le sens sous-entendu par le programmeur lors de la cration
du programme.
Tri entre instructions et donnes dun programme!
1234

ADD
MOV
MOV

Systmes informatiques I - Assembleur - 2.11 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Format dune opration
Champs du code dune opration
Oprandes
interprtes en fonction du type de lopration et de la reprsentation de loprande
- soit comme le contenu dun registre,
- soit comme une adresse de la mmoire.
Les sous-champs dune oprande interprte comme une adresse dterminent :
le mode dadressage (= fonction, la mthode pour calculer ladresse et pour en
obtenir la valeur de loprande) (= algorithme dadressage),
une valeur constante utiliser dans ce calcul ; dans le cas le plus simple (le mode
dadressage absolu) cette valeur est directement ladresse de loprande,
le cas chant, un ou plusieurs registres dindexage.
opration oprande1 (oprande2)
oprande
1
opration oprande
k
registre
oprande =
registre valeur = contenu du registre
ou
adresse valeur dtermine par les sous-champs

Systmes informatiques I - Assembleur - 2.12 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Proprits des oprations du CPU Intel 8086
1. Opration = chanes de bytes,
longueur variable (1-8 bytes)
1 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1
[BL] := 17H
b
\
MOV BL 17H
1 0 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0
[BX] := 17H
b
\
MOV BX 17H
2. Oprations arithmtiques en complment deux
3. Inversion apparente des bytes dans les oprandes-mot
4. Oprandes implicites
1 1 1 0 1 1 1 1
write[AL] porte[DX]
5. Instructions avec prfixe
0 1 1 r r 1 1 0
code op. registre de base = rr
6. Un seul mnmonique
plusieurs instructions
1 0 1 1 0 0 1 1 0 0 0 1 0 1 1 1
[CH] := 17H (MOV)
b
\
MOV CH 17H
1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1
[BX] := [BP] (MOV)
b
\kl
MOV r BX BP r source = registre
7. Trois oprandes deux champs e.g. ADD AX,BX dest. = source1 + source2 (= dest.)
8. Jeu dinstructions relativement riche, complexe, non-orthogonal

Systmes informatiques I - Assembleur - 2.13 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Diffrences entre instructions-assembleur et instructions-machine
Dans certains cas il existe une diffrence entre
la machine relle: comportement dtermin par le CPU
la machine abstraite (machine assembleur): comportement dtermin par la
dfinition des instructions figurant dans un programme
1. Adressage absolu (instructions de branchement Intel 8086) :
2. Slection automatique de lopration (certains instructions Intel 8086) :
machine abstraite adresses absolues
conversion automatique par lassembleur
machine relle (CPU) ... adresses relatives.
machine abstraite une seule instruction
slection automatique par lassembleur
machine relle ... ensemble doprations du CPU.

Systmes informatiques I - Assembleur - 2.14 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Par exemple (Intel 8086) :
Note : La slection automatique de lopration nest possible que si lassembleur reconnat les types
qui dterminent le choix, p. ex
- tiquette NEAR ou FAR
- valeur absolue ou relogeable
- un assembleur ne connaissant pas les types
entier et rel ne peut pas choisir entre les
additions correspondantes, p. ex. ADD et FADD.
Machine relle Machine abstraite
CALL CALL
intrasegment
et CALL
intersegment
MOV MOV
immdiat
et MOV
direct
etc.

Systmes informatiques I - Assembleur - 2.15 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Registres du CPU Intel 8086
Registres-oprandes et dindexage
reg. 16 bits reg. 8 bits
utilisation implicite
mnm. code mnm. code
AX 000 accumulateur (oprations arithmtiques), oprande E/S
AL 000 comme AX (mais oprande-byte)
AH 001 aucune
CX 001 compteur pour itrations (boucles, opration sur chanes)
CL 010 compteur pour dcalage
CH 011 aucune
DX 010 porte E/S, extens. de AX 32 bit (DX = msb) (MUL, DIV)
DL 100 aucune
DH 101 aucune
BX 011 indexage
1)
, XLAT
BL 110 aucune
BH 111 aucune
SP 100 indexage pile (= pointeur pile)
BP 101 indexage
1)
, accs donnes par registre segment = SS (regis-
tre)
SI 110 indexage-source [DS]
2)
(oprations sur chanes)
DI 111 indexage-destination [ES]
2)
(oprations sur chanes)

Systmes informatiques I - Assembleur - 2.16 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Recouvrement des registres 8 et 16 bits
Consquences sur lextension du bit de signe !
Par exemple :
Note : Ce concept a probablement son origine dans la volont dIntel de garantir un important degr
de portabilit de programmes du 8080 vers le 8086
Limplantation effective dun
registre-byte
se recouvre avec la partie suprieure ou infrieure du
registre-mot correspondant
MOV AX,-3
; AX devient 0FFFD
MOV AL,-3
; AX devient 0xxFD (0xx = valeur antrieure)
Registres conceptuels
(aspect - programme)
Implantation concrte
dans le CPU (matriel)
AX
AH
AL

Systmes informatiques I - Assembleur - 2.17 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Registres de base (segment registers)
Compteur ordinal
(= instruction pointer, IP)
Seulement indirectement accessible au programme (JMP, CALL, etc.)
Autres machines : registre(s) dtat +compteur ordinal (= Processor StatusWord, PSW)
nom mnm. code
utilisation implicite
(= choix automatique dun registre de base par le CPU)
Extra
Segment
ES 00 oprations sur chanes (chane-destination)
Code
Segment
CS 01 code excuter
Stack
Segment
SS 10
oprations utilisant la pile (y compris les appels de procdures
et les interruptions)
accs aux oprandes en mmoire si indexage par BP
Data
Segment
DS 11
accs aux oprandes en mmoire sauf si indexage par BP
oprations sur chanes (chane-source)

Systmes informatiques I - Assembleur - 2.18 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Registre dtat (flag register)
Le registre dtat contient une liste de bits reprsentant ltat du CPU
bits de contrle (tat de fonctionnement du CPU, dtermin par des instructions de contrle,
respectivement le systme dinterruption),
bits arithmtiques (la valeur dcrit le rsultat de lexcution dune opration).
15 8 7 0
x x x x OF DF IF TF SF ZF x AF x PF x CF
Bit (nom) Signification: 1 si
OF (overflow) report MSB bit devant MSB
DF (direction) marche-arrire (op. sur chanes)
IF (interrupt) les interruption sont acceptes
TF (trap) interruption aprs chaque opration
SF (sign) rsultat ngatif (MSB = 1)
ZF (zero) rsultat = 0
AF (arithmetic) report bit #4 bit #3
PF (parity) la parit du rsultat est paire
CF (carry) report du / vers le MSB
Note : MSB
LSB
=
most
least
significant bit (bit de poids le plus
fort
faible
)

Systmes informatiques I - Assembleur - 2.19 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Le rle du bit carry (report arithmtique, dcalage)
Oprations de rotation et le bit CF
Oprations arithmtiques et les bits CF, OF
CF
CF
2
15
2
0
CF
(dito pour registres bytes)
CF
2
15
2
14
OF CF bits modifis en cas de report du / vers le bits du plus grand poids:
registres 16 bits: report des bits 2
15
ou 2
14
registres 8 bits: report des bits 2
7
et 2
6

Systmes informatiques I - Assembleur - 2.20 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Quelques oprations typiques
Mnm. Oprandes Smantique
SUB
dest
1)
source
1)
dest := dest - source
AND
dest
1)
source
1)
dest := dest source
SHL
dest
1)
count
1)
dest := dest 2
count
CMP
dest
1)
source
1)
dest - source
4)
TEST
dest
1)
source
1)
dest source
4)
JMP
valeur IP := IP + valeur
JE
valeur si ZF = 1 ... IP := IP + valeur
MOV
dest
2)
source
2)
dest := source
PUSH
source
3)
empiler source
CALL
valeur (pas 1) empiler IP, (pas 2) IP := IP + valeur
CLI
dsactiver le systme dinterruption (IF := 0)
OUT
valeur envoyer AL vers lquipement avec ladresse valeur
Notes: et logique
1) registre 8-bits, registre 16-bits, position-mmoire, valeur immdiate (source
seulement)
2) comme 1); en plus: registre de base
3) registre 16-bits, registre de base, position-mmoire
4) ne modifie pas le registre-rsultat (seulement les bits arithmtiques du registre
dtat sont touchs)

Systmes informatiques I - Assembleur - 2.21 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Adressage Intel 8086
Principes
Adressage implicite
par exemple : opration sur pile (PUSH, POP)
Adressage explicite
information fournie dans le champ doprande, value en deux phases :
1. Calcul de ladresse effective (adr
eff
) pour un des modes :
adressage absolu
adressage index
adressage relatif
2. Recherche de loprande en utilisant adr
eff
pour un des modes :
adressage immdiat
adressage direct
adressage indirect
Note : La slection dun mode dadressage fait partie de linformation figurant dans le champ
doprande.
LIntel 8086 ne supporte pas tous ces modes et seulement certaines combinaisons entre les
modes de la phase 1 et de la phase 2 (voir Modes dadressage).

Systmes informatiques I - Assembleur - 2.22 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Modes dadressage
1. Modes pour le calcul de ladresse effective
Note : Le double indexage est une option particulire du CPU Intel 8086.
Dans certaines conditions, ladressage index permet une incrmentation ou dcrmentation
automatique avant ou aprs le calcul de ladresse effective (Intel 8086 : oprations itratives
tel que MOVB etc.).
adressage absolu adr
eff
= const.
1)
adressage index adr
eff
= const.
2)
+ r
i
[ + r
k
]
3)
adressage relatif adr
eff
= const.
2)
+ IP
Le CPU Intel 8086 ne permet ladressage relatif que pour les
instructions de branchement (JMP, CALL, JE etc.); voir
remarque sous Syntaxe : adressage
1) const. contenu dun sous-champ particulier, interprt comme
une valeur sans signe
2) const. contenu dun sous-champ particulier, interprt comme
une valeur positive ou ngative (complment 2)
3) [ ] champ optionnel
r
i
, r
k
contenu dun registre dindexage
IP contenu du compteur ordinal

Systmes informatiques I - Assembleur - 2.23 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
2. Modes pour la recherche de loprande
\
adressage immdiat oprande = adr
eff
Le CPU Intel 8086 ne supporte ladressage immdiat quen
combinaison avec le mode absolu
adressage direct oprande = [ adr
eff
]
4)
adressage indirect oprande = [ [ adr
eff
] ]
4)
LIntel 8086 ne supporte pas ladressage indirect. Certains
CPU permettent une multiple indirection.
4) [ adresse ] obtenir le contenu de la position de la mmoire adresse

Systmes informatiques I - Assembleur - 2.24 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Combinaison des modes (phase 1 et 2)
En principe, un CPU devrait permettre de combiner chaque mode trait en phase 1 (calcul de
ladresse effective) avec chaque mode trait en phase 2 (recherche de loprande).
Larchitecture du CPU Intel 8086 cependant ne supporte pas toutes les combinaisons thorique-
ment possibles
Modes dadressage possibles (Intel 8086)
mode immdiat direct indirect
absolu / / X / ... combinaison possible
index X / X X ... combinaison dfendue
relatif X / X

Systmes informatiques I - Assembleur - 2.25 - Larchitecture du CPU INTEL 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
2
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Modes dadressage (exemples Intel 8086)
Mode immdiat
assembleur:
MOV BX,17H
oprande 1 = mot registre BX LSB MSB
1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0
oprande2 = 17H
(implicitement: oprande2 = constante)
opration = MOV
imm.
Mode direct, absolu
assembleur:
MOV BX, adresse
oprandes = mot oprande 1 = BX(implicitement: oprande1 = registre)
1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 - - - - - - - - - - - - - - - -
opration = valeur oprande2
MOV
registre, direct
oprande2 = adresse absolue
Mode direct, index
assembleur:
MOV BX,4[SI]
oprandes = mot oprande 1 = BX(implicitement: oprande1 = registre)
1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0
opration = valeur immdiate = 4
MOV
registre, direct
oprande2 = adresse indexe (SI), constante-byte

Systmes informatiques I - Assembleur - 3.1 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
3. Principes dun assembleur
Chapitre 3 :
Principes dun assembleur
Rsum :
Concepts gnraux
Instructions
Reprsentation, syntaxe des instructions
Adressage
Gnration de code
Compteurs de positions
Segments et gestion des registres de base
Instructions

Systmes informatiques I - Assembleur - 3.2 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Assembleur : introduction
Code-source: Description symbolique dun programme
- des instructions-machine,
- des directives pour lassembleur,
- (des directives pour lditeur de liens).
Code-objet
relogeable:
Description binaire dun programme
- des instructions-machine,
- de linformation pour lditeur de liens (relocation, chargement, excution).
Code-objet
absolu:
Reprsentation binaire dun programme
- des instructions-machine,
- de linformation pour le chargement et lexcution du programme-objet.
Chargeur
Editeur
de liens
Assembleur
Edition de liens Excution du code-objet Assemblage
O
0
O
Code-
source
Code-objet
relogeable
Code-objet
excutable
Code-objet
en mmoire

Systmes informatiques I - Assembleur - 3.3 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Caractristiques dun assembleur
Reprsentation laide de mnmoniques.
Reprsentation de valeurs constantes:
constantes numriques,
chanes de caractres.
Gestion de lespace-mmoire, symboles.
Mta assemblage:
fonctions de lassembleur,
assemblage conditionnel,
assemblage rptitif,
macro-assemblage.
Assemblage en plusieurs passes (en gnral 2 passes)
Notes: pour un type de CPU ... plusieurs assembleurs,
... syntaxes diffrentes,
... mnmoniques diffrents !
par exemple : MASM (Microsoft),
Turbo Assembleur (Borland)
lassembleur accomplit son travail en lisant les instructions du programme-source lune
aprs lautre; il sarrte lorsquil trouve linstruction END.

Systmes informatiques I - Assembleur - 3.4 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Syntaxe
Forme gnrale dune instruction MASM
Syntaxe:
reprsentation dune instruction par un enregistrement,
dcomposition dune instruction en champs, spars de caractres-sparateurs,
si ncessaire, dcomposition dun champ en sous-champs.
Notation utilise :
par exemple :
CALC: MOV CX,7 ; dfinir le compteur
[[ tiquette [ : ]] opration [ oprande ][ ; commentaire ]

espace ou tabulation (whitespace) :


des espaces ou tabulations (supplmentaires) peuvent figurer au dbut et la fin
des champs et sous-champs
[ ]
optionnel

fin de ligne

Systmes informatiques I - Assembleur - 3.5 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Signification des champs de linstruction
Champ dtiquette
dfinition dun symbole dont le nom est la chane de caractres du champ dtiquette :
max 31 caractres {A..Z} {a..z} {0..9} {.?@_$},
{0..9} dfendu comme 1er caractre,
. uniquement permis comme 1er caractre,
pas de distinction entre minuscules et majuscules,
terminaison par : ... le symbole aura le type near (valeur sans partie segment, voir
aussi Variables, symboles);
la valeur attribue au symbole dpend du champ dopration.
Champ dopration
opration effectuer, indique laide dun mnmonique ; deux significations possibles :
opration
lment du rpertoire dinstructions du CPU dont le code-objet est gnrer,
pseudo-opration (pseudo-instruction)
directive au programme assembleur (ne produit pas forcment du code-objet).
Si le premier champ dune instruction est une (pseudo-)opration, ce champ sera considr
comme un champ dopration - sinon comme un champ dtiquette.

Systmes informatiques I - Assembleur - 3.6 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Champ doprande
argument(s) pour la (pseudo-)opration :
1. le champ doprande se dcompose en sous-champs spars de virgules (suivies
comme option dun ou plusieurs caractres white space) :
rappel: espace ou tabulation (whitespace)
2. le sous-champs dcrivant loprande-destination prcde celui dcrivant loprande-
source, donc :
Note : cette ordre est inverse pour les assembleurs de la plupart des autres machines, par exemple
celui du Motorola 68000
3. la signification spcifique du champ doprande et de ses sous-champs dpend de
lopration et, par consquent, est dtermine par le champ dopration.
Champ de commentaire
texte explicatif :
champ sans signification syntaxique et smantique pour lassembleur; chane de caractres ter-
mine par la fin de linstruction (= fin de ligne)
sous-champ-1 [ , [] sous-champ-2 [ , [] ... ] ]
opration destination,source
;commentaire

Systmes informatiques I - Assembleur - 3.7 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Syntaxe : constantes
Format des constantes numriques
chiffre [ chiffre ... ] [ selecteur ]
Format des chanes de caractres
(constantes alpha-numriques)
sparateur [ caractre [ caractre] ] sparateur
par exemple :
"abc\lX" ou abc"e
type selecteur chiffre exemple
binaire B {0,1} 00011101B
octal O ou Q {0..7} 035O
hexadcimal H {0..9}{A..F}{a..f}
1)
1dH
dcimal D ou rien
2)
{0..9} 29
1) contrainte: premier chiffre = obligatoirement {0..9}
2) base utilise par dfaut pour la conversion (initialise au dbut de
lassemblage 10), peut tre change par la directive
.RADIX n (2 n 16)
sparateur {"}
caractre tout caractre du jeu ASCII sauf sparateur

Systmes informatiques I - Assembleur - 3.8 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Spcification dadresses
Dcomposition de loprande dsignant une adresse en sous-champs; chaque adresse a la forme:
[ segreg: ][ valeur [ [ indreg [+indreg ][+valeur ] ] ] ]
Slection du mode dadressage
Le choix des modes dadressage disponibles est dtermin par larchitecture du CPU. La syntaxe
de lassembleur permet de slectionner pour chaque oprande un mode spcifique.
Le mode dadressage est dtermin par :
la syntaxe particulire dune oprande
(par exemple adressage index),
la prsence ou absence de certains sous-champs
(par exemple un champ avec un registre dindexage),
les caractristiques associes par lassembleur ces sous-champs
(par exemple le type du champ valeur).
[ ] = [ et ] indiquent sous-champs optionnel
[ ] = [ et ] sont des caractres significatifs

Systmes informatiques I - Assembleur - 3.9 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Mode dadressage
Calcul de ladresse effective
lassembleur reconnat le mode adressage index par la prsence dau moins un sous-
champ spcifiant un registre dindexage (syntaxe = [registre-dindexage ])
sinon le mode adressage absolu est pris (le programmeur ne peut pas choisir le mode
relatif) ;
lassembleur simule la disponibilit dinstructions de branchement permettant ladressage
absolue (JMP, CALL, JE ...), bien que les instructions correspondant de lIntel 8086 ne per-
mettent que ladressage relatif :
lassembleur effectue automatiquement une conversion en adressage relatif
par exemple:
4[SI]
[SI+4]
SYMBOL[SI+BP]
ES:[DI+BX+3]
par exemple:
SYMBOL
ES:SYMBOL

0fff
par exemple:
JMP
CALL
LABEL
EXIT

Systmes informatiques I - Assembleur - 3.10 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Recherche de loprande
lassembleur reconnat le mode adressage immdiat par labsence de tous sous-champ
spcifiant un registre dindexage (terme en notion [registre]), mais seulement si le champ
valeur reprsente une constante (par opposition une adresse relogeable) ;
sinon le mode adressage direct est choisi ;
en cherchant une valeur dans la mmoire, lIntel 8086 utilise des rgles par dfaut pour
slectionner un registre de base (voir Registres de base) ;
si un sous-champ spcifiant un registre de base (nomde registre-segment suivi de :) est
rencontr, lassembleur composera un code-prfixe (Segment Prefix Code) qui, lors de
lexcution, forcera le CPU dutiliser ce registre de base.
Note : Contraintes imposs par larchitecture du 8086 quant la disponibilit et au choix des com-
binaisons de modes! voir aussi: adressage Intel 8086, combinaison des modes).
Un non-respect de ces contraintes est traite comme une erreur de programmation,
lassembleur fournira un message derreur correspondant.
par exemple: ES:7
par exemple:

0ffff
par exemple: symbole_relogeable
4[SI]
par exemple: ES:SYMBOL

Systmes informatiques I - Assembleur - 3.11 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Gnration de code-objet
Tables de code-objet
Lassemblage - laction de gnrer du code-objet - peut tre considre comme le remplissage
dune ou de plusieurs tables de code-objet; une telle table est gre pour chaque segment.
A chacune des tables de code-objet il faut associer un compteur de position, qui repr-
sente la position (= ladresse relative dans le segment) o le prochain byte gnr sera plac.
Segment logique
En crant du code-objet, lassembleur regroupe le code gnr (instructions, donnes) en diff-
rentes zones contigus, indpendantes lune de lautre - des segments logiques.
Le contenu de chaque segment logique reprsente un espace dadresses indpendant.
Lemplacement des segments logiques dans la mmoire et la position dun segment logique par
rapport lautre ne seront dtermins que lors de ldition de liens.
La gnration de code excutable par un assembleur ou par un compilateur
aboutit, en gnral, dans
la cration de plusieurs zones disjointes de code-objet.

Systmes informatiques I - Assembleur - 3.12 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Compteur de position
Rle du compteur de position
Contrle du compteur de position
Valeur du compteur de position
La fonction $ fournit tout instant la valeur courante du compteur de position du segment
courant.
ORG valeur Mettre la valeur du compteur de position du segment courant
valeur
EVEN
Assurer que la valeur du compteur de position du segment cou-
rant soit paire; si ncessaire, gnrer un byte de code-objet
(no-op)
adresse relative
0
Compteur
de position
Table de code-objet
dun segment
un compteur par segment logique,
valeur courante = position (adresse relative dans le segment) o le prochain
byte de code-objet sera plac.

Systmes informatiques I - Assembleur - 3.13 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Compteur de position et compteur-ordinal
Il y a une relation troite entre le compteur de position du segment de code (tel quil est gr au
moment de lassemblage) et le compteur-ordinal du CPU (ladresse de linstruction que le CPU
cherche au moment de lexcution):
le compteur de position correspond la valeur du compteur-ordinal au moment o linstruc-
tion sera excute.
Valeur initiale du compteur-ordinal lors de lexcution
Ladresse de transfert sera mmorise dans le code-objet du programme gnr. Cette
valeur sera utilise par le systme dexploitation pour initialiser le compteur-ordinal (=
dterminer la premire instruction du programme excuter).
END valeur
Utiliser ladresse valeur pour dterminer ladresse de
transfert.
Considrer linstruction comme la dernire du programme
traduire.
Ladresse de transfert spcifie ladresse de la premire instruction excute
suite au chargement du programme

Systmes informatiques I - Assembleur - 3.14 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Contrle des segments
Linstruction SEGMENT
La pseudo-instruction SEGMENT permet de contrler la relation entre code et segments logiques.
Elle sert :
1. contrler le placement du code-objet dans des segments spcifiques;
2. associer les symboles reprsentant des adresses un segment en considrant leur
valeur comme un dplacement par rapport au dbut du segment;
3. spcifier des directives pour lditeur de liens (nomdu segment, champs doprande
de linstruction SEGMENT dterminant le traitement du segment par lditeur de liens);
ces informations sont passes telles quelles.
Utilisation de linstruction SEGMENT:
nom SEGMENT oprande(s)
nom ENDS

Systmes informatiques I - Assembleur - 3.15 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Association du code-objet un segment logique
Dcomposition du code en segments logiques
Le code-objet correspondant au bloc dinstructions figurant entre les pseudo-instructions
SEGMENT et ENDS sera plac dans un segment dont le nom figure dans le champ dtiquette.
Gestion laide dun compteur de position
Un compteur de position est associ chaque segment.
Ce compteur de position vaut initialement (= lors de la premire slection dun segment) 0.
Si le segment est d-slectionn pour slectionner un autre segment, la valeur du compteur est
sauve jusquau moment o le segment est de nouveau slectionn.
Alternance entre segments
Un programme peut alterner entre diffrents segments pour y gnrer de code:
linstruction SEGMENT permet de re-ouvrir un segment dj existant (donc, SEGMENT
soit cre un nouveau segment, soit ouvre un segment en vue dy ajouter de code suppl-
mentaire);
suite une telle re-ouverture, le compteur de positions pointera la fin des donnes dj
existant dans le segment;
ne pas oublier linstruction ENDS avant une telle opration, elle permet de (temporaire-
ment) clore lancien segment!

Systmes informatiques I - Assembleur - 3.16 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Exemple: rsultat du travail de lditeur de liens
segA1
segA2
code-objet du module A;
segA1 SEGMENT PUBLIC
segA2 SEGMENT STACK
segments, cr par:
segB2
segB1
code-objet du module B;
segB1 SEGMENT PUBLIC
segB2 SEGMENT STACK
segments, cr par:
Rsultat de ldition de liens;
segA1
segA2
segB2
segB1
segment stack
segment donnes
(de type PUBLIC)

Systmes informatiques I - Assembleur - 3.17 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Placement de segments
Les oprandes de linstruction SEGMENTdterminent la manire dont lditeur de liens traitera le
segment :
Note : rappel: espace ou tabulation (whitespace)
nom SEGMENT [
COMMON
PUBLIC
STACK
MEMORY
AT adr
[
BYTE
WORD
PARA
PAGE
][classe]]
COMMON
tous les segments avec ltiquette classe seront placs la mme adresse de base
(= ils se recouvriront) ; des zones du type COMMON avec diffrents noms
(classe) seront placs lun derrire lautre ;
PUBLIC
tous les segments avec ce qualificatif seront regroups dans un seul segment-rsul-
tat, lun derrire lautre ;
STACK
un seul segment avec ce qualificatif est accept, il est destin la gestion de la pile ;
MEMORY
le premier segment portant ce qualificatif sera plac une position de mmoire en
dessus de tout autre segment; sil y a davantage de segments de ce genre, ils seront
traits comme les segments du type COMMON ;
AT adr les tiquettes dfinies dans un tel segment sont dfinies comme tant relatives la
valeur ( adr / 16 ) 16.

Systmes informatiques I - Assembleur - 3.18 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Alignement de ladresse de base dun segment
Le segment sera plac une adresse alignant le positionnement du segment de manire spcifique:
Note : Les oprations ncessaires pour le regroupement et le placement des segments seront entre-
prises par lditeur de liens - lassembleur ne fait que placer les directives correspondantes
dans le code-objet.
Le mode BYTE est utilis par dfaut, les segments seront donc placs directement lun
derrire lautre.
En mode WORD, par exemple, un byte supplmentaire sera insr au besoin, ce qui assure
que les adresses paires dun segment correspondent des adresses paires de la mmoire phy-
sique; ceci permet dcrire du code rapide, exploitant le fait que le 8086 utilise un seul cycle
du bus pour chercher une oprande-mot si elle est stocke une adresse paire (sinon, le mot
est dcoup en 2 bytes transmis de manire squentielle).
mot-cl alignement sur adresse modulo
BYTE
frontire de bytes 1
WORD
frontire de mots 2
PARA
frontire de paragraphes 16
PAGE
frontire de pages 256

Systmes informatiques I - Assembleur - 3.19 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Gestion des registres de base
Initialisation des registres de base
Au dbut de lexcution, le programme doit initialiser les registres de base : leur contenu doit
correspondre lemplacement des segments physiques, contenant le code des segment logiques
correspondants :
1
Dclarations:
Segment1 SEGMENT
2 Segment1 ENDS
3 Segment2 SEGMENT STACK
4 Segment2 ENDS
5
Initialisation:
MOV AX,Segment1
6 MOV ES,AX
7 MOV AX,Segment2
8 MOV SS,AX
ES
SS
Segment1
Segment2

Systmes informatiques I - Assembleur - 3.20 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Ralisation (assembleur et diteur de liens)
lassembleur cre un symbole dsignant le segment logique; ce symbole peut tre utilis
comme une variable externe (un symbole dfini dans un autre module);
lditeur de liens dfinit la valeur du symbole comme lorigine du segment (= la valeur de
ladresse de base / 16).
Note : Le contenu des registres de segment CS et SS (ainsi que les registres IP et SP) sont dfinis par
le systme dexploitation avant le dbut de lexcution du programme (segment contenant le
code, petite pile mise disposition par le systme).
Nanmoins il est prfrable de redfinir la pile (SS et SP) pour disposer dune zone de
mmoire suffisante lors de lexcution du programme.

Systmes informatiques I - Assembleur - 3.21 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Association segments logiques - registres de base
(= segments physiques)
La pseudo-opration ASSUME indique lassembleur quel registre de segment il doit utiliser pour
accder aux oprandes :
- comme rsultat, lassembleur associe le(s) registre(s) de base (CS, ES, SS, DS) au nom des
segments logiques nom
k
;
- par la suite, lassembleur ajoutera automatiquement des prfixes de segment o cela est
ncessaire.
Note : Lassembleur najoutera un prfixe quaux instructions o le choix par dfaut du registre de
base (voir Registres) ne fournira pas le bon rsultat.
ASSUME
CS
ES
SS
DS
:nom1[,
CS
ES
SS
DS
:nom2 ]

Systmes informatiques I - Assembleur - 3.22 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Gestion des registres de base, exemple
1 seg1 SEGMENT
A
2 nom1 DW
A
3 seg1 ENDS
4 seg2 SEGMENT STACK
A
5 nom2 DW
A
6 seg2 ENDS
7 seg3 SEGMENT
A
8 ASSUME ES:seg1,SS:seg2,CS:seg3...
A
9 MOV AX,seg1
10 MOV ES,AX
11 MOV AX,seg2
12 MOV SS,AX
A
13 MOV AX,nom1
14 MOV BX,nom2
CS
ES
SS
nom1
nom2
Code-source assembleur :
Code correspondant gnrer:
MOV AX,ES:nom1
MOV BX,SS:nom2

Systmes informatiques I - Assembleur - 3.23 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Au moment de lassemblage
1. Dfinition du symbole nom1
nom1 est dfini comme une adresse dans le segment seg1 ( et )
2. Dfinition du symbole nom2
nom2 est dfini comme une adresse dans le segment seg2 ( et )
3. Directive ASSUME = promesse du programmeur ( ) : lors de lexcution,
ES va contenir la base du segment seg1
SS va contenir la base du segment seg2
4. Traduction de linstruction MOV AX,nom1 : lassembleur va
se souvenir que le symbole nom1 avait t dfini dans le segment seg1 ( )
savoir que, lors de lexcution, ES contiendra ladresse du segment seg1 ( )
donc, va interprter linstruction comme MOV AX,ES:nom1
5. Traduction de linstruction MOV BX,nom2 par
dito ( et ), traduction comme MOV BX,SS:nom2
1 2
4 5
8
13
2
8
14
4 8
Au moment de lexcution
1. Lexcution de et chargera, comme promis, dans ES ladresse du segment seg1
2. Lexcution de et chargera, comme promis, dans SS ladresse du segment seg2
3. Les instructions et utiliseront donc les bon registres de base (ES, resp. SS) et ces
registres contiendront les adresses de base de ces segments.
9 10
11 12
13 14
donc

Systmes informatiques I - Assembleur - 3.24 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Contrle des segments, rsum
Mesures pour le contrle de la sparation du code en segments, respectivement de lassociation de
variables un segment spcifique:
Association du code objet un segment logique (pseudo-instructions SEGMENT, ENDS) :
- dfinition de blocs de code-source et, par consquent, du code-objet correspondant;
- cration des symboles reprsentant des adresses dans le code-objet.
Association entre segments logiques et registres de base (pseudo-instruction ASSUME).
Initialisation des registres de base aux valeurs correspondant aux adresses des segments
physiques (oprations dinitialisation incorporer dans le programme).
Utilisation du registre de base correct par le CPU (gr par le systme dexploitation).

Systmes informatiques I - Assembleur - 3.25 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Exemple dun programme
1
INCLUDE MACRO.LIB ; ajouter les instructions contenu
; dans le chier MACRO.LIB
2 pile SEGMENT STACK ; rservation dune pile
3 DW 100 DUP (?) ; mots sans initialisation
4 haut LABEL WORD ; adresse-mot suivant la pile
5 pile ENDS
6 data SEGMENT PUBLIC ; ici seront places les donnes du programme
7 data ENDS
8 code SEGMENT PUBLIC
9 ASSUME CS:code,SS:pile,DS:data ;
10 start LABEL FAR
11 MOV AX,data ; lier DS au segment data
12 MOV DS,AX ; (pas de MOV imm. DS !)
13 MOV AX,pile ; ditto pour SS
14 MOV SS,AX
15 MOV SP,haut ; haut de la pile (vide !)
16 EXIT
17 code ENDS
18 END start ; fin du code-source, adresse de la premire instruction

MOV AH,4CH (de MACRO.LIB)


INT 21H

Systmes informatiques I - Assembleur - 3.26 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Dfinition de donnes
Pseudo-instructions pour la rservation et dfinition de donnes
Un programme-assembleur ne permet pas seulement de dfinir du code-objet excutable, mais
galement de rserver et initialiser des positions de mmoire reprsentant les donnes
sur lesquelles agit le programme:
rserver une zone de code-objet pour le placement de donnes constantes ou variables,
crer du code-objet correspondant aux constantes fournies dans le champ doprande
(optionnel),
dfinir une variable (champ dtiquette !) portant le type dtermin par linstruction (BYTE,
WORD, DWORD, QWORD, TBYTE) (optionnel).
Les sous-champs du champ doprande de ces pseudo-oprations dterminent le contenu du code
rserv ou gnr. Ce code se compose dlments dont la taille est implicitement dtermine par la
pseudo-instruction (1, 2, 4, 8, 10 bytes).
DB
DW
DD
DQ
DT
valeur
?
fact DUP (valeur)
fact DUP (?)
[ ,
value
?
fact DUP (valeur)
fact DUP (?)
[ , ] ]

Systmes informatiques I - Assembleur - 3.27 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
La fonction DUP
La fonction DUP permet de crer des copies multiples dune constante, dune liste de constantes
ou dun champ vide.
Si la reprsentation interne dun sous-champ dpasse cette taille, un message derreur sera
donn. Exception : une chane de caractres dans une instruction DB est considre comme une
liste de sous-champs dun caractre.
Constantes-caractres
La longueur des chanes de caractres dans tous les instructions sauf DB est limite 2 caract-
res; le code correspondant est ajust droite, en ajoutant des 0-bits gauche si ncessaire.
Formats possibles
Comme indiqu, 4 formats sont possibles pour chaque sous-champ :
1. valeur rserver et gnrer un seul lment de code-objet, le
contenu correspondant valeur;
2. ? rserver un seul lment de code-objet sans gnrer de code
(contenu non-dfini);
3. DUP (valeur) rserver et gnrer de multiples lments (nombre
dlments = fact) de code-objet, chacun avec un contenu
correspondant valeur;
4. DUP (?) rserver de multiples lments de code-objet sans
gnrer de code

Systmes informatiques I - Assembleur - 3.28 - Principes dun assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
3
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Rservation de donnes, exemples
1 DB 16
2 DB a
3 DB ab
4 DB a,b,10
5 DB 10 DUP ( )
6 DB 10 DUP (?)
7 DW xy
8 DB 257 ; faux
9 DT abc ; faux

Systmes informatiques I - Assembleur - 4.1 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
4. Le rpertoire dinstructions
Chapitre 4 :
Le rpertoire dinstructions
Rsum :
Opration de lIntel 8086
Oprations utilisant la pile
Branchements
Oprations arithmtiques et logiques
Oprations itratives, actions sur chanes de caractres

Systmes informatiques I - Assembleur - 4.2 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Oprations utilisant la pile
Utilisation dune pile
Ajouter une valeur sur la pile :
1. SP := SP - 2
2. dposer la valeur ladresse dtermine par SP
Retirer une valeur de la pile :
1. Retirer la valeur de ladresse dtermine par SP
2. SP := SP + 2
Note : la pile grandit vers le bas de la mmoire (Intel 8086!)
choix du constructeur!
adresse
0
pile pleine
prochaine position remplie
pile vide
SP
0
SS
4 zro-bits (voir rle des registres de base)

Systmes informatiques I - Assembleur - 4.3 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Oprations utilisant la pile
PUSH
oprande-mot 1. SP := SP - 2 1) cont (pos) = contenu de la
position-mmoire pos
2. cont (SS:SP) := op.-mot
1)
POP
oprande-mot 1. op.-mot := cont (SS:SP)
1)
2. SP := SP + 2
CALL
oprande-near 1. PUSH IP
2. IP := op.-near
CALL
oprande-far 1. PUSH CS
2. PUSH IP
3. CS:IP := op.-far
INT
valeur 1. PUSH flags
2)
2) flags = contenu du registre
dtat (flag register)
2. PUSH CS
3. PUSH IP
4. IF := 0 TF := 0
5. CS:IP := cont (valeur 4)
1) 3)
3) adresse absolue (valeur * 4)
RET
1. POP IP
2. POP CS (seulement si FAR)
IRET
1. POP IP
2. POP CS
3. POP flags
2)

Systmes informatiques I - Assembleur - 4.4 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Oprations de branchement
Forme des instructions de branchement
Note : oprande doit tre du type NEAR, sauf pour les instructions JMP et CALL o il peut
aussi tre FAR
Lassembleur transforme la valeur de loprande du code-source (= adresse immdiate) en une
valeur de dplacement (= adresse relative, seule permise par les instructions-machine).
Branchements sans condition
Branchements pour itrations
instruction oprande
JMP
branchement simple
CALL
avant le branchement, sauver
ladresse de retour sur la pile
Instruction
Actions (phases)
1. mise--jour de CX 2. branchement si :
LOOP
CX := CX-1 CX0
LOOPZ,LOOPE
CX := CX-1 (CX0)(ZF=1)
LOOPNZ,LOOPNE
CX := CX-1 (CX0)(ZF=0)
JCXZ
pas daction CX=0

Systmes informatiques I - Assembleur - 4.5 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Branchements conditionnels
ZF SF CF OF PF opration
condition de branchement
( la suite de lexcution de linstruction CMP A,B)
1
JE,JZ
A=B
0
JNE,JNZ
AB
1
JS
0
JNS
1
JB,JNAE
A<B
comparaison de
valeurs sans signe
0
JNB,JAE
AB
CFZF = 1 JBE,JNA
AB
CFZF = 0
JNBE,JA
A>B

= ou inclusif
SFOF = 1 JL,JNGE
A<B
comparaison de
valeurs avec signe
= ou exclusif
SFOF = 0 JNL,JGE
AB
(SFOF)ZF = 1 JLE,JNG
AB
(SFOF)ZF = 0 JNLE,JG
A>B
1 JO
dpassement arithmtique
0 JNO
pas de dpassement arithmtique
1 JP,JPE
parit paire (even)
0 JNP,JPO
parit impaire (odd)
Notes : Caractres mnmoniques : Equal, Zero, Below, Above, Less-than, Greater-than, Not

Systmes informatiques I - Assembleur - 4.6 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Oprations arithmtiques & logiques
opration
destination source
ags
modifis
r
e
g
8
r
e
g
1
6
s
e
g
m

m
.
i
m
m
.
f
l
a
g
r
e
g
8
r
e
g
1
6
s
e
g
m

m
.
i
m
m
.
f
l
a
g
MOV
/ / / / / / /
aucun / / /
/ / / /
LEA
1)
/ / aucun
XCHG
/ / / / / aucun
PUSH
pile / / aucun
PUSHF pile / aucun
POP
/ 2) pile aucun
POPF
/ pile tous
LAHF
AH
inf aucun
SAHF inf
AH
ACOPSZ
Notes : / peut figurer dans ce champ condition si
source et oprande sont de la mme taille
il a au plus une seule oprande-mmoire
inf 8 bits infrieurs
pile adressage implicite par une action sur la pile
1)
valuation de ladresse-mmoire, rsultat (= adresse effective) registre
2)
sauf CS

Systmes informatiques I - Assembleur - 4.7 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Oprations arithmtiques & logiques (suite)
opration
destination source
ags
modifis
r
e
g
8
r
e
g
1
6
s
e
g
m

m
.
i
m
m
.
f
l
a
g
r
e
g
8
r
e
g
1
6
s
e
g
m

m
.
i
m
m
.
f
l
a
g
ADD
1)
/ / / / / / / ACOPSZ
INC,DEC
/ / / = dest AOPSZ
NEG
2)
/ / / = dest ACOPSZ
NOT
3)
/ / / = dest aucun
SHL,SAL,SHR,SAR
/ / / = dest ACOPSZ
ROL,ROR,RCL,RCR
/ / / = dest CO
MUL,IMUL
DX:AX / / 4)
ACOPSZ
AX / / 4)
DIV,IDIV
AX 5) / /
ACOPSZ
AL 5) / /
Notes : / peut figurer dans ce champ condition si
source et oprande sont de la mme taille
il a au plus une seule oprande-mmoire
1)
dito : ADC, CMP, SUB, SBB, TEST, AND, OR, XOR
2)
complment deux de tous les bits
3)
complment un de tous les bits
4)
lautre oprande-source = AX, resp. AL
5)
dest. = rsultat; reste = DX, resp. DL, diviseur = source; dividende = AX:DX, resp. AX

Systmes informatiques I - Assembleur - 4.8 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
2
15
ou 2
7
2
0
Rotate
Rotate with Carry
Shift logique
( gauche insertion dun 0-bit)
Shift arithmtique
( gauche reproduction du 1er bit)
C
0

Systmes informatiques I - Assembleur - 4.9 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Extension du bit de signe
Illustration laide dun exemple non-Intel (lopration MOV AX, AL nes pas permise):
Deux implantations possibles de lextension du contenu de AL en valeur de 16 bits (choix du
constructeur) :
1. Extension logique : adjonction de huit 0-bits en position de fort poids
2. Extension du bit de signe : reproduction du 1er bit
Les CPUs partir du 80386 ont des instructions qui permettent deffectuer une telle extension:
Note : un problme semblable se prsente si une valeur immdiate reprsente sur 8 bits doit dter-
miner une oprande de 16 bits. Normalement ceci est trait par lassembleur sans que le pro-
grammeur ne sen aperoive.
Certaines oprations doivent ajouter des bits significatifs en dbut dune valeur
p.ex. conversion byte mot, dcalages
MOV AX,AL
!! Opration dfendue !!
CBW
extension du bit de signe de AL vers AH
CWD
extension du bit de signe de AX vers DX
MOVZX AX,AL
adjonction de huit 0-bits
MOVSX AX,AL
reproduction du 1er bit

Systmes informatiques I - Assembleur - 4.10 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Oprations itratives, actions sur chanes de caractres
Rsum des instructions
Note : [ES:DI] et [DS:SI] ... contenu de la position-mmoire
Les registres SI et DI sont modifis aprs lexcution de ces instructions, en fonction du
contenu du bit DF du registre dtat (0 ... incrmenter, 1 ... dcrmenter; lincrment ou
dcrment est de 1 pour les oprandes-byte, de 2 pour les oprandes-mot).
opration
destination source
ags
modifis
r
e
g

8
r
e
g
1
6
s
e
g
m

m
i
m
m
.

a
g
r
e
g

8
r
e
g

1
6
s
e
g
m

m
i
m
m
.

a
g
MOVSW, MOVSB
[ES:DI] [DS:SI] aucun
CMPSW, CMPSB
[ES:DI] [DS:SI] ACOPSZ
SCAW
[ES:DI] AX ACOPSZ
SCAB
[ES:DI] AL ACOPSZ
LODW
AX [DS:SI] aucun
LODB
AL [DS:SI] aucun
STOW
[ES:DI] AX aucun
STOB
[ES:DI] AL aucun

Systmes informatiques I - Assembleur - 4.11 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Contrle des itrations
Les instructions de ce groupe peuvent tre excutes de manire itrative en les faisant prcder
dun code de rptition (REP, REPE, REPZ, REPNE, REPNZ).
Ce prfixe provoque lexcution rptitive (CX fois) de lopration et dtermine une condition
darrt supplmentaire.
Avant chaque itration (et avant le teste de la condition de sortie), CX se dcrment de 1.
Exemple :
Prfixe Rptition si CX0 ou si :
REP
pas dautre condition
REPE,REPZ
ZF=1
REPNE,REPNZ
ZF0
MOV CX,17
REP
; Recopier la valeur de AL
STOB
; dans 17 bytes conscutifs

Systmes informatiques I - Assembleur - 4.12 - Le rpertoire dinstructions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
4
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Liste des instructions
Contrle des bits du registre flags
1) CLx clear, CMx complement, STx set
Diverses oprations
Opration Action
CLC,CMC,STC
modification
1)
du bit C (carry)
CLD,STD
modification
1)
du bit D (direction oprations-chanes)
CLI,STI
modification
1)
du bit I (interrupt enable)
Opration Action
AAM,AAS,DAA DAS
Adaptation de la reprsentation doprandes ASCII et BCD avant/
aprs une opration arithmtique (e.g. addition de 2 car. ASCII).
CBW
Extension du bit de signe du registre AL vers le registre AX
CWD
Extension du bit de signe du registre AX vers le registre DX
ESC
Mettre une oprande destine au co-processeur sur le bus.
HLT
Arrter le CPUavant lexcution de la prochaine instruction; reprise
p.ex. par une interruption.
WAIT
Suspendre le CPU, attendre un niveau 1 au pin TEST du CPU.
LOCK
Instruction prfixe pour bloquer le bus pour la totalit des cycles
ncessaires pour excuter une opration.

Systmes informatiques I - Assembleur - 5.1 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
5. Variables et expressions
Chapitre 5 :
Variables et expressions
Rsum :
Lutilisation de variables dans un assembleur
Les expressions
Lutilisation de fonctions pour laccs aux conditions
gres par lassembleur

Systmes informatiques I - Assembleur - 5.2 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Variables
En gnral, cet objet est la reprsentation dune valeur
assembleur pour le CPU8086: objets typs (= exception par rapport aux autres assembleurs)
Justifications principales pour le typage:
associer un registre de base spcifique aux symboles dsignant une adresse-mmoire,
distinguer entre contenant-mot et contenant byte,
distinguer entre cibles pour branchement avec ou sans modification du registre CS.
Composantes dune variable
Une variable est dfinie par:
\\
un symbole unique qui dsigne la variable (= chane de caractres, introduite par le
programme-source, obissant certaines rgles syntaxiques) (voir champ dtiquette)
des valeurs et caractristiques (types) associes la variable ;
ceux-ci sont dtermines par lassembleur
- en fonction de lopration par laquelle la variable est dfinie,
- de ltat de lassemblage au moment o la variable est dfinie.
Variable = reprsentation dun objet gre par lassembleur
1. Le nom de la variable :
2. Les attributs de la variable :

Systmes informatiques I - Assembleur - 5.3 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Dfinition dune variable
Une variable est (re-)dfinie quand son nom figure dans le champ dtiquette dune instruction
(dont les autres champs peuvent tre vides).
Note : Problme des rfrences en avant ... assemblage en deux passes
Visibilit dune variable
La dfinition de la variable se solde par la cration dune entre dans la table des symboles,
table gre par lassembleur et qui disparat la fin de lassemblage.
Visibilit = contexte de la validit de lassociation nomvaleur; correspond la dur de vie
de la variable - la priode pendant laquelle cette association reste dfinie.
Cas normal:
Cas particulier:
variable locale visibilit restreinte au code-source dfinissant la variable: la variable
nest dfinie que dans un contexte local.
variable globale visibilit au del du code dans lequel est dfini la variable: la variable
est dfinie dans un contexte global.
lassembleur enregistre la valeur finale des variables globales dans
un tableau auxiliaire du code-objet.
exemples: les variables dclares PUBLIC
code cr en vu dune mise-au-point laide dun
debugger symbolique

Systmes informatiques I - Assembleur - 5.4 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Types de variables
Distinction entre 3 types de variables :
- tiquettes
- variables relogeables
- constantes
Etiquettes (labels)
Etiquettes oprandes pour les oprations de branchement
Ce type de variable ne peut tre dfinie qu lintrieur de segments lis CS (voir ASSUME).
Attributs
segment nom du segment o ltiquette est dfinie
offset adresse relative dans le segment (= sa valeur)
type tiquette-cible pour les branchements
NEAR
lintrieur dun segment,
FAR
dans un autre segment (syntaxe
= segment : offset)
Dfinition
dans une instruction
de la forme :
tiquette [

instruction] type implicite = NEAR


tiquette:[

instruction] type implicite = FAR


tiquette

LABEL

NEAR
FAR
choix explicite du type

Systmes informatiques I - Assembleur - 5.5 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Variables relogeables (variables)
Variables oprandes pour les oprations se rfrant la mmoire (accs aux donnes)
Constantes (numbers)
Constantes reprsentation dune valeur numrique
Attributs
segment voir tiquettes
offset voir tiquettes
type dpend de la pseudo-opration utilise pour dfinir
la variable :
BYTE, WORD, DWORD,
QWORD, TBYTE, STRUCT
Dfinition
dans une instruction
de la forme :
variable

DB,DW,DD,DQ,DT,
RECORD,STRUCT
[

oprande ]
Attributs
offset valeur numrique attribue la variable
Dfinition
dans une instruction
de la forme :
variable

valeur re-dfinition permise


variable

EQU

valeur. re-dfinition dfendue

Systmes informatiques I - Assembleur - 5.6 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Expressions
Lassembleur permet dutiliser des expressions partout o une valeur numrique est attendue; le
rsultat de lvaluation sera substitu lexpression.
Lexpression sera value en respectant lordre de prcdence des oprateurs, prcdence gale,
de gauche droite
oprateur prcdence
exemples, commentaires
expression rsultat
* / MOD
5
14 MOD 3
2
SHL SHR
25
101B SHL 3
010100B (dcalage)
+ -
6
2 + 3
5
EQ NE LT
7
3 EQ 3
0FFFFH
LE GT GE
7
3 NE 3
0
NOT
8
NOT 0
0FFFFH
AND
9
12H AND 3
2
OR
10
11H OR 3
13H
XOR
10
11H XOR 3
1H
HIGH LOW
4
HIGH 1234H
12H (high, low byte)
:
1
symbole :
dfinir symbole (type = NEAR)
( )
1

Systmes informatiques I - Assembleur - 5.7 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Fonctions
Les fonctions permettent davoir accs certaines conditions gres par lassembleur. Lorsque
le nomdune fonction figure dans une instruction, lassembleur substitue le rsultat de lexcution
de la fonction au nom de la fonction.
Note : Lassembleur 8086 offre un nombre important de fonctions (accs et gestion des attributs
associs aux symboles!). Cet aspect complexe ne se retrouve pas dans les assembleurs dautres
CPU.
Ce cour ce concentre sur la fonction $ (pour laquelle un correspondant existe dans la
plupart des assembleurs. Les autre fonction ne sont dcrites qu titre de documentation.
Fonction pour laccs au compteur de position
Fonctions pour obtenir les attributs dun RECORD
fonction valeur
$ La fonction $ fournit une valeur qui, tout instant, est gal au compteur de
positions actuel avec les attributs correspondant.
fonction valeur
MASK
Masque pour isoler un champ dun record par un et logique.
WIDTH
Nombre de bits dans un record.

Systmes informatiques I - Assembleur - 5.8 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Fonctions pour obtenir les attributs dune variable
Obtenir la valeur dun attribut par lutilisation dune fonction :
fonction valeur
SEG
Base du segment dont le nom = symbole ou base du segment o le symbole est
dfini.
OFFSET
Adresse relative ou valeur attribue au symbole.
TYPE
code reprsentant le type :
nombre de bytes (variable dadresse),
-2 pour FAR, -1 pour NEAR (tiquette),
0 (variable absolue).
LENGTH
Nombre dlments associs loprande, p.ex.
XX
DW
LENGTH
100 DUP (1)
XX ; donne 100
SIZE
Nombre de bytes rservs (ne peut tre utilis quavec les oprandes du
genre DUP); rsultat = LENGTH * TYPE (200 dans lexemple prcdant).

Systmes informatiques I - Assembleur - 5.9 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Fonctions pour manipuler les attributs dune variable
Dterminer la valeur dun attribut par lutilisation dune fonction :
1
) un des types
BYTE, WORD, DWORD, QWORD, TBYTE, NEAR, FAR
fonction valeur
SHORT
Utiliser une tiquette du type FAR en faisant apparatre son type comme
NEAR.
PTR
Utiliser la valeur dune expression (argument suivant PTR) en lui attribuant
un type explicitement spcifi par largument suivant PTR
1
), qui est en rgle
gnral diffrent du type implicite de lexpression.
Par exemple
xyz
DB
MOV
4
AX,WORD PTR xyz
THIS
Dfinir le symbole figurant dans le champ dtiquette comme une variable
dun type spcifi (argument suivant THIS); le reste des attributs est dter-
min par le compteur de position et le segment courant.
Par exemple
xyz
abc
DB
EQU
4
THIS WORD

Systmes informatiques I - Assembleur - 5.10 - Variables et expressions


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
5
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Fonctions comme oprateurs dans une expression
oprateur
prc-
dence
exemples, commentaires
expression rsultat
SHORT
11
JMP SHORT farsymbol
SEG
3
SEG seg
base du segment seg
SEG
var base du segment contenant la variable
var
LENGTH
1
LENTH dup
nombre dlments dans la zone dup
SIZE
1
SIZE dup
nombre de bytes dans la zone dup
TYPE
3
TYPE symb
code pour le type de la variable symb
MASK
1
MASK champ
masque pour isoler la zone champ
WIDTH
1
WIDTH champ
longueur de la zone champ dun record
OFFSET
3
OFFSET symb
adresse relative de la variable symb
PTR
3
WORD PTR var
valeur de var, avec le type WORD
THIS
3
THIS BYTE
segment et compteur de position courants
(type = BYTE)

Systmes informatiques I - Assembleur - 6.1 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
6. Aspects mta-assembleur
Chapitre 6 :
Aspects mta-assembleur
Rsum :
Assemblage conditionnel et rptitif
Macro-assemblage
Procdures et dcomposition du programme en modules
Contrle de limpression

Systmes informatiques I - Assembleur - 6.2 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Assemblage conditionnel
Suppression conditionnelle de lassemblage dun bloc de lignes de code-source.
Conditions reconnues
cond cond

ou

assemblage si la condition cond est satisfaite


ENDIF ELSE

assemblage si la condition cond nest pas satisfaite


ENDIF
condition oprande(s) assemblage si :
IF
IFE
expression
expression
expression 0
expression = 0
IF1
IF2
en 1er passage de lassembleur
en 2me passage de lassembleur
IFDEF
IFNDEF
variable
variable
variable est dnie
variable nest pas dnie
IFB
IFNB
<arg>
<arg>
arg est blanc
arg nest pas blanc
IFIDN
IFNIDN
<arg1>,<arg2>
<arg1>,<arg2>
arg1 = arg2
arg1 arg2
comparaison de
chanes de caractres

Systmes informatiques I - Assembleur - 6.3 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Utilisation
Assemblage optionnel
Conditions figes par dclaration (EQU), p. ex. code pour diffrentes configurations,
options de mise-au-point, etc.
Conditions dynamiques
Conditions variant en fonction de ltat de lassemblage, utilisation surtout dans des
macro-instructions
Exemple 1
Exemple 2
MACH EQU 780
; type de machine (750 / 780)
IFE MACH-750
; code spcifique VAX 11/750
ENDIF
IFE MACH-780
; code spcifique VAX 11/780
ENDIF
IF (OFFSET $) MOD 256
DB 256-((OFFSET $) MOD 256) DUP(?)
ENDIF
; le prochain byte gnr sera plac une
; adresse relative qui est un multiple de 256

Systmes informatiques I - Assembleur - 6.4 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Assemblage rptitif
Assemblage rptitif dun bloc de lignes de code-source (= ddoublement automatique du bloc)
Implantation dans lassembleur par une opration de substitution de chanes :
1. re-criture du code-source (n fois, en effectuant les modifications ventuellement nces-
saires)
2. assemblage du code-source ainsi obtenu
les instructions figurant entre les deux pseudo-instructions
sont traites count fois
REPT count

ENDM
IRP symb,<arg
1
, , arg
n
>

comme REPT, mais le nombre de rptitions = nombre dargu-


ments; symb prend successivement les valeurs des arguments
ENDM
IRPC symb,<chane> ou symb,chane

comme REPT, mais le nombre de rptitions = nombre de caractres


dans chane; toute occurrence de symb est successivement
remplace par les caractres de la chane
ENDM

Systmes informatiques I - Assembleur - 6.5 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Exemples
x = 0
DB 0
DB 1
DB 2
REPT 3
DB x
x = x+1
ENDM
IRPC xx,012
DB 0
DB 1
DB 2
DB xx
ENDM
IRPC xx,012
DB 0
DB 1
DB 2
DB xx
ENDM
IRPC xx,012
DB 0
DB 1
DB 2
DB 3&xx
ENDM

Systmes informatiques I - Assembleur - 6.6 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Substitutions de chanes
Traitement interne par lassembleur
Prog
1. Manipulation du code source
2. Assemblage conditionnel : suppression conditionnelle de code-source
- Assemblage rptitif :
a. lecture rptitive du code-source,
b. opration de substitution de chanes de caractres
- Macro-assemblage :
a. remplacement de lappel par le corps
b. opration de substitution de chanes de caractres
3. Assemblage du code ainsi obtenu
Note : Ce modle est utile pour laspect conceptuel; la ralisation concrte et effective dans un
assembleur est, en gnral, diffrent.
Modle substitution de chanes en support de la comprhension des oprations
de lassemblage conditionnel
de lassemblage rptitif
du macro-assemblage

Systmes informatiques I - Assembleur - 6.7 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Macro-assemblage
Dfinition dune macro-instruction
Dfinition du nom de la macro-instruction, association du corps au nom :
Appel dune macro-instruction
Principes de la substitution
substitution = traitement de chanes;
chaque occurrence dun paramtre formel (parf
i
) est remplace par largument correspon-
dant (arg
i
);
le reste des oprations de lassembleur ninterviennent quaprs cette substitution;
des symboles rencontrs dans les champs dtiquettes des instruction gnres au cours de la
substitution donnent lieu la dfinition de variables qui sont globalement visibles.
macname MACRO [ parf
1
[ , parf
2
... ] ]
entte

corps
ENDM
Substitution de linstruction dappel par le corps de la macro-instruction
des arguments actuels aux paramtres formels :
macname [ arg
1
[ ,arg
2
... ] ]

Systmes informatiques I - Assembleur - 6.8 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Dclaration de variables locales
La validit de la dfinition de variables peut tre restreinte la zone correspondant au code gnr
par lappel de la macro-instruction (fautes dassemblage suite la dfinition rpte du mme
symbole si une macro-instruction est appele plusieurs fois !).
Ces variables doivent tre dclares comme paramtres formels et figurer comme argument dune
pseudo-instruction LOCAL.
Lassembleur remplacera alors chacun de ces symboles par un symbole unique (..0001, ..0002, etc.)
lors de chaque appel.
Note : Cette utilisation du terme variable local est quelque peu diffrente de celle introduite dans
le chapitre sur les variables! Notion commune: restriction de la visibilit dune variable
un contexte local. Cette dfinition de la notion de variable local est compatible avec lutili-
sation dans les langages levs structure de bloc.
Sparateur de chanes de caractres
LOCAL [ parf
1
[ ,parf
2
... ] ]
& ... sparateur transparent pour le reste de lassemblage, permettant de sparer loccurrence
dun paramtre formel des caractres avoisinants.
Par exemple : (xx = paramtre formel, 12 dans lexemple)
abc&xx&efg abc12efg

Systmes informatiques I - Assembleur - 6.9 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Exemples
Macro instruction pour imprimer une chane de caractres
Impression dune chane fournie comme argument (sauvetage de tous les registres utiliss
sur la pile). Pour imprimer la chane abcd :
1 Appel (illustration): PRSTR abcd
2 Dfinition: PRSTR MACRO chaine
3 LOCAL temp
4 tdata SEGMENT
5 temp DB chaine ; chane en zone donnes
6 DB $ ; terminaison de la chane
7 tdata ENDS
8 PUSH AX ; sauver les
9 PUSH DX ; registres
10 PUSH DS ; utilises
11 MOV AX,tdata
12 MOV DS,AX ; segment avec chane
13 MOV DX,OFFSET temp ; dplacement au dbut
14 MOV AH,9h ; no. fonction impression
15 INT 21h ; appel fonction du DOS
16 POP DS ; rtablir les
17 POP DX ; registres
18 POP AX ; utilises
19 ENDM

Systmes informatiques I - Assembleur - 6.10 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Macro instructions pour la gestion de files dattente
Dfinir une structure de donnes en support dun traitement de files: usage de macro-
instructions en support de structures complexes et dopration pour leur gestion.
1 VOID EQU 0ffffh ; lment vide
2 Q_ITEM STRUC ; descripteur dlment de file
3 i_next DW ? ; chanage prochain lment
4 i_data1 DW ? ; donnes (bidon)
5 i_data2 DW ? ; donnes (bidon)
6 Q_ITEM ENDS
7 Q_DESCR STRUC ; descripteur de file
8 q_head DW ? ; premier lment (VOID si vide)
9 q_tail DW ? ; dernier lment (VOID si vide)
10 q_stamp DW ? ; heure dernire action
11 Q_DESCR ENDS
Descripteurs
de file
Elments de file
(allocation dynamique)

Systmes informatiques I - Assembleur - 6.11 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
12 Q_new MACRO $q ; dfinir une file de nom = arg1
13 tdata SEGMENT
14 $q Q_DESCR <?> ; crer le descripteur de file
15 tdata ENDS
16 MOV $q.q_head,VOID ; la file est vide
17 MOV $q.q_tail,VOID
18 MOV AX,system_time ; horloge systme
19 MOV $q.q_stamp,AX ; temps dernire action
20 ENDM
21 Q_app MACRO $q ; ajouter un l. (BX) la fin de arg1
22 LOCAL Q_app1, Q_app2
23 MOV OFFSET i_next[BX],VOID ; pas de successeur
24 MOV DI,$q.q_tail ; DI = ancien dernier lment
25 CMP DI,VOID
26 JE Q_app1
27 MOV OFFSET i_next[DI],BX ; non-vide: lment suit lment
28 JMP Q_app2
29 Q_app1: MOV $q.q_head,BX ; vide: nouveau 1er lment
30 Q_app2: MOV $q.q_tail,BX ; nouveau dernier lment
31 MOV AX,system_time ; horloge systme
32 MOV $q.q_stamp,AX ; temps dernire action
33 ENDM

Systmes informatiques I - Assembleur - 6.12 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
34 ; Initialisation
35 Q_new high_pr ; file pour priorit leve
36 Q_new low_pr ; file pour priorit basse
37 ; Produire un lment
38 CALL new_element ; crer un nouvel lment (base = BX)
39 MOV i_data1[BX], ; dfinir
40 MOV i_data2[BX], ; son contenu
41 Q_app high_pr ; insrer llment en fin de la file
Non-inclu dans lexemple:
la procdure new_element
- elle alloue la mmoire (gestion dynamique) pour un nouvel lment
- au retour, le registre BX dsigne ladresse de cet lment
la gestion de la position system_time - on admet que cette position con-
tient tout instant la valeur de lhorloge du systme
les instructions ASSUMEet SEGMENTpour la procdure principale, ainsi que
la prparation correspondante des registres de base
dd

dd

dd

dd

dd

dd

Systmes informatiques I - Assembleur - 6.13 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Importation de code-source
INCLUDE name
Insrer le contenu du fichier name en lieu et
place de linstruction INCLUDE

Systmes informatiques I - Assembleur - 6.14 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Dcomposition en modules
Procdures
Utilisation de variables globales
symb PROC
NEAR
FAR
Dfinir symb comme une tiquette, par dfaut du
type NEAR. Les instructions RET lintrieur du
bloc seront du type intra-segment si le type est
NEAR, sinon du type inter-segment.
symb ENDP
Fin du bloc dfini par PROC.
PUBLIC symb1 [ ,symb2 ... ]
Les symboles indiqus sont accessibles lditeur de
liens, donc dautres (sous-) programmes
EXTRN symb1 : type1 [ ,symb2 : type2 ... ]
Les symboles indiqus ne sont pas dfinis dans le
programme actuellement assembl et devront tre
fixs par lditeur de liens.
type
i
BYTE, WORD,DWORD,
NEAR, FAR, ABS

Systmes informatiques I - Assembleur - 6.15 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Utilisation de procdures, exemple
Note : Le type de linstruction CALL utilis ne dpend que du type du symbole fourni en argument :
nrp PROC NEAR
le symbole nrp obtient le type NEAR
RET utilisation de linstruction RET intra-segment (PROC
prcdant tait NEAR)
RET
nrp ENDP
frp PROC FAR
le symbole frp obtient le type FAR
RET
utilisation de linstruction RET-inter segment (PROC
prcdant tait FAR
RET
frp ENDP
CALL nrp
utilisation de linstruction CALL intra-segment (nrp
est du type NEAR)
CALL frp
utilisation de linstruction CALL-inter segment (frp
est du type FAR)
- si le type est FAR, un appel inter-segment est compos, mme si la procdure appele
se trouve dans le mme segment et quun appel inter-segment ne serait pas ncessaire;
- lappel dun symbole du type NEAR, mais dclar dans un autre segment, correspond
une erreur de programmation

Systmes informatiques I - Assembleur - 6.16 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Contrle de limpression
Suppression de limpression
Lignes den-tte
Mise-en-page
Note : Leffet de toutes les pseudo-instructions contrlant ltat du mode dimpression persiste
.LIST
Permettre (.LIST) / suspendre (.XLIST)
limpression des instructions assembles

.XLIST
TITLE
SUBTTL
text
Dterminer le contenu de la 1re (TITLE) et
2me (SUBTTL) ligne imprimes sur chaque
page
PAGE
ydim,xdim
+
Dterminer les dimensions dune page (nombre
de lignes et de colonnes), le numro de la section
(+), ou provoquer un saut de page (rien)

Systmes informatiques I - Assembleur - 6.17 - Aspects mta-assembleur


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
6
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Impression de code conditionnel
Impression des macro-instructions
Contrle de limpression du code-source rsultant de la substitution de lappel dune macro-
instruction :
.SFCOND
.LFCOND
.TFCOND
Supprimer (.SFCOND) ou provoquer (.LFCOND)
limpression des zones de code conditionnel. .TFCOND
rtablit le mode pris par dfaut.
.XALL
Supprimer (.SFCOND) ou provoquer (.LFCOND)
limpression des zones de code conditionnel. .TFCOND
rtablit le mode pris par dfaut.
.SALL
Supprimer limpression de toute instruction rsultant
de lappel dune macro-instruction.
.LALL
Imprimer toutes les instructions rsultant de lappel
dune macro-instruction, lexception de celles com-
menant par ;; (deux point-virgules).

Systmes informatiques I - Assembleur - 7.1 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
7. Extensions de larchitecture de la famille 8086
Chapitre 7 :
Extensions de larchitecture de la famille 8086
Rsum :
Evolution, aspects communs entre processeurs de la famille 8086
Agrandissement de la taille dun mot CPU
Agrandissement de lespace-mmoire
Descripteurs de segment, real mode et protected mode
Pagination
Extension du rpertoire dinstructions

Systmes informatiques I - Assembleur - 7.2 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Evolution de larchitecture du CPU 8086
m
o
t
-
C
P
U
(
b
i
t
s
)
v
i
t
e
s
s
e
h
o
r
l
o
g
e
b
u
s
-
d
o
n
n

e
s
m

m
o
i
r
e
c
a
c
h
e
e
s
p
a
c
e
m

m
o
i
r
e
b
u
s
-
a
d
r
e
s
s
e
s
lments nouveaux
(bits) (MHz) (bits) (bytes) (bytes) (bits)
8086 16 16 - 1 M 20
80186 16 16 - 1 M 20
80286 16 16 - 16 M 24 mode protg (OS utilisateur!)
instructions pour permettre laccs un
espace de mmoire agrandi
80386 32 32 - 4 G 32 MMU (memory management unit)
80486 32 50 32 8 K 4 G 32 co-processeur rel, instructions avec
double vitesse
Pentium
(80586)
32 60 64 16 K 4 G 32 co-processeur rel, deux processeurs
(entiers) travaillant en parallle
Notes: Le Pentium ft initialement conu sous le nom de 80586, nom abandonn par la suite
pour des raisons de protection de marque (pas possible de protger un nomnumrique)
Pour chaque type de CPU, des variantes existent, p.ex. avec de largeur de bus diffrentes
(tel que le 8088 avec un bus donns de 8 bits) ou diffrents taux de lhorloge CPU.

Systmes informatiques I - Assembleur - 7.3 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Agrandissement de la taille dun mot-CPU a 32 bits
16 bits 16 bits implantation physique des registres
80386 et suite registres de 32 bits,
avant 80386 style 8086 (16 bits);
80386 et suite 2 modes de fonctionnement du
CPU: choix entre
- mode 16 bits
- mode 32 bits;
en mode 32 bits: si un registre de 8 ou 16 bits est
modifi, seulement les 8 ou 16 bits correspondant
du registre physique de 32 bits seront modifis;
EAX
AX
AH AL

EDX
DX
DH DL
ESP
SP
EBP
BP
ESI
SI
EDI
DI
EIP
IP
EFLAGS
FLAGS

Systmes informatiques I - Assembleur - 7.4 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Espace-mmoire, mode dadressage
Concept
Modifications du mcanisme dadressage de segments physiques:
adresses de base > 2
20
: contenu des registres de base = descripteur (au lieu dune
adresse);
taille des segments > 64 Kbytes : adresses effectives sur 32 bits, extension de la porte
de ladresse-limite par le granularity bit du descripteur.
contrle de laccs la mmoire: les descripteurs contiennent une adresse-limite et
des bits de contrle (protection);
real memory (1 Mbytes)
0000000
0FFFFF
16
FFFFFF
16
extended memory
80286 : 15 Mbytes
Pentium : 4 Gbytes

r
e
a
l

p
r
o
t
e
c
t
e
d

accessible en
mode dadressage:
Note : Suite un Reset
(p.ex. enclenchement
de lalimentation) le
CPU se trouvera tou-
jours en mode real
mode addressing

Systmes informatiques I - Assembleur - 7.5 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Descripteurs de segments
Note : Les bytes 6 et 7 dans un descripteur du 80286 sont toujours 0 (nont pas de signification).
byte # Signication du contenu du descripteur
0
adresse-limite
(bits #15 - #0)
2
adresse de base
(bits #15 - #0)
4
adresse de base
(bits #23 - #16)
contrle de laccs
6
adresse-limite
(bits #19 - #16)
AV O D G
adresse de base
(bits #31 - #24)
adresse-limite
valeur (80286: 20 bits, 80386 et au del: 32 bits) pour dterminer la der-
nire adresse valable du segment;
adresse de base
valeur (80286: 16 bits, 80386 et au del: 20 bits) dterminant ladresse
de base du segment; valeur * 4096 (1000
16
) si le bit G vaut 1
contrle de laccs liste de bits: contrle du mode de slection et protection du segment
AV
G
1 le segment est disponible (available), sinon 0;
O
D 1 instructions sur oprandes 32 bits, 0 instructions compatible 8086;
G granularity bit, voir adresse de base.

Systmes informatiques I - Assembleur - 7.6 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Dsignation dun descripteur par un registre de base
Concept: registre de base devient une indirection sur une structure dterminant ladresse
Pagination
Un mcanisme de pagination existe pour le CPU80386 et ses successeurs; ce mcanisme sapplique
au rsultat de lvaluation du registre de segment, respectivement du descripteur de segment.
Concepts:
Lexcution dun programme (y compris lapplication du mcanisme de segmentation - style
8086, ou utilisation de descripteurs) produit des linear address (= adresses virtuelles).
Avant daccder la mmoire physique, une telle adresse est convertie en physical
address en utilisant un dispositif de pagination (technique de pagination habituelle).
Le CPU contient un ensemble de registres de contrle (control registers CR0 CR3,
un registre CR4 nexiste que dans le Pentium); ces registres dterminent:
- si ou sinon le mcanisme de pagination sera utilis,
- les conditions particulires et les paramtres appliquer.
Registre de base: Slecteur TI PR
Slecteur par lintermdiaire dun numro de descripteur dsigner la reprsen-
tation du descripteur en mmoire (table de descripteurs locale ou globale)
TI 0 : table globale, 1 : table locale
PR niveau de privilge (mcanisme de contrle de laccs)

Systmes informatiques I - Assembleur - 7.7 - Extensions de larchitecture de la famille 8086


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
7
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Extension du rpertoire dinstructions
Maintien de la compatibilit avec le 8086
recouvrement entre registres de diffrentes tailles;
deux modes pour lexcution doprations
- 16-bit mode: correspond au 8086,
- 32-bit mode: support de laccs aux registres de 32 bits et du calcul dadresses
(virtuelles) de 32 bits;
le mode est dtermin par le descripteur de segment (i.e. son bit D) do provient
linstruction.
Enrichissement des modes dadressage
Possibilit dutiliser tous les registres de 32 bits (EAX ESI) pour lindexation.
Nouveau mode: Scaled Index Addressing (double indexage, 2me registre fois 2, 4, 8)
Instructions pour lexploitation des nouvelles caractristiques du CPU, p.ex.
INVD(invalid data cache): marquer le contenu de la mmoire-cache comme non-valide
LGDT, LLDT(load global/local descriptor table): dfinition de la table de descripteurs.
Instructions supplmentaires pour augmenter le confort de programmation, p.ex.
LDS, LSS etc.: faciliter la dfinition du contenu des registres segment
BTC (bit test and complement) et oprations similaires: manipulation de bits.
2 registres de base supplmentaires (FS, GS)

Systmes informatiques I - Assembleur - 8.1 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
8. Entre / sortie
Chapitre 8 :
Entre / sortie
Rsum :
Equipements dentre / sortie
Architecture
Principe de fonctionnement
Adressage des registres internes
Programmation des oprations dentre / sortie
Synchronisation de la fin des oprations
Initialisation des quipements dentre / sortie
Exemple: linterface ACIA (Motorola 6850)

Systmes informatiques I - Assembleur - 8.2 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Entre / sortie dans un systme micro-informatique
Concept architectural
Adresses
Donnes
Bus
Equipements
dentre / sortie
Adresses
Donnes
Contrle
Partie interface
P
a
r
t
i
e

q
u
i
p
e
m
e
n
t

Interface
bus
Registres
internes
Contrle
CPU
Mmoire

Systmes informatiques I - Assembleur - 8.3 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Fonctionnement des oprations dentre / sortie
Echange de donnes entre
Synchronisation entre activits se droulant diffrentes vitesses et rythmes
Droulement de lentre / sortie en 2 phases :
Transfert interne
change de donnes entre lquipement central (e.g. un registre du CPU) et un registre
interne de lquipement priphrique,
Transfert physique
change de donnes entre un registre interne de lquipement priphrique et un
support de donnes extrieur.
- lquipement central (CPU / mmoire)
- un quipement priphrique
et
registres internes des quipements
(dpt intermdiaire des donnes)

Systmes informatiques I - Assembleur - 8.4 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Registres internes des quipements dentre / sortie
Registres pour le transfert des donnes
Donnes reues par lquipement - transfrer par la suite au CPU ou la mmoire.
Donnes transmettre par lquipement - elles avaient t au pralable transfres du
CPU ou de la mmoire.
Registres pour le contrle des oprations dentres / sorties
Information binaire reprsentant ltat de fonctionnement actuel de lquipement, prt
pour la consultation par le CPU.
Liste de bits pour contrler des fonctions particulires de lquipement; initialise par
le CPU pour contrler le droulement des oprations dentres / sorties.
Valeurs numriques lies au droulement de lopration dentre / sortie (p. ex.
compteur de bytes / mots, adresse physique du bloc lu/crit, etc.).
Registre de rception (accs-bus = lecture) :
Registre de transmission (accs-bus = criture) :
Registre(s) de status (accs-bus = lecture) :
Registre(s) de contrle (accs-bus = criture) :
Registres numriques auxiliaires (sens de laccs selon fonction du registre) :

Systmes informatiques I - Assembleur - 8.5 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Droulement dune opration dentre / sortie
Deux mthodes pour laction
0
:
Dclenchement automatique : Le dpt dune nouvelle valeur dans le registre
Transmit dclenche automatiquement sa transmission physique par lquipement.
Dclenchement explicite : Le CPU doit excuter une instruction dentre / sortie,
p.ex. envoyer une valeur particulire un registre de contrle.
Ecriture
0 Transfert des donnes transmettre du CPU (ou de la mmoire) au registre Transmit
O Dclenchement de lopration physique dcriture
O Vrification si lopration dcriture est effectivement termin
Adresses
Donnes
Contrle
Interface
bus
Registres
internes
Contrle
0
byte
transmettre
adresse du
registre:
status
0Transmit
O
Status
O
O
Transmit
Status
Receive

Systmes informatiques I - Assembleur - 8.6 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Trois mthodes pour laction O:
Dclenchement automatique : le prlvement dune valeur du registre Receive
dclenche automatiquement la prochaine lecture physique.
Dclenchement explicite : le CPU doit excuter une instruction dentre / sortie, p.
ex. envoyer une valeur particulire un registre de contrle.
Lecture permanente : Stocker toute donne reue par lquipement immdiatement
dans le registre Receive.
Lecture
0 Dclenchement de lopration physique de lecture
O Vrification si lopration de lecture est effectivement termine
O Transfert des donnes reues du registre Receive au CPU (ou la mmoire)
Interface
bus
Registres
internes
Contrle
0
O
Transmit
Status
Receive
byte reu O
adresse du
registre:
O
Status
O
Receive
Adresses
Donnes
Contrle
status

Systmes informatiques I - Assembleur - 8.7 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
1. Le CPU dfinit: Adresse-secteur, Adresse-mmoire, Compte-bytes, Contrle
2. Linterface commence lopration: positionnement de la tte (Adresse-secteur)
3. Linterface excute un processus itratif jusqu ce que Compte-bytes arrive 0
- lecture/criture dun byte: registre Donne (squence avec DMA inverse si criture)
- excution dun cycle-bus DMA: transfert registre Donne Adresse-mmoire
- mise--jour des registres: Adresse-mmoire + 1, Nombre-bytes - 1
4. Fin itration
- modification du registre Status pour indiquer opration complte
- gnration dune interruption (conditionnel, selon liste de bits dans Contrle)
Esquisse dun contrleur DMA
(Direct Memory Access):
illustration du principe de fonc-
tionnement (exemple: contrleur
de disque)
Interface
bus
Contrle
Donne
Status
Contrle
Donnes
Contrle
Adresse-secteur
Adresse-mmoire
Compte-bytes
Adresses
Registres
internes

Systmes informatiques I - Assembleur - 8.8 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Fin de lopration dentre / sortie physique
1. Observation du registre status : Le CPU consulte (priodiquement) le contenu du
registre status pour connatre ltat davancement de lopration en cours.
2. Interruption : Lquipement dclenche une interruption et, par consquent, lexcution
dune routine de traitement dinterruption par le CPU.
= Attente active

Systmes informatiques I - Assembleur - 8.9 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Interruption dentre / sortie
Droulement dune interruption entre / sortie
Conditions dclenchant une interruption
La slection des conditions actives est dtermine par le contenu dun registre de contrle.
Exemples :
- nouvelle donne reue,
- transmission dune donne accomplie,
- faute dtect par lquipement, etc.
Pour une opration sans interruption : ne slectionner aucune de ces conditions, p. ex. dans des
application trs simples.
Condition particulire de lquipement
Dclenchement dune interruption
Condition particulire de lquipement
Dclenchement dune interruption

Systmes informatiques I - Assembleur - 8.10 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Initialisation dun quipement dentre / sortie
Opration reset
= remise dans un tat de repos bien dfini :
aprs lenclenchement de lalimentation lectrique,
suite la dtection derreurs,
lors de modifications du mode dopration.
Deux types de reset :
Dclench par un signal externe (p. ex. ligne du bus), souvent commun tous les
quipements dun systme (= Reset gnral).
Dclench par le dpt dune valeur particulire dans un registre de contrle de
lquipement.
Squence dinitialisation
Dfinit le mode dopration dun quipement par une suite doprations dentres / sorties,
dterminant le contenu de chaque registre de contrle spcifique au mode.
Gnralement ncessaire aprs une opration Reset.
1. Hard Reset :
2. Soft Reset : (= Reset programm)

Systmes informatiques I - Assembleur - 8.11 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Adressage des registres internes
Adresses-bus individuelles
Adresse individuelle pour chaque registre permet de choisir un registre spcifique.
Gnration dun signal adresse slectionne lorsque cette adresse apparat sur le bus.
Choix dune adresse, dtection de la slection de ladresse:
*
0
1

Bus
(signaux
adresse)

Adresse slectionn
Ponts (straps)
(exemple : adresse 5)
0
1
0
1
0
1
0
1
=
?
C
o
m
p
a
r
a
t
e
u
r

Systmes informatiques I - Assembleur - 8.12 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Regroupement des adresses des registres dun quipement :
Normalement une seule adresse de base peut tre configure pour un quipement.
Adresses des registres de lquipement suite contigu commenant cette adresse.
Recouvrement dadresses :
Deux registres dont un est accessible seulement en lecture et lautre seulement en criture
peuvent porter la mme adresse.
Cette technique est souvent utilise pour des paires de registres dont les fonctions sont
complmentaires (p. ex. registres de transmission / de rception, registres Status /
Contrle).
Documentation
Les documents des fournisseurs des interfaces dquipement dentres / sorties doivent fournir
toutes les informations sur lutilisation et ladressage des registres ncessaires pour la program-
mation de linterface.
Lexprience montre cependant que ces renseignements sont souvent dfaillants et que lexp-
rience pratique et la communication entre utilisateurs jouent un rle important (news, etc.)

Systmes informatiques I - Assembleur - 8.13 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Entre / sortie memory-mapped ou non-memory-mapped
Existence dun seul et unique espace dadresses pour la mmoire et pour les registres;
pas de distinction entre une adresse-mmoire et celle dun registre dentre / sortie.
Pas de ncessit de disposer dinstructions spcifiques pour les oprations dentre /
sortie, accs aux registres internes des quipements dentres /sorties par les mmes
instructions que celles utilises pour laccs la mmoire.
\
Existence despaces dadresses diffrents et distincts pour la mmoire et pour les registres;
notion de porte dentre / sortie : adresse dun quipement = adresse du registre
correspondant (ou premire adresse dune suite de registres).
Ncessit de disposer dinstructions spcifiques pour les oprations dentres / sorties
(p.ex. IN, OUT, RBYTE, RWORD, WBYTE, etc.).
Entre / sortie memory-mapped :
Entre / sortie non-memory-mapped :

Systmes informatiques I - Assembleur - 8.14 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
ACIA (Motorola 6850)
(Asynchronous Communication Interface Adaptor)
Interface pour la communication srielle de donnes selon le standard V.24.
Correspondant chez Intel : UART (= Universal Asynchronous Receiver-Transmitter)
Ordinateur
ou
Terminal
interactif
Data
Communication
Equipment
Data
Terminal
Equipment
Modem
Ligne
tlphonique
communication
conforme la
norme V.24
Interface
(p.ex. ACIA
ou UART)

Systmes informatiques I - Assembleur - 8.15 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Tches de linterface ACIA
Conversion entre reprsentation interne (byte) et reprsentation externe (chane de bits).
Contrle du sens de la communication, synchronisation CPU - vnement externes.
Signalisation des erreurs au CPU, actions pour la remise en situation normale.
Standard V.24 de lUIT
Utilisation de modems pour la communication entre quipements informatiques laide
de lignes analogiques; V.24 : communication entre lordinateur et le modem.
Reprsentation des donnes changes entre modem et ordinateur : binaire, srielle.
Multiplexage du sens de la communication entre les modems laide de signaux de contrle
changs entre lordinateur et le modem.
Note : UIT = Union Internationale des Tlcommunications) (son organe de standardisation fut
anciennement connu sous le nom CCITT = Comit Consultatif International Tlgraphique
et Tlphonique)
Norme amricaine correspondante = RS 232C
Mise-en-srie / re-assemblage des donnes
Gestion des signaux pour le contrle des oprations dentre/sortie
Dtection derreurs de transmission.

Systmes informatiques I - Assembleur - 8.16 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Signaux changs entre linterface et le modem
Transfert sriel de donnes :
Squences de bits = reprsentation srielle des donnes reues et transmises.
Echantillonnage des donnes :
Impulsions dhorloge pour lchantillonnage lors de la mise-en-srie et la re-consti-
tution des donnes
Multiplexage du sens de la communication :
Indication de linterface au modemlocal que le modemdu partenaire peut commen-
cer une transmission.
Indication du modem linterface quil peut commencer une transmission.
Ligne en tat de fonctionnement :
Indication du modem linterface quil reoit le signal porteuse.
Receive Data
Transmit Data
Receive Clock
Transmit Clock
Request-to-Send
Clear-to-Send
Carrier Detect

Systmes informatiques I - Assembleur - 8.17 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Signification des contenus des registres (ACIA)
Le registre status
bit #
signification
7 6 5 4 3 2 1 0
0
1
Requte dinterruption
absent
prsent

0
1
Erreur parit
non
oui

0
1
Erreur receiver overrun
non
oui

0
1
Erreur framing
non
oui

0
1
Clear-to-Send
tat de repos
actif

0
1
Carrier Detect
tat de repos
actif

0
1
Registre Transmit Data
plein
vide

0
1
Registre Receive Data
plein
vide

Systmes informatiques I - Assembleur - 8.18 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Le registre contrle
bit #
signification
7 6 5 4 3 2 1 0
1
0
Interruption rception
possible
bloque

0 0

Interruptions de transmission bloque

1 0

0 1
Interruption de transmission possible

1 0
Transmettre un break
# de data bits parit # de stop bits

1 1 1
8 impaire 1

1 1 0
8 paire 1

1 0 1
8 aucune 1

1 0 0
8 aucune 2

0 1 1
7 impaire 1

0 1 0
7 paire 1

0 0 1
7 impaire 2

0 0 0
7 paire 2
0 0
horloge
tel que fournie

0 1
/16

1 0
/64

1 1
reset gnral

Systmes informatiques I - Assembleur - 8.19 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Note : La fonction break:
Un break est un signal transmis sur une ligne de communication, transmis comme un
caractre; mais
conceptuellement, le break est transmis sur une voie de transmission indpendante
de tout autre communication,
le break est donc transmis en parallle lchange des donnes normales.
La fonction dun break peut tre utilise pour signaler une condition particulire, par
exemple pour interrompre la transmission dun flot de donnes par une sorte dinterrup-
tion.
Limplantation de la fonction break se fait
- en mettant la ligne de communication dans un tat particulier, diffrent de celui
observ pendant la transmission de donnes normales (p.ex. une condition
derreur de transmission toute particulire),
- la dfinition de cet tat doit tre convenu entre les deux partenaire dune commu-
nication.

Systmes informatiques I - Assembleur - 8.20 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Receive
Bus
in/
out
select
Bus
Buffer
Address
Data/
control
Read
write
Data
Data
in
Data
out
Chip Select
R/W Control
Status Control
Transmit
ACIA: Schma (1)

Systmes informatiques I - Assembleur - 8.21 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Receive
Bus
in/
out
select
Bus
Buffer
Address
Data/
control
Read
write
Data
Chip Select
R/W Control
Transmit
Data Data
Transmit
shift
Receive
shift
Data
in
Data
out
Status Control
ACIA: Schma (2)

Systmes informatiques I - Assembleur - 8.22 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Receive
Bus
in/
out
select
Address
Data/
control
Read
write
Data
Chip Select
R/W Control
Status Control
Transmit
Data Data
Clock
Gen.
Clock
Gen.
Transmit
Control
Receive
Control
Parity
Gen.
Parity
Check
Clock Clock
Transmit
shift
Receive
shift
Data
out
Data
in
Bus
Buffer
ACIA: Schma (3)

Systmes informatiques I - Assembleur - 8.23 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Receive
Bus
in/
out
select
Bus
Buffer
Address
Data/
control
Read
write
Interrupt request
Data
Interrupt
Logic
Chip Select
R/W Control
Data Clock Data Clock
Transmit
Request
to Send
Clear to
Send
Carrier
Detect
Transmit
shift
Receive
shift
Transmit
Control
Receive
Control
Clock
Gen.
Clock
Gen.
Parity
Gen.
Parity
Check
Data
in
Data
out
Status Control
ACIA: Schma (4)

Systmes informatiques I - Assembleur - 8.24 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Exemple de programmation
;Dfinir les adresses des registres
;(doit correspondre la configuration cble)
L
1 ACIADR EQU $810 ;reg. transmit et receive
2 ACIASR EQU $811 ;reg. status
3 ACIACR EQU $811 ;reg. contrle
;Initialisation
4 MOVE #3,ACIACR ;Reset
5 MOVE #4+2,ACIACR ;7 bits, impair, 2 stop-bits, horloge / 64
;Rception dun byte
6 ATTRCV BTST #0,ACIASR ; ZF=1 si receiver plein
7 BNE ATTRCV ; attendre si vide
8 MOVE ACIADR,dest ; chercher le byte reu
L
;Transmission dun byte
9 MOVE srce,ACIADR ;transmettre le byte
10 ATTTRM BTST #1,ACIASR ;ZF=1 si transm. plein
11 BEQ ATTTRM ;attendre si plein

Systmes informatiques I - Assembleur - 8.25 - Entre / sortie


J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
2
.

1
.

2
0
0
1
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
8
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1
Notes sur lassembleur 68000
BTST num, oper Zero-flag := 1 si le bit num de loprande oper vaut
0, sinon Zero-flag := 0
BEQ adresse branchement si le Zero-flag == 1
BNE adresse branchement si le Zero-flag == 0
MOVE srce,dest Transfert dune oprande de srce dest
(# valeur immdiate)
13. 12. 2000 Version 2.31 - 2000 / 01 - Instructions 1 -
S
y
s
t

m
e
s

I
n
f
o
r
m
a
t
i
q
u
e
s

I


-


A
s
s
e
m
b
l
e
u
r

Liste des instructions

Nom (mnmonique) Action


AAA ASCII Adjust for Addition opration complexe, voir littrature
AAD ASCII Adjust for Division opration complexe, voir littrature
AAM ASCII Adjust for Multiplic. opration complexe, voir littrature
AAS ASCII Adjust for Subtr.. opration complexe, voir littrature
ADC Add with Carry op1 + op2 (+1) op1 (+1 si CF = 1)
ADD Add op1 + op2 op1
AND op1 AND op2 op1
CALL appel de procdure
CBW Convert Byte to Word AL AX (extension bit de signe)
CLC Clear Carry ag 0 CF (Carry bit, ag-register)
CLD Clear Direction ag 0 DF (Direction bit, ag-reg.)
CLI Clear Interrupt ag 0 IF (Interrupt bit, ag-register)
CMC Complement Carry ag NOT CF CF (Carry bit, ag-reg.)
CMP Compare op1 op2
CMPB Compare Byte zone-mmoire zone-mmoire (byte)
CMPW Compare Word zone-mmoire zone-mmoire (mot)
CWD Convert Word to Double AX DX:AX (extension bit de signe)
DAA Decimal Adjust for Addition opration complexe, voir littrature
DAS Decimal Adjust for Subtr. opration complexe, voir littrature
DEC Decrement op1 1 op1
DIV Divide DX:AX / op1 AX, reste DX
AX / op1 AL, reste AH
ESC Escape op1 bus (pas dautre action CPU)
HLT Halt arrter le CPU
IDIV Integer Divide DX:AX / op1 AX, reste DX
AX / op1 AL, reste AH (op. abs.)
IMUL Integer Multiply op1 * AX DX:AX
op1 * AL AX (op. abs.)
IN Input entre/sortie AL
INC Increment op1 + 1 op1
INT Interrrupt interruption par vecteur numro op1
INTO Interrupt Overow interr. par vecteur numro 4 (si OF = 1)
INW Input Word entre/sortie AX
IRET Interrupt Return retour du tratement dinterruption
JA Jump if Above = JNBE branchement cond. (op2 > op1)
o
p

r
a
n
d
e
s
a
b
s
o
l
u
e
s
JAE Jump if Above or Eq. = JNB branchement cond. (op2 op1)
JB Jump if Below = JNAE branchement cond. (op2 < op1)
JBE Jump if Below or Eq. = JNA branchement cond. (op2 op1)
JCXZ Jump if CX = 0 branchement si CX = 0
JE Jump if Equal = JZ branchement cond. (op2 = op1)
JG Jump if Greater = JNLE branchement cond. (op2 > op1)
JGE Jump if Greater or Eq. = JNL branchement cond. (op2 op1)
JL Jump if Less = JNGE branchement cond. (op2 < op1)
JLE Jump if Less or Equal = JNG branchement cond. (op2 op1)
JMP Jump branchement inconditionnel
JNA Jump if Not Above = JBE branchement cond. (op2 op1)
o
p

r
a
n
d
e
s
a
b
s
o
l
u
e
s
JNAE Jump if Not Above or Eq. = JB branchement cond. (op2 < op1)
JNB Jump if Not Below = JAE branchement cond. (op2 op1)
JNBE Jump if Not Below or Eq. = JA branchement cond. (op2 > op1)
JNE Jump if Not Equal = JNZ branchement cond. (op2 op1)
JNG Jump if Not Greater = JLE branchement cond. (op2 op1)
JNGE Jump if Not Greater or Eq. = JL branchement cond. (op2 < op1)
JNL Jump if Not Less = JGE branchement cond. (op2 op1)
JNLE Jump if Not Less or Eq. = JG branchement cond. (op2 > op1)
JNO Jump if Not Overow branchement cond. (si pas overow)
JNP Jump if Not Parity = JPO branchement cond. (si parit impaire)
JNS Jump if Not Sign branchement cond. (si valeur positive)
JNZ Jump if Not Zero = JNE branchement cond. (si rsultat 0)
JO Jump if Overow branchement cond. (si overow)
JP Jump if Parity = JPE branchement cond. (si parit paire)
JPE Jump if Parity Even = JP branchement cond. (si parit paire)
JPO Jump if Parity Odd = JNP branchement cond. (si parit impaire)
JS Jump if Sign branchement cond. (si valeur ngative)
JZ Jump if Zero = JE branchement cond. (si rsultat = 0)
LAHF Load AH with Flags bits arithmtiques du ag-reg. AH
LDS Load pointer to DS adresse de op2 DS:op1
LEA Load Effective Addr. adresse de op2 op1
LES Load pointer to ES adresse de op2 ES:op1
Nom (mnmonique) Action
Liste des instructions du CPU Intel 8086
S
y
s
t

m
e
s

I
n
f
o
r
m
a
t
i
q
u
e
s

I


-


A
s
s
e
m
b
l
e
u
r
13. 12. 2000 Version 2.31 - 2000 / 01 - Instructions 2 -

LOCK rservation du bus pour > 1 cycle


LODB Load Byte zone-mmoire AL
LODW Load Word zone-mmoire AX
LOOP branchement si CX = 0
1

r
e

a
c
t
i
o
n
:
C
X

C
X
LOOPE Loop while Equal = LOOPZ branchement si CX = 0 et ZF = 1
LOOPNE Loop while Not Eq. = LOOPNZ branchement si CX = 0 et ZF = 0
LOOPNZ Loop while Not Zero = LOOPNE branchement si CX = 0 et ZF = 0
LOOPZ Loop while Zero = LOOPE branchement si CX = 0 et ZF = 1
MOV Move op2 op1
MOVB Move Byte zone-mmoire zone-mmoire
MOVW Move Word zone-mmoire zone-mmoire
MUL Multiply op1 * AX DX:AX
op1 * AL AX
NEG Negate 0 op1 op1
NOT NOT op1 op1
OR op1 OR op2 op1
OUT Output AL entre/sortie
OUTW Output Word AX entre/sortie
POP des-empiler op1
POPF Pop Flags des-empiler ag-register
PUSH op1 empiler
PUSHF Push Flags ag-register empiler
RCL Rotate Left with Carry dcalage circulaire gauche par CF
RCR Rotate Right with Carry dcalage circulaire droite par CF
REP Repeat pr-xe: reptition sur zone-mmoire
RET Return retour dune procdure
ROL Rotate Left dcalage circulaire gauche
ROR Rotate Right dcalage circulaire droite
SAHF Store AH to Flags AH bits arithm. du ag-register
SAL Shift Arithm. Left = SHL dcalage gauche (0-remplissage)
SAR Shift Arithmetic Right dcalage droite, extension du signe
SBB Subtract with Borrow op1 op2 (1) op1 (1 si CF = 1)
SCAB Scan Byte AL zone-mmoire
SCAW Scan Word AX zone-mmoire
SHL Shift Logical Left = SAL dcalage gauche (0-remplissage)
SHR Shift Logical Right dcalage droite (0-remplissage)
Nom (mnmonique) Action
STC Set Carry ag 1 CF (Carry bit, ag-register)
STD Set Direction ag 1 DF (Direction bit ag-reg.)
STI Set Interrupt ag 1 IF (Interrupt bit, ag-register)
STOB Store Byte AL zone-mmoire
STOW Store Word AX zone-mmoire
SUB Subtract op1 op2 op1
TEST op1 AND op2
WAIT le CPU entre dans une boucle dattente
XCHG Exchange op1 op2
XLAT Translate conversion de code par table de corresp.
XOR Exclusive Or op1 XOR op2
Nom (mnmonique) Action
op1, op2 oprandes de linstruction (op1 = 1er, op2 = 2me champ,)
oprandes absolues comparaison de valeurs en reprsentation binaire-entier
sans complmentation (i.e. valeurs sans signe)
zone-mmoire oprande pour une opration itrative sur chanes de bytes
ou de mots, adresse par DS:SI (source) et ES:DI (dest.)
AND et logique, bit par bit
NOT inversion logique, bit par bit
OR ou logique inclusif, bit par bit
XOR ou logique exclusif, bit par bit
Systmes Informatiques I - Assembleur - Rfrences 1 -
J
.

H
a
r
m
s
,

U
n
i
v
e
r
s
i
t


d
e

G
e
n

v
e
,
1
1
.

1
2
.

2
0
0
0
/
u
s
e
r
/
u
2
/
h
a
r
m
s
/
c
o
u
r
s
/
a
s
m
/
r
e
f
e
r
e
n
c
e
s
.
f
m
V
e
r
s
i
o
n
2
.
3
1
-
2
0
0
0

/

0
1

Littrature et rfrences
Littrature et rfrences
C
U
I
P
h
y
s
.
La bible PC, Programmation systme ref 1144, ISBN 2-7429-0144-2
CUI: D.4.m TIS
C P
Micro Application.
The undocumented PC Addison-Wesley
ISBN 0-201-62277-7
Franck Van GILLUWE.
The undocumented DOS Addison-Wesley
CUI: D.4m UND; Phys: 197 NOR
C P
Andrew Shulman
La Programmation en Assembleur sur PC et PS PSI
ISBN 2.86595.584.X
Perter Norton; John Socha
Introduction linfographie Addison Wesley
ISBN 2 87308 058
C
Foley, Van Dam, Feiner, Huges, Philips
Programming the 80286, 80386, 80486 and Pen-
tium-Base Personal Computer
Prentice Hall
ISBN 0-02-314263-4
Barry B. Brey
Ralph Browns Interrupt List http://www.ctyme.com/intr/INT.HTM
Intel Secrets http://www.x86.org/
The Art of Assembly Language Programming http://silo.csci.unt.edu/home/brackeen/vga/ ??
E
n

c
h
a
n
t
i
e
r
C restreint la consultation CUI, Phys. bibliothques Genve
P disponible en prt
2. 1. 2001 Version 2.31 - 2000 / 01 - Mots-cls 1 -
S
y
s
t

m
e
s

i
n
f
o
r
m
a
t
i
q
u
e
s

I

-

A
s
s
e
m
b
l
e
u
r
Mots-cl
Rfrences imprimes en caractres italiques : commande MASM. Rfrences imprimes en caractres gras : rfrence principale.
Pour accder la page dune rfrence, slectionner la page par un click de la souris.

Mots-cl
.LALL. . . . . . . . . . . . . . . 6.17
.LFCOND . . . . . . . . . . . 6.17
.LIST . . . . . . . . . . . . . . . 6.16
.RADIX . . . . . . . . . . . . . 3.7
.SALL. . . . . . . . . . . . . . . 6.17
.SFCOND . . . . . . . . . . . 6.17
.TFCOND . . . . . . . . . . . 6.17
.XALL. . . . . . . . . . . . . . . 6.17
.XLIST . . . . . . . . . . . . . . 6.16
AAM. . . . . . . . . . . . . . . . 4.12
AAS . . . . . . . . . . . . . . . . 4.12
ABS . . . . . . . . . . . . . . . . 6.14
accumulateur . . . . . . . . . 2.15
ACIA. . . . . . . . . . . . . . . 8.14, 8.15, 8.17, 8.20
8.24
ADC. . . . . . . . . . . . . . . . 4.7
ADD. . . . . . . . . . . . . . . . 2.10, 2.12, 2.14, 4.7
adressage . . . . . . . . . . . . 2.21
- absolu . . . . . . . . . . . . . . 2.11, 2.21, 2.22, 2.24,
2.25, 3.9
- direct . . . . . . . . . . . . . . . 2.21, 2.23, 3.10
- immdiat . . . . . . . . . . . . 2.21, 2.23, 3.10, 4.4
- index . . . . . . . . . . . . . . 2.15, 2.21, 2.24, 2.25,
3.8, 3.9
- indirect . . . . . . . . . . . . . 2.21, 2.23
- mode dadressage . . . . . 2.11, 2.25, 3.8, 3.8,
3.9, 7.4, 7.7
- relatif. . . . . . . . . . . . . . . 2.21, 2.22, 2.24, 3.9,
4.4
adresse . . . . . . . . . . . . . . 2.3, 2.6, 2.9, 2.11, 2.23,
3.8, 3.12, 3.13, 3.18,
3.23, 5.4, 5.8, 5.10, 8.4,
8.11, 8.13
- de base (segment) . . . . . 2.5, 3.17, 3.18, 3.20,
3.23, 3.24, 7.4
- de transfert . . . . . . . . . . . 1.6, 1.9, 3.13, 3.25
- effective. . . . . . . . . . . . . 2.21, 2.22, 2.24, 3.9,
4.6, 7.4
- espace dadresses. . . . . . 2.3, 2.4, 3.11
- logique. . . . . . . . . . . . . . 2.5
- physique. . . . . . . . . . . . . 2.5
- registre e/s . . . . . . . . . . . 8.11, 8.12, 8.13
- relogeable . . . . . . . . . . . 3.10
- virtuelle . . . . . . . . . . . . . 7.6, 7.7
AF (registre dtat). . . . 2.18
AND . . . . . . . . . . . . . . . 2.20, 4.7, 5.6
ASCII . . . . . . . . . . . . . . 3.7, 4.12
assemblage . . . . . . . . . . 3.2, 3.3, 3.7, 3.11, 3.13,
3.23, 5.2, 5.3, 6.3
- conditionnel . . . . . . . . . . 3.3, 6.2, 6.6, 6.17
- en deux passes . . . . . . . . 3.3, 5.3
- macro. . . . . . . . . . . . . . . 3.3, 6.6, 6.7
- rptitif . . . . . . . . . . . . . 3.3, 6.4, 6.6
ASSUME. . . . . . . . . . . . 1.6, 3.21, 3.22, 3.23,
3.24, 3.25, 5.4
AT. . . . . . . . . . . . . . . . . 3.17
attente active . . . . . . . . 8.8
attributs dune variable, voir variable
BCD . . . . . . . . . . . . . . . 4.12
branchement . . . . . . . . . 2.13, 2.22, 4.4, 4.5, 5.4,
8.25
BTC . . . . . . . . . . . . . . . 7.7
bus . . . . . . . . . . . . . . . . 2.2, 2.6, 3.18, 4.12, 7.2,
8.2, 8.4, 8.5, 8.6, 8.7,
8.10, 8.11
BYTE . . . . . . . . . . . . . . 3.17, 3.18, 3.26, 5.5,
5.9, 5.10, 6.14
CALL . . . . . . . . . . . . . . 2.14, 2.17, 2.20, 2.22,
3.9, 4.3, 4.4, 4.4, 6.15
Carry-flag, see CF
CBW . . . . . . . . . . . . . . . 4.9, 4.12
CCITT. . . . . . . . . . . . . . 8.15
CF (registre dtat) . . . . 2.18, 2.19, 4.5
champ
- dtiquette . . . . . . . . . . . 3.5, 3.15, 3.26, 5.2,
5.3, 6.7
- doprande . . . . . . . . . . . 3.6
- dopration . . . . . . . . . . . 2.11, 3.5
CLC. . . . . . . . . . . . . . . . 4.12
CLD . . . . . . . . . . . . . . . 4.12
CLI . . . . . . . . . . . . . . . . 2.20, 4.12
CMC . . . . . . . . . . . . . . . 4.12
CMP . . . . . . . . . . . . . . . 1.6, 2.20, 4.5, 4.7
CMPSB . . . . . . . . . . . . . 4.10
CMPSW . . . . . . . . . . . . 4.10
Code Segment, voir CS
code-objet . . . . . . . . . . . 2.8, 3.2, 3.5, 3.11, 3.12,
3.14, 3.15, 3.18, 3.27
code-source. . . . . . . . . . 3.2, 3.2, 3.24, 6.13
COMMON . . . . . . . . . . 3.17
complment
- deux. . . . . . . . . . . . . . . 2.12, 2.22, 4.7, 5.10
- un. . . . . . . . . . . . . . . . . 4.7
compteur
- de position . . . . . . . . . . . 3.11, 3.12, 3.12, 3.13,
3.15, 5.7, 5.9
- itrations et dcalage . . . 2.15
- ordinal, voir IP
constante . . . . . . . . . . . . 5.5
- alpha-numrique . . . . . . 3.7
- binaire . . . . . . . . . . . . . . 3.7
- dcimal . . . . . . . . . . . . . . 3.7
- hexadcimal . . . . . . . . . . 3.7
- numrique . . . . . . . . . . . 3.3, 3.7
- octal . . . . . . . . . . . . . . . . 3.7
control register, voir registre de contrle
2. 1. 2001 Version 2.31 - 2000 / 01 - Mots-cls 2 -
S
y
s
t

m
e
s

i
n
f
o
r
m
a
t
i
q
u
e
s

I

-

A
s
s
e
m
b
l
e
u
r

CPU. . . . . . . . . . . . . . . . 1.8, 1.9, 2.2, 2.6, 2.7,


2.10, 2.13, 2.18, 3.5,
7.2, 7.3, 7.4, 7.6, 8.2,
8.3, 8.4, 8.5, 8.6, 8.8
CS (registre) . . . . . . . . . 2.17, 3.20, 3.21, 3.22,
4.3, 4.6, 5.4
CWD . . . . . . . . . . . . . . . 4.9, 4.12
DAA . . . . . . . . . . . . . . . . 4.12
DAS . . . . . . . . . . . . . . . . 4.12
Data Segment, voir DS
DB . . . . . . . . . . . . . . . . . 1.6, 3.26, 3.27, 3.28,
5.5, 5.9, 6.3, 6.5, 6.9
DCE. . . . . . . . . . . . . . . . 8.14
DD. . . . . . . . . . . . . . . . . 3.26, 5.5
DEC. . . . . . . . . . . . . . . . 1.6, 4.7
descripteur de segment . 7.4, 7.5, 7.6
DF (registre dtat) . . . . 2.18, 4.10
Direct Memory Access, voir DMA
DIV . . . . . . . . . . . . . . . . 2.15, 4.7
DMA . . . . . . . . . . . . . . . 1.5, 8.7
DQ. . . . . . . . . . . . . . . . . 3.26, 5.5
DS (registre) . . . . . . . . . 2.15, 2.17
DT . . . . . . . . . . . . . . . . . 3.26, 3.28, 5.5
DTE . . . . . . . . . . . . . . . . 8.14
DUP. . . . . . . . . . . . . . . . 1.6, 3.25, 3.26, 3.27,
3.28, 5.8, 6.3
DW. . . . . . . . . . . . . . . . . 3.22, 3.25, 3.26, 3.28,
5.5, 5.8
DWORD. . . . . . . . . . . . . 3.26, 5.5, 5.9, 6.14
diteur de liens. . . . . . . . 3.2, 3.11, 3.14, 3.17,
3.18, 3.20
ELSE . . . . . . . . . . . . . . . 6.2
END. . . . . . . . . . . . . . . . 1.6, 3.3, 3.13, 3.14, 3.19
ENDIF . . . . . . . . . . . . . . 6.2, 6.3
ENDM . . . . . . . . . . . . . . 6.4, 6.5, 6.7, 6.9, 6.11
ENDP. . . . . . . . . . . . . . . 6.14, 6.15
ENDS . . . . . . . . . . . . . . 1.6, 3.15, 3.22, 3.24,
3.25, 6.9, 6.11
entre / sortie . . . . . . . . 2.2, 8.2
- criture. . . . . . . . . . . . . . 8.5
- initialisation. . . . . . . . . . 8.10
- lecture . . . . . . . . . . . . . . 8.6
- memory-mapped . . . . . . 8.13
- non-memory-mapped . . 8.13
- porte. . . . . . . . . . . . . . . . 2.12, 2.15, 8.13
EQ . . . . . . . . . . . . . . . . 5.6
EQU . . . . . . . . . . . . . . . 1.6, 5.5, 5.9, 6.3
ES (registre) . . . . . . . . . 2.15, 2.17, 3.9, 3.10,
3.19, 3.21, 3.22
ESC. . . . . . . . . . . . . . . . 4.12
tiquette . . . . . . . . . . . . 2.14, 3.4, 3.17, 5.4, 5.4,
5.5, 5.8, 5.9, 6.14
EVEN . . . . . . . . . . . . . . 3.12
expression. . . . . . . . . . . 5.6, 5.9, 5.10, 6.2
extended memory. . . . . 7.4
extension du bit de signe 2.16, 4.9, 4.12
EXTERN. . . . . . . . . . . . 6.14
Extra Segment, voir ES
FADD. . . . . . . . . . . . . . 2.14
FAR . . . . . . . . . . . . . . . 2.14, 3.25, 4.3, 4.4, 5.4,
5.4, 5.8, 5.9, 6.14, 6.15
Flag Register, voir registre dtat
fonction . . . . . . . . . . . . 3.3, 3.12, 3.27, 5.7, 5.7,
5.8, 5.9, 5.10
GE . . . . . . . . . . . . . . . . 5.6
granularity bit . . . . . . . . 7.4, 7.5
GT. . . . . . . . . . . . . . . . . 5.6
HIGH . . . . . . . . . . . . . . 5.6
HLT . . . . . . . . . . . . . . . 4.12
IDIV . . . . . . . . . . . . . . . 4.7
IF . . . . . . . . . . . . . . . . . 6.2, 6.3
IF (registre dtat) . . . . 2.18, 2.20, 4.3
IF1 . . . . . . . . . . . . . . . . 6.2
IF2 . . . . . . . . . . . . . . . . 6.2
IFB . . . . . . . . . . . . . . . . 6.2
IFDEF. . . . . . . . . . . . . . 6.2
IFE . . . . . . . . . . . . . . . . 6.2, 6.3
IFIDN . . . . . . . . . . . . . . 6.2
IFNB . . . . . . . . . . . . . . . 6.2
IFNDEF . . . . . . . . . . . . 6.2
IFNIDN. . . . . . . . . . . . . 6.2
impression. . . . . . . . . . . 6.16, 6.17
IMUL . . . . . . . . . . . . . . 4.7
IN . . . . . . . . . . . . . . . . . 8.13
INC . . . . . . . . . . . . . . . . 4.7
INCLUDE. . . . . . . . . . . 3.25, 6.13
instruction pointer, voir IP
INT . . . . . . . . . . . . . . . . 1.6, 3.25, 4.3, 6.9
Intel . . . . . . . . . . . . . . . . 1.5, 2.2
interruption . . . . . . . . . . 8.9
- CPU . . . . . . . . . . . . . . . . 1.6, 2.4, 2.17, 2.18,
2.20, 4.12, 8.8, 8.9,
8.17, 8.18
- DOS . . . . . . . . . . . . . . . . 1.6
INVD. . . . . . . . . . . . . . . 7.7
IP (compteur-ordinal) . . 2.17, 2.20, 2.22, 3.13,
3.20, 4.3, 7.3
IRET . . . . . . . . . . . . . . . 4.3
IRP . . . . . . . . . . . . . . . . 6.4
IRPC . . . . . . . . . . . . . . . 6.4, 6.5
JA . . . . . . . . . . . . . . . . . 4.5
JAE . . . . . . . . . . . . . . . . 4.5
JB . . . . . . . . . . . . . . . . . 4.5
JBE . . . . . . . . . . . . . . . . 4.5
JBNE. . . . . . . . . . . . . . . 4.5
JCXZ. . . . . . . . . . . . . . . 4.4
JE . . . . . . . . . . . . . . . . . 2.20, 2.22, 3.9, 4.5
JG . . . . . . . . . . . . . . . . . 4.5
JGE. . . . . . . . . . . . . . . . 4.5
JL . . . . . . . . . . . . . . . . . 4.5
JLE . . . . . . . . . . . . . . . . 4.5
2. 1. 2001 Version 2.31 - 2000 / 01 - Mots-cls 3 -
S
y
s
t

m
e
s

i
n
f
o
r
m
a
t
i
q
u
e
s

I

-

A
s
s
e
m
b
l
e
u
r

JMP . . . . . . . . . . . . . . . . 2.9, 2.17, 2.20, 2.22,


3.9, 4.4, 4.4, 5.10
JNA . . . . . . . . . . . . . . . . 4.5
JNAE . . . . . . . . . . . . . . . 4.5
JNB . . . . . . . . . . . . . . . . 4.5
JNE . . . . . . . . . . . . . . . . 4.5
JNG . . . . . . . . . . . . . . . . 4.5
JNGE . . . . . . . . . . . . . . . 4.5
JNL . . . . . . . . . . . . . . . . 4.5
JNLE . . . . . . . . . . . . . . . 4.5
JNO . . . . . . . . . . . . . . . . 4.5
JNP . . . . . . . . . . . . . . . . 4.5
JNS. . . . . . . . . . . . . . . . . 4.5
JNZ . . . . . . . . . . . . . . . . 1.6, 4.5
JO . . . . . . . . . . . . . . . . . 4.5
JP. . . . . . . . . . . . . . . . . . 4.5
JPE . . . . . . . . . . . . . . . . 4.5
JPO . . . . . . . . . . . . . . . . 4.5
JS . . . . . . . . . . . . . . . . . . 4.5
JZ. . . . . . . . . . . . . . . . . . 4.5
LABEL . . . . . . . . . . . . . . 3.25
LAHF. . . . . . . . . . . . . . . 4.6
LDS . . . . . . . . . . . . . . . . 7.7
LE . . . . . . . . . . . . . . . . . 5.6
LEA . . . . . . . . . . . . . . . . 4.6
LENGTH . . . . . . . . . . . . 5.8, 5.10
LGDT. . . . . . . . . . . . . . . 7.7
LLDT . . . . . . . . . . . . . . . 7.7
LOCAL. . . . . . . . . . . . . . 6.8, 6.9
LOCK. . . . . . . . . . . . . . . 4.12
LODB. . . . . . . . . . . . . . . 4.10
LODW . . . . . . . . . . . . . . 4.10
LOOP. . . . . . . . . . . . . . . 4.4
LOOPE . . . . . . . . . . . . . 4.4
LOOPNE . . . . . . . . . . . . 4.4
LOOPNZ . . . . . . . . . . . . 4.4
LOOPZ . . . . . . . . . . . . . 4.4
LOW. . . . . . . . . . . . . . . 5.6
LSB . . . . . . . . . . . . . . . 2.18
LSS . . . . . . . . . . . . . . . . 7.7
LT . . . . . . . . . . . . . . . . . 5.6
MACRO . . . . . . . . . . . . 6.7, 6.9, 6.11
macro-instruction . . . . . 6.7, 6.17
MASK. . . . . . . . . . . . . . 5.7, 5.8, 5.9, 5.10
mmoire . . . . . . . . . . . . 2.2, 2.3, 2.5, 8.2
- logique. . . . . . . . . . . . . . 2.5
- physique. . . . . . . . . . . . . 2.4, 2.5
mmoire virtuelle . . . . . 2.8
MEMORY. . . . . . . . . . . 3.17
MMU . . . . . . . . . . . . . . 7.2
mnmonique. . . . . . . . . 3.3
MOD. . . . . . . . . . . . . . . 5.6
mode
- 16-bit mode . . . . . . . . . . 7.7
- 32-bit mode . . . . . . . . . . 7.7
modem . . . . . . . . . . . . . 8.14, 8.15, 8.16
Motorola. . . . . . . . . . . . 1.5
MOV. . . . . . . . . . . . . . . 1.6, 2.10, 2.14, 2.16,
2.20, 3.19, 3.25, 4.6,
4.9, 5.9, 6.9
MOVSB. . . . . . . . . . . . . 4.10
MOVSW . . . . . . . . . . . . 4.10
MOVSX. . . . . . . . . . . . . 4.9
MOVZX . . . . . . . . . . . . 4.9
MSB. . . . . . . . . . . . . . . 2.18
MUL . . . . . . . . . . . . . . . 2.15, 4.7
NE. . . . . . . . . . . . . . . . . 5.6
NEAR . . . . . . . . . . . . . . 2.14, 4.4, 5.4, 5.6, 5.8,
5.9, 6.14, 6.15
NEG . . . . . . . . . . . . . . . 4.7
NOT . . . . . . . . . . . . . . . 4.7, 5.6
OF (registre dtat). . . . 2.18, 4.5
OFFSET . . . . . . . . . . . . 5.8, 5.10
oprande. . . . . . . . . . . . 2.23
opration . . . . . . . . . . . . 2.9, 2.12, 2.18, 2.19,
2.20, 3.4, 3.5, 3.6, 5.2
opration sur chanes . . 2.15, 4.10
OR. . . . . . . . . . . . . . . . . 4.7, 5.6
ORG . . . . . . . . . . . . . . . 3.12
OUT . . . . . . . . . . . . . . . 2.20, 8.13
PAGE . . . . . . . . . . . . . . 3.17, 3.18
pagination . . . . . . . . . . . 7.6
PARA . . . . . . . . . . . . . . 3.17, 3.18
paramtre formel. . . . . . 6.7
parit . . . . . . . . . . . . . . . 2.18, 4.5, 8.17, 8.18
PF (registre dtat) . . . . 2.18, 4.5
pile . . . . . . . . . . . . . . . . 2.7, 2.17, 2.21, 3.17,
3.20, 3.25, 4.2
pointeur-pile, voir SP
POP . . . . . . . . . . . . . . . 2.21, 4.3, 6.9
POPF . . . . . . . . . . . . . . 4.6
prcdence . . . . . . . . . . 5.6
prfixe
- repetition . . . . . . . . . . . . 4.11
- segment . . . . . . . . . . . . . 3.10
- vrouillage bus . . . . . . . . 4.12
PROC . . . . . . . . . . . . . . 6.14, 6.15
procdure . . . . . . . . . . . 2.17, 6.14, 6.15
Processor Status Word . 2.17
protected mode addressing 7.4
pseudo-opration . . . . . 3.5, 3.26, 5.5, 6.4, 6.8,
6.16
PTR. . . . . . . . . . . . . . . . 5.9, 5.10
PUBLIC . . . . . . . . . . . . 3.17, 5.3, 6.14
PUSH . . . . . . . . . . . . . . 2.20, 2.21, 4.3, 4.6, 6.9
PUSHF . . . . . . . . . . . . . 4.6
QWORD . . . . . . . . . . . . 3.26, 5.5, 5.9
RAM. . . . . . . . . . . . . . . 2.4
RBYTE . . . . . . . . . . . . . 8.13
RCL. . . . . . . . . . . . . . . . 4.7
RCR. . . . . . . . . . . . . . . . 4.7
2. 1. 2001 Version 2.31 - 2000 / 01 - Mots-cls 4 -
S
y
s
t

m
e
s

i
n
f
o
r
m
a
t
i
q
u
e
s

I

-

A
s
s
e
m
b
l
e
u
r

real memory. . . . . . . . . . 7.4


real mode addressing. . . 7.4
RECORD. . . . . . . . . . . . 5.5
record. . . . . . . . . . . . . . . 5.7
rfrences en avant . . . . 5.3
registre
- dentre / sortie . . . . . . . 8.11
- dtat . . . . . . . . . . . . . . . 2.17, 2.18, 4.3
- dindexage. . . . . . . . . . . 2.11, 2.22, 3.9, 3.10
- doprandes. . . . . . . . . . 2.15
- de base . . . . . . . . . . . . . 2.5, 2.17, 2.20, 3.10,
3.19, 3.24, 7.4, 7.6,
7.7
- de byte. . . . . . . . . . . . . . 2.16
- de contrle . . . . . . . . . . 8.9
- de rception. . . . . . . . . . 8.4
- de segment, voir registre de base
REP . . . . . . . . . . . . . . . . 4.11
REPE . . . . . . . . . . . . . . . 4.11
REPNE. . . . . . . . . . . . . . 4.11
REPNZ. . . . . . . . . . . . . . 4.11
REPT . . . . . . . . . . . . . . . 6.4, 6.5
REPZ . . . . . . . . . . . . . . . 4.11
Reset . . . . . . . . . . . . . . . 7.4, 8.10
RET . . . . . . . . . . . . . . . . 4.3, 6.14, 6.15
RISC . . . . . . . . . . . . . . . 1.5
ROL . . . . . . . . . . . . . . . . 4.7
ROM . . . . . . . . . . . . . . . 2.4
ROR . . . . . . . . . . . . . . . . 4.7
RS 232C . . . . . . . . . . . . 8.15
RWORD. . . . . . . . . . . . . 8.13
SAHF . . . . . . . . . . . . . . . 4.6
SAL . . . . . . . . . . . . . . . . 4.7
SAR . . . . . . . . . . . . . . . . 4.7
SBB . . . . . . . . . . . . . . . . 4.7
SCAB . . . . . . . . . . . . . . . 4.10
SCAW. . . . . . . . . . . . . . . 4.10
SEG . . . . . . . . . . . . . . . . 5.8, 5.10
SEGMENT . . . . . . . . . . 1.6, 3.14, 3.15, 3.17,
3.19, 3.22, 3.24, 3.25,
6.9, 6.11
segment
- logique. . . . . . . . . . . . . . 2.5, 3.11, 3.12, 3.15,
3.18, 3.19, 3.20, 3.21,
3.24
- physique. . . . . . . . . . . . . 2.4, 2.5, 2.8, 3.19,
3.21, 3.24
Segment Prefix Code, voir prfixe
Segment Register, voir registre de base
sparateur de chane. . . 3.7, 6.8
sexe des bytes. . . . . . . . 2.3
SF (registre dtat) . . . . 2.18, 4.5
SHL. . . . . . . . . . . . . . . . 2.20, 4.7, 5.6
SHORT . . . . . . . . . . . . . 5.10
SHR . . . . . . . . . . . . . . . 4.7, 5.6
SIZE . . . . . . . . . . . . . . . 5.8, 5.10
SP (registre) . . . . . . . . . 2.7, 2.15, 3.20
SS (registre) . . . . . . . . . 2.15, 2.17, 3.19, 3.20,
3.21, 3.22, 4.3
STACK . . . . . . . . . . . . . 3.17
Stack Segment, voir SS
status. . . . . . . . . . . . . . . 8.8
STC. . . . . . . . . . . . . . . . 4.12
STD. . . . . . . . . . . . . . . . 4.12
STI . . . . . . . . . . . . . . . . 4.12
STOB . . . . . . . . . . . . . . 4.10
STOW. . . . . . . . . . . . . . 4.10
STRUCT . . . . . . . . . . . . 5.5
SUB . . . . . . . . . . . . . . . 2.20, 4.7
SUBTTL . . . . . . . . . . . . 6.16
symbole . . . . . . . . . . . . 3.5, 3.14, 3.24, 5.2, 5.6,
5.8, 5.9, 6.7, 6.8, 6.14,
6.15
table de code-objet . . . . 3.11
TBYTE . . . . . . . . . . . . . 3.26, 5.5, 5.9
TEST. . . . . . . . . . . . . . . 2.20, 4.7
TF (registre dtat) . . . . 2.18, 4.3
THIS . . . . . . . . . . . . . . . 5.9, 5.10
TITLE . . . . . . . . . . . . . . 6.16
transfert sriel . . . . . . . . 8.16
TYPE. . . . . . . . . . . . . . . 5.8, 5.10
UART . . . . . . . . . . . . . . 8.14
V.24 . . . . . . . . . . . . . . . 8.14, 8.15
variable . . . . . . . . . . . . . 5.2
- attribut . . . . . . . . . . . . . . 5.2, 5.5, 5.7, 5.8, 5.9
- globale . . . . . . . . . . . . . . 5.3, 6.14
- locale . . . . . . . . . . . . . . . 5.3, 6.8
- relogeable. . . . . . . . . . . . 3.10, 5.4, 5.5
- table des variables . . . . . 5.3
vecteur dinterruption . . 2.4
WAIT. . . . . . . . . . . . . . . 4.12
WBYTE . . . . . . . . . . . . . 8.13
white space . . . . . . . . . . 3.4, 3.6
WIDTH . . . . . . . . . . . . . 5.7, 5.10
WORD. . . . . . . . . . . . . . 3.17, 3.18, 3.26, 5.5,
5.9, 5.10, 6.14
XCHG. . . . . . . . . . . . . . 4.6
XLAT. . . . . . . . . . . . . . . 2.15
XOR . . . . . . . . . . . . . . . 4.7, 5.6
ZF (registre dtat) . . . . 2.18, 2.20, 4.5, 4.11
ZILOG . . . . . . . . . . . . . 1.5

Vous aimerez peut-être aussi