0% ont trouvé ce document utile (0 vote)
6 vues98 pages

Cours Microprocesseur

Le document traite de l'historique et de l'évolution des ordinateurs, en commençant par les premières machines mécaniques jusqu'aux microprocesseurs modernes. Il décrit également l'architecture et le fonctionnement d'un microprocesseur, y compris la structure d'un calculateur, l'organisation de la mémoire centrale et la circulation de l'information. Enfin, il aborde des sujets tels que les mémoires, les interfaces d'entrées/sorties et les interruptions.

Transféré par

alienroi617
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues98 pages

Cours Microprocesseur

Le document traite de l'historique et de l'évolution des ordinateurs, en commençant par les premières machines mécaniques jusqu'aux microprocesseurs modernes. Il décrit également l'architecture et le fonctionnement d'un microprocesseur, y compris la structure d'un calculateur, l'organisation de la mémoire centrale et la circulation de l'information. Enfin, il aborde des sujets tels que les mémoires, les interfaces d'entrées/sorties et les interruptions.

Transféré par

alienroi617
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Table des mati`eres

1 Historique et ´evolution des ordinateurs 1


1.1 « Pr´ehistoire » des ordinateurs . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Machines ´electrom´ecaniques . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Machines ´electroniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 Machines actuelles ............................... 2
2 Architecture et fonctionnement d’un microprocesseur 3
2.1 Structure d’un calculateur . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Organisation de la m´emoire centrale . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Circulation de l’information dans un calculateur . . . . . . . . . . . . . . . 5
2.4 Description mat´erielle d’un microprocesseur ................. 6
2.5 Fonctionnement d’un microprocesseur . . . . . . . . . . . . . . . . . . . . . 6
3 Les m´emoires 11
3.1 M´emoires ROM et RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Sch´ema fonctionnel d’une m´emoire . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Interfac¸age microprocesseur/m´emoire . . . . . . . . . . . . . . . . . . . . . 12
3.4 Chronogrammes de lecture/´ecriture en m´emoire . . . . . . . . . . . . . . . 13
3.5 Connection de plusieurs boˆıtiers m´emoire . . . . . . . . . . . . . . . . . . . 14
3.6 D´ecodage d’adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.7 Classification des m´emoires . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 Le microprocesseur Intel 8086 19
4.1 Description physique du 8086 ......................... 19
4.2 Sch´ema fonctionnel du 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Description et utilisation des signaux du 8086 ................ 20
4.4 Organisation interne du 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5 Gestion de la m´emoire par le 8086 . . . . . . . . . . . . . . . . . . . . . . .29
4.6 Le microprocesseur 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 La programmation en assembleur du microprocesseur 8086 33

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


5.1 G´en´eralit´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2 Les instructions de transfert . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3 Les instructions arithm´etiques . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.4 Les instructions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
iv Table des mati`eres

5.5 Les instructions de branchement . . . . . . . . . . . . . . . . . . . . . . . . 42


5.6 M´ethodes de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Les interfaces d’entr´ees/sorties 51
6.1 D´efinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2 Adressage des ports d’E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.3 Gestion des ports d’E/S par le 8086 . . . . . . . . . . . . . . . . . . . . . . 53
6.4 L’interface parall`ele 8255 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.5 L’interface s´erie 8250 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7 Les interruptions 71
7.1 D´efinition d’une interruption . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.2 Prise en charge d’une interruption par le microprocesseur . . . . . . . . . . 72
7.3 Adresses des sous-programmes d’interruptions . . . . . . . . . . . . . . . . 73
7.4 Les interruptions du 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.5 Le controˆleur programmable d’interruptions 8259 . . . . . . . . . . . . . . 75
Annexe - Jeu d’instructions du 8086 77
Bibliographie 81

Chapitre 1
Historique et ´evolution des
ordinateurs

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


1.1 « Pr´ehistoire » des ordinateurs
Les premi`eres machines `a calculer ´etaient purement m´ecaniques : bouliers,
abaques, ...
(antiquit´e).
Premi`ere vraie machine `a calculer : Pascal, 1642, machine a` additionner.
Machine `a multiplier : Leibniz, 1694, bas´ee sur les travaux de John Neper (1617,
logarithmes).
Premi`ere machine programmable : m´etier `a tisser, Jacquard, xviii`eme si`ecle, machine `a
cartes perfor´ees.
Machine programmable universelle : Babbage, xviii`eme si`ecle, non r´ealisable avec les
technologies de l’´epoque (machines `a vapeur), principe des machines actuelles.

1.2 Machines ´electrom´ecaniques


Machine `a calculer a` cartes perfor´ees : Hermann Hollerith, 1885, facilite le
recensement am´ericain.
Machines industrielles pour la comptabilit´e et les statistiques. Ces machines sont `a base
de relais ´electrom´ecaniques (Aiken et Stibitz, 1936-1939).

1.3 Machines ´electroniques


Premi`ere machine `a calculer ´electronique : ENIAC, 1944, Eckert et Mauchly, 18000
tubes ´electroniques, machine a` programme cˆabl´e.
Machine `a programme enregist´e : John Von Neumann, 1946, les instructions sont
enregistr´ees dans la m´emoire du calculateur : ordinateur.
Premier ordinateur commercialis´e : SSEC d’IBM, 1948.
Ordinateur a` transistors : 1963, PDP5 de Digital Equipment Corporation (DEC),
introduction des m´emoires `a ferrites : mini-ordinateurs.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


2

Chapitre 1 - Historique et ´evolution des ordinateurs

Micro-ordinateurs : 1969-70, utilisation des circuits int´egr´es LSI.


Premier microprocesseur : Intel, 1971, microprocesseur 4004, puis 8008, premier
microordinateur : le Micral, 1973, France, puis l’Altair, 1975, Etats-Unis.
Autres microprocesseurs : 8080 et 8085 d’Intel, 6800 de Motorola, Z80 de Zilog :
microprocesseurs 8 bits, d´ebut des ann´ees 1980.
Microprocesseurs 16 bits : 8086/8088 d’Intel, 68000 de Motorola.
Microprocesseurs 32 bits en 1986 : 80386 d’Intel et 68020 de Motorola.
Fabrication en grandes s´eries des micro-ordinateurs : 1977, Apple, Commodore, Tandy.
IBM PC + MS-DOS (Microsoft) en 1981.

1.4 Machines actuelles


Ordinateurs de plus en plus puissants, bas´es sur des microprocesseurs performants :
Pentium, Power PC, ...
Nouvelles architectures de microprocesseurs : RISC.
Applications multim´edia, r´eseaux, ...
Syst`emes embarqu´es : microcontroˆleurs, processeurs de traitement de signal (DSP), ...

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


Chapitre 2
Architecture et fonctionnement d’un
microprocesseur

2.1 Structure d’un calculateur


unité centrale de traitement (UCT)

horloge registres

unité monde extérieur


unité unité
unité arithmétique (périphériques,
de d'entrées/
de contrôle et logique capteurs,
transfert sorties
(UAL) actionneurs, ...)

: ordre ou commande mémoire


centrale
: données

L’´el´ement de base d’un calculateur est constitu´e par l’unit´e centrale de traitement
(UCT, CPU : Central Processing Unit). L’UCT est constitu´ee :

• c’est l’organe de calcul du calculateur;d’une unit´e arithm´etique et logique

(UAL, ALU : Arithmetic and Logic Unit) : • r´esultats interm´ediaires);de registres :

zones de stockage des donn´ees de travail de l’UAL (op´erandes,

• mandes) `a tous les autres ´el´ements du calculateur afin d’ex´ecuter und’une unit
´e de controˆle (UC, CU : Control Unit) : elle envoie les ordres (ou
comprogramme-.

La m´emoire centrale contient :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


4 Chapitre 2 - Architecture et fonctionnement d’un microprocesseur

• le programme a` ex´ecuter : suite d’instructions ´el´ementaires;

• les donn´ees `a traiter.


L’unit´e d’entr´ees/sorties (E/S) est un interm´ediaire entre le calculateur et le monde
ext´erieur.
L’unit´e de transfert est le support mat´eriel de la circulation des donn´ees.
Les ´echanges d’ordres et de donn´ees dans le calculateur sont synchronis´es par une
horloge qui d´elivre des impulsions (signal d’horloge) a` des intervalles de temps fixes.
D´efinition : un microprocesseur consiste en une unit´e centrale de traitement (UAL +
registres + unit´e de controˆle) enti`erement contenue dans un seul circuit int´egr´e. Un
calculateur construit autour d’un microprocesseur est un microcalculateur ou un
microordinateur.
Remarque : un circuit int´egr´e qui inclut une UCT, de la m´emoire et des p´eriph
´eriques est un microcontroˆleur.

2.2 Organisation de la m´emoire centrale


La m´emoire peut ˆetre vue comme un ensemble de cellules ou cases contenant chacune
une information : une instruction ou une donn´ee. Chaque case m´emoire est rep´er´ee
par un num´ero d’ordre unique : son adresse.
Repr´esentation :
adresse des cases
mémoire
(généralement
notée en
hexadécimal)

12H 0003H

contenu C6H 0002H


des cases
mémoire 05H 0001H

3EH 0000H

largeur des cases mémoire :


en général 1 octet (8 bits)
= unité d'adressage

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


Une case m´emoire peut ˆetre lue ou ´ecrite par le microprocesseur (cas des m´emoires
vives) ou bien seulement lue (cas des m´emoires mortes).

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


6
2.3 - Circulation de l’information dans un calculateur

2.3 Circulation de l’information dans un calculateur


La r´ealisation mat´erielle des ordinateurs est g´en´eralement bas´ee sur l’architecture
de Von
Neumann :
périphériques

microprocesseur mémoire E/S

BUS

Le microprocesseur ´echange des informations avec la m´emoire et l’unit´e d’E/S, sous


forme de mots binaires, au moyen d’un ensemble de connexions appel´e bus. Un bus
permet de transf´erer des donn´ees sous forme parall`elle, c’est-`a-dire en faisant
circuler n bits simultan´ement.
Les microprocesseurs peuvent ˆetre class´es selon la longueur maximale des mots
binaires qu’ils peuvent ´echanger avec la m´emoire et les E/S : microprocesseurs 8 bits,
16 bits, 32 bits, ...
Le bus peut ˆetre d´ecompos´e en trois bus distincts :

• le bus d’adresses permet au microprocesseur de sp´ecifier l’adresse de la case m


´emoire a` lire ou `a ´ecrire;

• le bus de donn´ees permet les transferts entre le microprocesseur et la m´emoire


ou les E/S;

• le bus de commande transmet les ordres de lecture et d’´ecriture de la m´emoire


et des E/S.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


7
périphériques

microprocesseur mémoire E/S


largeur du bus
(nombre de bits
en parallèle)
8
bus de données
16
bus d'adresses
bus de commande

Remarque : les bus de donn´ees et de commande sont bidirectionnels, le bus d’adresse


est unidirectionnel : seul le microprocesseur peut d´elivrer des adresses (il existe une d
´erogation pour les circuits d’acc`es direct `a la m´emoire, DMA).
2.4 Description mat´erielle d’un microprocesseur
Un microprocesseur se pr´esente sous la forme d’un circuit int´egr´e muni d’un nombre g
´en´eralement important de broches. Exemples :
• Intel 8085, 8086, Zilog Z80 : 40 broches, DIP (Dual In-line Package);

• Motorola 68000 : 64 broches, DIP;

• Intel 80386 : 196 broches, PGA (Pin Grid Array).

Technologies de fabrication : NMOS, PMOS, CMOS.


On peut repr´esenter un microprocesseur par son sch´ema fonctionnel :

alimentation

horloge n bits
bus d'adresses

p bits
microprocesseur bus de données

signaux de
commande du
microprocesseur bus de commande

reset

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


8 Chapitre 2 - Architecture et fonctionnement d’un microprocesseur
2.5 Fonctionnement d’un microprocesseur
Un microprocesseur ex´ecute un programme. Le programme est une suite
d’instructions stock´ees dans la m´emoire. Une instruction peut ˆetre cod´ee sur un ou
plusieurs octets. Format d’une instruction :

opération à effectuer opérande 1 , opérande 2

données traitées par l'opération

Exemple :
ADDITI
ONNER case m´emoire 1 case m´emoire 2 op´eration
op´erandes
2.5 - Fonctionnement d’un microprocesseur Rangement

en m´emoire :

opérande p

instruction n

opérande 2 0002 H

opérande 1 0001 H
code opératoire
de l'addition 3EH 0000 H

Pour ex´ecuter les instructions dans l’ordre ´etabli par le programme, le


microprocesseur doit savoir a` chaque instant l’adresse de la prochaine instruction `a ex
´ecuter. Le microprocesseur utilise un registre contenant cette information. Ce registre
est appel´e pointeur d’instruction (IP : Instruction Pointer) ou compteur
d’instructions ou compteur ordinal.
Exemple :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


9

pointeur
opérande p
d'instruction
3A2BH instruction n 3A2BH

adresse de la
prochaine
instruction à
exécuter opérande 2 0002H

opérande 1 0001H

instruction 1 0000H

Remarque : la valeur initiale du pointeur d’instruction est fix´ee par le constructeur du


microprocesseur. Elle vaut une valeur bien d´efinie `a chaque mise sous tension du
microprocesseur ou bien lors d’une remise a` z´ero (reset).
Pour savoir quel type d’op´eration doit ˆetre ex´ecut´e (addition, soustraction, ...), le
microprocesseur lit le premier octet de l’instruction point´ee par le pointeur
d’instruction (code op´eratoire) et le range dans un registre appel´e registre
d’instruction. Le code op´eratoire est d´ecod´e par des circuits de d´ecodage contenus
dans le microprocesseur. Des signaux de commande pour l’UAL sont produits en
fonction de l’op´eration demand´ee qui est alors ex´ecut´ee.
Remarque : pour ex´ecuter une instruction, l’UAL utilise des registres de travail,
exemple : l’accumulateur, registre temporaire recevant des donn´ees interm´ediaires.
Pendant que l’instruction est d´ecod´ee, le pointeur d’instruction est incr´ement´e de
fa¸con `a pointer vers l’instruction suivante :
pointeur
d'instruction
3A2DH instruction n+1 3A2DH
opérande p 3A2CH

3A2BH instruction n 3A2BH

puis le processus de lecture et de d´ecodage des instructions recommence.


A la suite de chaque instruction, un registre du microprocesseur est actualis´e en
fonction du dernier r´esultat : c’est le registre d’´etat du microprocesseur. Chacun des
bits du registre d’´etat est un indicateur d’´etat ou flag (drapeau). Exemple : registre
d’´etat du microprocesseur Z80 :
7 6 5 4 3 2 1 0

S Z AC P/O N C

soustraction
signe zéro retenue parité/ retenue auxiliaire dépassement (carry)

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


10 Chapitre 2 - Architecture et fonctionnement d’un microprocesseur
Les indicateurs d’´etat sont activ´es lorsqu’une certaine condition est remplie, exemple :
le flag Z est mis `a 1 lorsque la derni`ere op´eration a donn´e un r´esultat nul, le flag C est
mis `a un lorsque le r´esultat d’une addition poss`ede une retenue, ...
Les indicateurs d’´etat sont utilis´es par les instructions de saut conditionnels : en
fonction de l’´etat d’un (ou plusieurs) flags, le programme se poursuit de mani`ere diff
´erente. Toutes ces ´etapes (lecture de l’instruction, d´ecodage, ex´ecution) sont
synchronis´ees par un s´equenceur qui assure le bon d´eroulement des op´erations :
mémoire
horloge
bus d'adresse
pointeur
d'instruction
bus de commande : "lire la mémoire"

séquenceur
registre
d'instruction
bus de données

décodeur
micro-code

exécution
2.5 - Fonctionnement d’un microprocesseur

Pour ex´ecuter le programme contenu dans la m´emoire centrale, le s´equenceur du


microprocesseur ex´ecute lui-mˆeme un programme appel´e micro-code, contenu dans
une m´emoire morte a` l’int´erieur du microprocesseur.
Le s´equenceur est dirig´e par une horloge qui d´elivre un signal de fr´equence donn´ee
permettant d’enchaˆıner les diff´erentes ´etapes de l’ex´ecution d’une instruction :
cycle d'instruction
période d'horloge
(microcycle)

T1 T2 T3

recherche de instruction
décodage exécution
l'instruction suivante

Chaque instruction est caract´eris´ee par le nombre de p´eriodes d’horloge (ou


microcycles) qu’elle utilise (donn´ee fournie par le fabricant du microprocesseur).
Exemple : horloge a` 5 MHz, p´eriode T = 1/f = 0,2 µs. Si l’instruction s’ex´ecute en 3
microcycles, la dur´ee d’ex´ecution de l’instruction est : 3 × 0,2 = 0,6 µs.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


11
L’horloge est constitu´ee par un oscillateur a` quartz dont les circuits peuvent ˆetre
internes ou externes au microprocesseur.
Structure compl`ete d’un microprocesseur simple : pour fonctionner, un
microprocesseur n´ecessite donc au minimum les ´el´ements suivants :
registres
Unité pointeur d'instruction
Arithmétique
et Logique registre d'instruction
(UAL) accumulateur
indicateurs d'état

séquenceur décodeur
d'instructions
horloge

quartz

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


12 Chapitre 3 - Les m´emoires

Chapitre 3
Les m´emoires

3.1 M´emoires ROM et RAM


On distingue deux types de m´emoires :
• les m´emoires vives (RAM : Random Access Memory) ou m´emoires volatiles.
Elles perdent leur contenu en cas de coupure d’alimentation. Elles sont utilis´ees
pour stocker temporairement des donn´ees et des programmes. Elles peuvent
ˆetre lues et ´ecrites par le microprocesseur;
• les m´emoires mortes (ROM : Read Only Memory) ou m´emoires non volatiles.
Elles conservent leur contenu en cas de coupure d’alimentation. Elles ne peuvent
ˆetre que lues par le microprocesseur (pas de possibilit´e d’´ecriture). On les utilise
pour stocker des donn´ees et des programmes de mani`ere d´efinitive.
Les m´emoires sont caract´eris´ees par leur capacit´e : nombre total de cases m´emoire
contenues dans un mˆeme boˆıtier.

3.2 Sch´ema fonctionnel d’une m´emoire


A0 D0
A1 D1
n lignes A2 p lignes de données
D2
d'adresses (le plus souvent, p =8)
RAM
actifs à l'état bas ou Dp-1
An-1
ROM
signal de lecture :RD ou OE
signal d'écriture (RAM) WR
:
validation de boîtier CS
:
(chip select)

Le nombre de lignes d’adresses d´epend de la capacit´e de la m´emoire : n lignes


d’adresses permettent d’adresser 2n cases m´emoire : 8 bits d’adresses permettent
d’adresser 256 octets, 16 bits d’adresses permettent d’adresser 65536 octets (= 64
Ko), ...
Exemple : m´emoire RAM 6264, capacit´e = 8K13 ×8 bits : 13 broches d’adresses A0 a`
A12,

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


2 = 8192 = 8 Ko.

3.3 Interfac¸age microprocesseur/m´emoire


microprocesseur mémoire
D0 D0 A0
D1 D1 A1
données A2

D7 D7
An-1

RD RD
commandes
WR WR
CS

A0
A1
adresses A2

An-1

Repr´esentation condens´ee (plus pratique) :


microprocesseur bus
mémoire
D0 D0 A0
D1 8 D1 A1
données A2

D7 D7
An-1

RD RD
commandes
WR WR
CS

A0
A1
adresses A2

n
An-1
3.4 - Chronogrammes de lecture/´ecriture en m´emoire 13

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


14 Chapitre 3 - Les m´emoires

3.4 Chronogrammes de lecture/´ecriture en m´emoire


Une caract´eristique importante des m´emoires est leur temps d’acc`es : c’est le temps
qui s’´ecoule entre l’instant ou` l’adresse de la case m´emoire est pr´esent´ee sur le bus
d’adresses et celui ou` la m´emoire place la donn´ee demand´ee sur le bus de donn´ees.
Ce temps varie entre 50 ns (m´emoires rapides) et 300 ns (m´emoires lentes).
Chronogramme de lecture en m´emoire :
une période d'horloge

horloge

temps d'établissement de l'adresse


adresse stable

bus
adresse sur le bus (0 ou 1)
d'adresses

lecture interdite lecture autorisée

commande
de lecture
donnée
temps d'accès stable

bus de donnée
valeurs non significatives
données sur le bus

Remarque : si le temps d’acc`es d’une m´emoire est sup´erieur a` une p´eriode d’horloge
(m´emoire lente), le microprocesseur peut accorder a` la m´emoire un temps suppl
´ementaire (une ou plusieurs p´eriodes d’horloge), a` la demande de celle-ci. Ce temps
suppl´ementaire est appel´e temps d’attente (wait time : TW) :
signal
de lecture

microprocesseur mémoire

demande
de temps
d'attente
Chronogramme d’´ecriture en m´emoire :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


horloge

bus
adresse sur le bus
d'adresses

bus de donnée sur le bus


données
pallier
de sécurité

commande
de lecture écriture autorisée

3.5 Connexion de plusieurs boˆıtiers m´emoire sur le bus


d’un microprocesseur

Les boˆıtiers m´emoire poss`edent une broche not´ee CS : Chip Select. Lorsque cette
broche est active (´etat bas), le circuit peut ˆetre lu ou ´ecrit. Lorsqu’elle est
inactive( ´etat haut), le circuit est exclu du service : ses broches de donn´ees D0 `a D7
passent a` l’´etat de haute imp´edance : tout se passe comme si la m´emoire ´etait d
´econnect´ee du bus de donn´ees du microprocesseur, d’ou` la possibilit´e de connecter
plusieurs boˆıtiers m´emoire sur un mˆeme

bus : un seul signal CS doit ˆetre actif a` un instant donn´e pour ´eviter les conflits entre
les diff´erents boˆıtiers.

Exemple : connexion de trois boˆıtiers m´emoire d’une capacit´e de 8 Ko chacun (13


lignes d’adresses) sur un bus d’adresse de 16 bits :
3.5 - Connection de plusieurs boˆıtiers m´emoire 15

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


16 Chapitre 3 - Les m´emoires

Dans un mˆeme boˆıtier, une case m´emoire est d´esign´ee par les bits d’adresses A0 `a
A12 :
A12 A11 ... A1 A0 A12 A11 ... A1 A0
0 0 ... 0 0 `a 1 1 ... 1 1

0000H 1FFFH
Pour atteindre la m´emoire no1, il faut mettre a` 1 le bit A13 et `a 0 les bits A14 et A15. La
plage d’adresses occup´ee par cette m´emoire est donc :
A15 A14 A13 A12 ... A0 A15 A14 A13 A12 ... A0
`a 0 0 1 0 ... 0 0 0 1 1 ... 1
2000H 3FFFH
De mˆeme, pour la m´emoire no2, on doit avoir A13 = 0, A14 = 1 et A15 = 0 d’ou` la plage
d’adresses occup´ee cette m´emoire :
A15 A14 A13 A12 ... A0 A15 A14 A13 A12 ... A0
`a 0 1 0 0 ... 0 0 1 0 1 ... 1
4000H 5FFFH
Pour la m´emoire no3, on doit avoir A13 = 0, A14 = 0 et A15 = 1 d’ou` la plage d’adresses
occup´ee cette m´emoire :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


FFFFH
A15 A14 A13 A12 ... A0 A15 A14 A13 A12 ... A0
`a 1 0 0 0 ... 0 1 0 0 1 ... 1
8000H 9FFFH
On en d ´eduit la cartographie ou
mapping de la m´emoire visible par
le 9FFFH microprocesseur :
mémoire no 3
8000H

mémoire
réelle
5FFFH
implantée
mémoire no 2
4000H
3FFFH
mémoire no 1
2000H

mémoire totale adressable par le microprocesseur


0000H

3.6 D´ecodage d’adresses


Les trois bits A13, A14 et A15 utilis´es pr´ec´edemment fournissent en fait 8
combinaisons, de 000 a` 111, d’o`u la possibilit´e de connecter jusqu’`a 8 boˆıtiers m
´emoire de 8 Ko sur le bus. La m´emoire totale implant´ee devient donc de 8 × 8 Ko = 64
Ko : valeur maximale possible avec 16 bits d’adresses.
Pour cela, il faut utiliser un circuit de d´ecodage d’adresses, dans ce cas : un d´ecodeur
3 vers 8.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


18 Chapitre 3 - Les m´emoires

A0 à A12 mémoire no 0
1
microprocesseur 2
D0 à D7
3
A15 A14 A13 CS 4
CS 5
CS 6
CS 7
A Y0 CS
B Y1 CS
C Y2
Y3 CS
Y4 CS
Y5
Y6
Y7
décodeur 3 vers 8
(ex: 74138)

3.7 - Classification des m´emoires 17

Table de v´erit´e du d´ecodeur d’adresses :


C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0 0 0 0 1 1 1 1 1 1 1
0 0 1 1 0 1 1 1 1 1 1
0 1 0 1 1 0 1 1 1 1 1
0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 1 1 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 0
Le mapping de la m´emoire devient ainsi :
FFFFH
mémoire no 7
E000H
mémoire no 6 DFFFH

C000H
mémoire no 5 BFFFH

A000H
mémoire no 4 9FFFH
8000H
mémoire no 3
7FFFH

mémoire no 2 6000H
5FFFH
mémoire no 1

ISET Rad`es cours de microprocesseur


o
HAGGEGE, 2003`
mémoire n 0
4000H
3FFFH

2000H 1FFFH

0000H

3.7 Classification des m´emoires


Jusqu’`a la fin des ann´ees 1970, on utilisait des m´emoires `a tores magn´etiques, lentes
et de faibles capacit´es. Actuellement, on n’utilise plus que des m´emoires `a
semiconducteurs.
mémoires à semiconducteurs

mémoires mortes mémoires vives

ROM PROM EPROM EEPROM DRAM SRAM


M´emoires mortes :
• ROM : Read Only Memory. M´emoire `a lecture seule, sans ´ecriture. Son contenu
est programm´e une fois pour toutes par le constructeur. Avantage : faible couˆt.
Inconv´enient : n´ecessite une production en tr`es grande quantit´e.
• PROM : Programmable Read Only Memory. ROM programmable une seule fois par
l’utilisateur (ROM OTP : One Time Programming) en faisant sauter des fusibles. N
´ecessite un programmateur sp´ecialis´e : application d’une tension de
programmation (21 ou 25 V) pendant 20 ms.
• EPROM : Erasable PROM, appel´ee aussi UVPROM. ROM programmable
´electriquement avec un programmateur et effac¸able par exposition `a un
rayonnement ultraviolet pendant 30 minutes. Famille 27nnn, exemple : 2764 (8
Ko), 27256 (32 Ko). Avantage : reprogrammable par l’utilisateur.
• EEPROM : Electrically Erasable PROM. ROM programmable et effac¸able
´electriquement. Lecture `a vitesse normale (≤ 100 ns). Ecriture (= effacement)
tr`es lente (≈ 10 ms). Application : les EEPROM contiennent des donn´ees qui
peuvent ˆetre modifi´ees de temps en temps, exemple : param`etres de
configuration des ordinateurs. Avantage : programmation sans extraction de la
carte et sans programmateur. Inconv´enient : couˆt ´elev´e.
M´emoires vives :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


20 Chapitre 3 - Les m´emoires

• SRAM : Static Random Access Memory. M´emoire statique a` acc`es al´eatoire, a`


base de bascules `a semiconducteurs `a deux ´etats (bascules RS). Famille 62nnn,
exemple :
62128 (16 Ko). Avantage : tr`es rapide, simple d’utilisation. Inconv´enient : compliqu´e
`a r´ealiser.
• DRAM : Dynamic RAM. Bas´ee sur la charge de condensateurs : condensateur
charg´e = 1, condensateur d´echarg´e = 0. Avantage : int´egration ´elev´ee, faible
couˆt. Inconv´enient : n´ecessite un rafraˆıchissement p´eriodique `a cause du
courant de fuite des condensateurs. Application : r´ealisation de la m´emoire vive
des ordinateurs (barettes m´emoire SIMM : Single In-line Memory module).

Chapitre 4

Le microprocesseur Intel 8086

4.1 Description physique du 8086


Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en 1978. C’est le
premier microprocesseur de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486,
Pentium, ...). Il se pr´esente sous la forme d’un boˆıtier DIP (Dual In-line Package) `a 40
broches :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


HAGGEGE, 2003` cours de microprocesseur ISET Rad`es
22 Chapitre 4 - Le microprocesseur Intel 8086

4.2 Sch´ema fonctionnel du 8086


alimentation
VCC GND

horloge CLK A19

RESET A16 bus


d'adresses/
READY AD15
contrôle du données
microprocesseur MN/MX
8086 AD0
TEST
WR

RD
INTA

interruptions NMI M/IO


signaux
INTR ALE
de contrôle
BHE

DEN
HOLD
DMA DT/R
HLDA
S0 signaux
d'état
S7

4.3 Description et utilisation des signaux du 8086


CLK : entr´ee du signal d’horloge qui cadence le fonctionnement du microprocesseur. Ce
signal provient d’un g´en´erateur d’horloge : le 8284.
4,77 MHz
CLK
quartz
14,318 MHz 8284 READY
8086
RESET
générateur
d'horloge

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


4.3 - Description et utilisation des signaux du 8086 23

RESET : entr´ee de remise `a z´ero du microprocesseur. Lorsque cette entr´ee est mise `a
l’´etat haut pendant au moins 4 p´eriodes d’horloge, le microprocesseur est r´einitialis´e :
il va ex´ecuter l’instruction se trouvant a` l’adresse FFFF0H (adresse de bootstrap). Le
signal de RESET est fourni par le g´en´erateur d’horloge.

READY : entr´ee de synchronisation avec la m´emoire. Ce signal provient ´egalement du


g´en´erateur d’horloge.

TEST : entr´ee de mise en attente du microprocesseur d’un ´ev´enement ext´erieur.

MN : entr´ee de choix du mode de fonctionnement du microprocesseur :

• mode minimum (MN/MX = 1) : le 8086 fonctionne de mani`ere autonome, il g


´en`ere

lui-mˆeme le bus de commande (RD, WR, ...);

• mode maximum (MN/MX = 0) : ces signaux de commande sont produits par un


controˆleur de bus, le 8288. Ce mode permet de r´ealiser des syst`emes
multiprocesseurs.

NMI et INTR : entr´ees de demande d’interruption. INTR : interruption normale, NMI


(Non Maskable Interrupt) : interruption prioritaire.

INTA : Interrupt Acknowledge, indique que le microprocesseur accepte l’interruption.

HOLD et HLDA : signaux de demande d’accord d’acc`es direct `a la m´emoire (DMA).

S0 `a S7 : signaux d’´etat indiquant le type d’op´eration en cours sur le bus.

A16/S3 `a A19/S6 : 4 bits de poids fort du bus d’adresses, multiplex´es avec 4 bits
d’´etat.

AD0 `a AD15 : 16 bits de poids faible du bus d’adresses, multiplex´es avec 16 bits de
donn´ees. Le bus A/D est multiplex´e (multiplexage temporel) d’ou` la n´ecessit´e d’un d
´emultiplexage pour obtenir s´epar´ement les bus d’adresses et de donn´ees :

• 16 bits de donn´ees (microprocesseur 16 bits);

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


24 Chapitre 4 - Le microprocesseur Intel 8086

• 20 bits d’adresses, d’ou` 220 = 1 Mo d’espace m´emoire adressable par le 8086.

Chronogramme du bus A/D :


1 cycle de bus

T1 T2 T3 T4 T1 T2 T3 T4

CLK

ADi adresse donnée adresse donnée

ALE

lecture
RD

écriture

WR
Le d´emultiplexage des signaux AD0 a` AD15 (ou A16/S3 `a A19/S6) se fait en m
´emorisant l’adresse lorsque celle-ci est pr´esente sur le bus A/D, `a l’aide d’un verrou
(latch), ensemble de bascules D. La commande de m´emorisation de l’adresse est g´en´er
´ee par le microprocesseur : c’est le signal ALE, Address Latch Enable. Circuit de d
´emultiplexage A/D :

LATCH
ALE
bus d'adresses
8086 H Q
D A0 - A19
x 20
bus de données
20
AD0 - AD15 D0 - D15
A16/S3 - A19/S6 S3 -S6

Fonctionnement :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


4.3 - Description et utilisation des signaux du 8086 25

• si ALE = 1, le verrou est transparent (Q = D);

• si ALE = 0, m´emorisation de la derni`ere valeur de D sur les sorties Q;

• les signaux de lecture (RD) ou d’´ecriture (WR) ne sont g´en´er´es par le


microprocesseur que lorsque les donn´ees sont pr´esentes sur le bus A/D.
Exemples de bascules D : circuits 8282, 74373, 74573.

AD0 - AD7 D0 Q0
A0 - A7
ou D1 Q1
ou
AD8 - AD15 A8 - A15
8282
ou ou
A16/S3 - A19/S6 A16 - A19
D7 Q7
ALE STROBE
OE

RD : Read, signal de lecture d’une donn´ee.


WR : Write, signal d’´ecriture d’une donn´ee.
M : Memory/Input-Output, indique si le 8086 adresse la m´emoire (M/IO =
1) ou les

entr´ees/sorties (M/IO = 0).

DEN : Data Enable, indique que des donn´ees sont en train de circuler sur le bus A/D
(´equivalent de ALE pour les donn´ees).
DT : Data Transmit/Receive, indique le sens de transfert des donn´ees : •
DT/R = 1 : donn´ees ´emises par le microprocesseur (´ecriture);

• DT/R = 0 : donn´ees re¸cues par le microprocesseur (lecture).

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


26 Chapitre 4 - Le microprocesseur Intel 8086

1 cycle de bus

T1 T2 T3 T4

CLK

ADi adresse donnée

ALE

DEN
écriture

DT/R
lecture
Les signaux DEN et DT/R sont utilis´es pour la commande de tampons de bus (buffers)
permettant d’amplifier le courant fourni par le microprocesseur sur le bus de donn´ees.
Exemples de tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245.
A0 B0
A1 B1
AD0 - AD7 8286
D0 - D7
ou ou
AD8 - AD15 D8 - D15
commande
du sens de A7 x8 B7
transfert lignes de
DIR données
DT/R bufferisées
DEN EN
validation
du transfert

BHE : Bus High Enable, signal de lecture de l’octet de poids fort du bus de donn´ees. Le
8086 poss`ede un bus d’adresses sur 20 bits, d’ou` la capacit´e d’adressage de 1 Mo ou
512 Kmots de 16 bits (bus de donn´ees sur 16 bits).
Le m´ega-octet adressable est divis´e en deux banques de 512 Ko chacune : la banque
inf´erieure (ou paire) et la banque sup´erieure (ou impaire). Ces deux banques sont s
´electionn´ees par :
• A0 pour la banque paire qui contient les octets de poids faible;

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


4.3 - Description et utilisation des signaux du 8086 27

• BHE pour la banque impaire qui contient les octets de poids fort.

A1 - A19 bus d'adresses

A1 A0 D0 D0
A2 A1 D1 D1
banque
paire D7 D7

A18
A19
CS

A0 D8
A0 D0 D9
A1
D1
A2
banque D15
impaire D7

A18
A19
BHE A1
CS

D0 - D15
bus de données
Seuls les bits A1 `a A19 servent a` d´esigner une case m´emoire dans chaque banque de
512 Ko. Le microprocesseur peut ainsi lire et ´ecrire des donn´ees sur 8 bits ou sur 16
bits :
BHE A0 octets transf´er´es
0 0 les deux octets (mot complet)
0 1 octet fort (adresse impaire)
1 0 octet faible (adresse paire)
1 1 aucun octet
Remarque : le 8086 ne peut lire une donn´ee sur 16 bits en une seule fois, uniquement
si l’octet de poids fort de cette donn´ee est rang´e `a une adresse impaire et l’octet de
poids faible a` une adresse paire (alignement sur les adresses paires), sinon la lecture de
cette donn´ee doit se faire en deux op´erations successives, d’ou` une augmentation du
temps d’ex´ecution du transfert duˆ `a un mauvais alignement des donn´ees. R´ealisation
des deux banques avec plusieurs boˆıtiers m´emoire :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


28 Chapitre 4 - Le microprocesseur Intel 8086

Cr´eation du bus syst`eme du 8086 :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


4.3 - Description et utilisation des signaux du 8086 29

CLK BHE/S7 8282 BHE


A19/S6 A19
8284 D Q
RESET
A16/S3 A16
READY STR
AD0
adresses
AD15
8282 A15
8086
WR ALE D Q
A8
RD DEN STR
M/IO DT/R
8282 A7
D Q BUS SYSTEME
A0
STR

D15
A B
8286 D8 données
EN
DIR

D7
A B
8286 D0
EN
DIR commandes
M/IO

RD
WR

4.4 Organisation interne du 8086


Le 8086 est constitu´e de deux unit´es fonctionnant en parall`ele :

• l’unit´e d’ex´ecution (EU : Execution Unit);

• l’unit´e d’interface de bus (BIU : Bus Interface Unit).

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


30 Chapitre 4 - Le microprocesseur Intel 8086
4.4 - Organisation interne du 8086

8 bits 8 bits
AH AL = AX
16 bits
registres BH BL = BX
16 bits
généraux CH CL = CX DS
DH DL = DX SS registres
SI CS de segments
pointeurs DI ES
et index SP IP pointeur d'instruction
BP

bus de données bus externe A/D


interne 16 génération multiplexé
d'adresses +
et contrôle bus de
de bus contrôle

registres 1
temporaires 2
file d'attente
3 des instructions
4 (6 octets)
5
6
commandes
de l'unité
UAL
d'exécution

indicateurs

UNITE D'EXECUTION (EU) UNITE D'INTERFACE DE BUS (BIU)

Roˆle des deux unit´es :


• l’unit´e d’interface de bus (BIU) recherche les instructions en m´emoire et les range

dans une file d’attente;

• l’unit´e d’ex´ecution (EU) ex´ecute les instructions contenues dans la file d’attente.

Les deux unit´es fonctionnent simultan´ement, d’ou` une acc´el´eration du processus d’ex
´ecution d’un programme (fonctionnement selon le principe du pipe-line).

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


31
Le microprocesseur 8086 contient 14 registres r´epartis en 4 groupes :
• Registres g´en´eraux : 4 registres sur 16 bits.
AX = (AH,AL);
BX = (BH,BL); CX =
(CH,CL); DX =
(DH,DL).
Ils peuvent ˆetre ´egalement consid´er´es comme 8 registres sur 8 bits. Ils servent a`
contenir temporairement des donn´ees. Ce sont des registres g´en´eraux mais ils
peuvent
ˆetre utilis´es pour des op´erations particuli`eres. Exemple : AX = accumulateur, CX =
compteur.
• Registres de pointeurs et d’index : 4 registres sur 16 bits.

Pointeurs :
SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde de
donn´ees en cours d’ex´ecution d’un programme);
BP : Base Pointer, pointeur de base, utilis´e pour adresser des donn´ees
sur la pile.
Index :
SI : Source Index;
DI : Destination Index.
Ils sont utilis´es pour les transferts de chaˆınes d’octets entre deux zones m
´emoire.
Les pointeurs et les index contiennent des adresses de cases m´emoire.
• Pointeur d’instruction et indicateurs (flags) : 2 registres sur 16 bits.

Pointeur d’instruction : IP, contient l’adresse de la prochaine instruction a` ex


´ecuter.
Flags :
O D I T S Z A P C
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CF : indicateur de retenue (carry);
PF : indicateur de parit´e;
AF : indicateur de retenue auxiliaire;
ZF : indicateur de z´ero;
SF : indicateur de signe;

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


32 Chapitre 4 - Le microprocesseur Intel 8086
TF : indicateur d’ex´ecution pas `a pas (trap);
IF : indicateur d’autorisation d’interruption;
DF : indicateur de d´ecr´ementation; OF :
indicateur de d´epassement (overflow).
• Registres de segments : 4 registres sur 16 bits. CS : Code Segment, registre de

segment de code;

4.5 - Gestion de la m´emoire par le 8086

DS : Data Segment, registre de segment de donn´ees;


SS : Stack Segment, registre de segment de pile;
ES : Extra Segment, registre de segment suppl´ementaire pour les donn´ees;
Les registres de segments, associ´es aux pointeurs et aux index, permettent au
microprocesseur 8086 d’adresser l’ensemble de la m´emoire.

4.5 Gestion de la m´emoire par le 8086


L’espace m´emoire adressable par le 8086 est de 2 20 = 1 048 576 octets = 1 Mo (20 bits
d’adresses). Cet espace est divis´e en segments. Un segment est une zone m´emoire de
64 Ko (65 536 octets) d´efinie par son adresse de d´epart qui doit ˆetre un multiple de
16. Dans une telle adresse, les 4 bits de poids faible sont a` z´ero. On peut donc repr
´esenter l’adresse d’un segment avec seulement ses 16 bits de poids fort, les 4 bits de
poids faible ´etant implicitement `a 0.
Pour d´esigner une case m´emoire parmi les 216 = 65 536 contenues dans un segment, il
suffit d’une valeur sur 16 bits.
Ainsi, une case m´emoire est rep´er´ee par le 8086 au moyen de deux quantit´es sur 16
bits :
• l’adresse d’un segment;

• un d´eplacement ou offset (appel´e aussi adresse effective) dans ce segment.

Cette m´ethode de gestion de la m´emoire est appel´ee segmentation de la m´emoire.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


33
1 Mo FFFFFH

case
un segment mémoire
(64 Ko) offset
adresse
multiple
de 16

0 00000H

La donn´ee d’un couple (segment,offset) d´efinit une adresse logique, not´ee sous la
forme segment : offset.
L’adresse d’une case m´emoire donn´ee sous la forme d’une quantit´e sur 20 bits (5
digits hexa) est appel´ee adresse physique car elle correspond a` la valeur envoy´ee r
´eellement sur le bus d’adresses A0 - A19.
Correspondance entre adresse logique et adresse physique :

16 bits 4 bits

segment 0000

20 bits

+ offset
16 bits

adresse physique

20 bits
Ainsi, l’adresse physique se calcule par l’expression :
adresse physique = 16 × segment + offset

car le fait d’injecter 4 z´eros en poids faible du segment revient a` effectuer un d´ecalage
de 4 positions vers la gauche, c’est a` dire une multiplication par 24 = 16.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


34 Chapitre 4 - Le microprocesseur Intel 8086
A un instant donn´e, le 8086 a acc`es `a 4 segments dont les adresses se trouvent dans les
registres de segment CS, DS, SS et ES. Le segment de code contient les instructions du
programme, le segment de donn´ees contient les donn´ees manipul´ees par le
programme, le segment de pile contient la pile de sauvegarde et le segment suppl
´ementaire peut aussi contenir des donn´ees.
Le registre CS est associ´e au pointeur d’instruction IP, ainsi la prochaine instruction a` ex
´ecuter se trouve a` l’adresse logique CS : IP.
1 Mo FFFFFH

instruction
à exécuter
segment
de code CS : IP
offset = IP
CS : 0000H

0 00000H
4.5 - Gestion de la m´emoire par le 8086

De mˆeme, les registres de segments DS et ES peuvent ˆetre associ´es `a un registre


d’index. Exemple : DS : SI, ES : DI. Le registre de segment de pile peut ˆetre associ´e aux
registres de pointeurs : SS : SP ou SS : BP.
M´emoire accessible par le 8086 a` un instant donn´e :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


35
1 Mo FFFFFH

extra
segment ES : DI
offset = DI
ES : 0000H

segment
de pile SS : SP
offset = SP
SS : 0000H

segment
de données DS : SI
offset = SI
DS : 0000H

segment
de code CS : IP
offset = IP
CS : 0000H
0 00000H
Remarque : les segments ne sont pas n´ecessairement distincts les uns des autres, ils
peuvent se chevaucher ou se recouvrir compl`etement.

Le nombre de segments utilis´e d´efinit le mod`ele m´emoire du programme.


Contenu des registres apr`es un RESET du microprocesseur :
IP = 0000H
CS = FFFFH
DS = 0000H
ES = 0000H

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


36 Chapitre 4 - Le microprocesseur Intel 8086
SS = 0000H
Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la premi`ere instruction ex
´ecut´ee par le 8086 se trouve donc a` l’adresse logique FFFFH : 0000H, correspondant `a
l’adresse physique FFFF0H (bootstrap). Cette instruction est g´en´eralement un saut vers
le programme principal qui initialise ensuite les autres registres de segment.

4.6 Le microprocesseur 8088


Le microprocesseur 8088 est identique au 8086 sauf que son bus de donn´ees externe est
sur 8 bits au lieu de 16 bits, le bus de donn´ees interne restant sur 16 bits.
Le 8088 a ´et´e produit par Intel apr`es le 8086 pour assurer la compatibilit´e avec des
circuits p´eriph´eriques d´ej`a existant, fabriqu´es pour les microprocesseurs 8 bits 8080
et 8085. Diff´erences avec le 8086 :
• les broches AD8 `a AD15 deviennent A8 a` A15 (bus de donn´ees sur 8 bits);

• la broche BHE n’existe pas dans le 8088 car il n’y a pas d’octet de poids fort sur le
bus de donn´ees;

• la broche M/IO devient IO/M pour la compatibilit´e avec d’anciens circuits d’E/S.

Au niveau de l’architecture interne, pas de diff´erences avec le 8086 sauf que la file
d’attente des instructions passe de 6 a` 4 octets.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


Chapitre 5

La programmation en assembleur du
microprocesseur 8086

5.1 G´en´eralit´es
Chaque microprocesseur reconnait un ensemble d’instructions appel´e jeu
d’instructions (Instruction Set) fix´e par le constructeur. Pour les microprocesseurs
classiques, le nombre d’instructions reconnues varie entre 75 et 150 (microprocesseurs
CISC : Complex Instruction Set Computer). Il existe aussi des microprocesseurs dont le
nombre d’instructions est tr`es r´eduit (microprocesseurs RISC : Reduced Instruction Set
Computer) : entre 10 et 30 instructions, permettant d’am´eliorer le temps d’ex´ecution
des programmes.
Une instruction est d´efinie par son code op´eratoire, valeur num´erique binaire difficile
`a manipuler par l’ˆetre humain. On utilise donc une notation symbolique pour repr
´esenter les instructions : les mn´emoniques. Un programme constitu´e de mn
´emoniques est appel´e programme en assembleur.
Les instructions peuvent ˆetre class´ees en groupes :
• instructions de transfert de donn´ees;

• instructions arithm´etiques;

• instructions logiques;

• instructions de branchement ...

5.2 Les instructions de transfert


Elles permettent de d´eplacer des donn´ees d’une source vers une destination :
• registre vers m´emoire;

• registre vers registre;

• m´emoire vers registre.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


38 Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Remarque : le microprocesseur 8086 n’autorise pas les transferts de m´emoire vers m


´emoire (pour ce faire, il faut passer par un registre interm´ediaire).
Syntaxe : MOV destination,source
Remarque : MOV est l’abbr´eviation du verbe « to move » : d´eplacer.
Il existe diff´erentes fa¸cons de sp´ecifier l’adresse d’une case m´emoire dans une
instruction : ce sont les modes d’adressage.
Exemples de modes d’adressage simples :
• mov ax,bx : charge le contenu du registre BX dans le registre AX. Dans ce cas, le

transfert se fait de registre a` registre : adressage par registre;

• mov al,12H : charge le registre AL avec la valeur 12H. La donn´ee est fournie imm

´ediatement avec l’instruction : adressage imm´ediat.

• mov bl,[1200H] : transf`ere le contenu de la case m´emoire d’adresse effective


(offset) 1200H vers le registre BL. L’instruction comporte l’adresse de la case m
´emoire ou` se trouve la donn´ee : adressage direct. L’adresse effective repr
´esente l’offset de la case m´emoire dans le segment de donn´ees (segment dont
l’adresse est contenue dans le registre DS) : segment par d´efaut.
1 Mo FFFFFH

mov bl, 1200H


BL
segment
de données DS : 1200H
offset = 1200H
DS : 0000H

0 00000H

On peut changer le segment lors d’un adressage direct en ajoutant un pr´efixe de


segment, exemple : mov bl,es :[1200H]. On parle alors de for¸cage de segment.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


1 Mo FFFFFH
mov bl, es : 1200H
BL
extra
segment ES : 1200H
offset = 1200H
ES : 0000H

0 00000H
5.2 - Les instructions de transfert 35

Remarque : dans le cas de l’adressage imm´ediat de la m´emoire, il faut indiquer le


format de la donn´ee : octet ou mot (2 octets) car le microprocesseur 8086 peut
manipuler des donn´ees sur 8 bits ou 16 bits. Pour cela, on doit utiliser un sp´ecificateur
de format :
• mov byte ptr [1100H],65H : transf`ere la valeur 65H (sur 1 octet) dans la case m
´emoire d’offset 1100H;
• mov word ptr [1100H],65H : transf`ere la valeur 0065H (sur 2 octets) dans les cases
m´emoire d’offset 1100H et 1101H.

mov byte ptr 1100H , 65H mov word ptr 1100H , 65H

1101H 00H
2 octets
1100H 65H 1 octet 1100H 65H

Remarque : les microprocesseurs Intel rangent l’octet de poids faible d’une donn´ee sur
plusieurs octets `a l’adresse la plus basse (format Little Endian). Modes d’adressage
´evolu´es :
• adressage bas´e : l’offset est contenu dans un registre de base BX ou BP.

Exemples :
mov al,[bx] : transf`ere la donn´ee dont l’offset est contenu dans le registre de
base BX vers le registre AL. Le segment associ´e par d´efaut au registre BX est
le segment de donn´ees : on dit que l’adressage est bas´e sur DS; mov al,[bp] :
le segment par d´efaut associ´e au registre de base BP est le segment de pile.
Dans ce cas, l’adressage est bas´e sur SS.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


40 Chapitre 5 - La programmation en assembleur du microprocesseur 8086

1 Mo FFFFFH 1 Mo FFFFFH
mov al, bx mov al, bp
AL AL
segment segment
de données DS : BX SS : BP
offset = BX de pile offset = BP
DS : 0000H SS : 0000H

0 00000H 0 00000 H

• adressage index´e : semblable `a l’adressage bas´e, sauf que l’offset est contenu
dans un registre d’index SI ou DI, associ´es par d´efaut au segment de donn´ees.
Exemples :
mov al,[si] : charge le registre AL avec le contenu de la case m´emoire dont
l’offset est contenu dans SI;
mov [di],bx : charge les cases m´emoire d’offset DI et DI + 1 avec le contenu du
registre BX.

Remarque : une valeur constante peut ´eventuellement ˆetre ajout´ee aux registres de
base ou d’index pour obtenir l’offset. Exemple : mov [si+100H],ax
qui peut aussi s’´ecrire
mov [si][100H],ax
ou encore mov 100H[si],ax

Les modes d’adressage bas´es ou index´es permettent la manipulation de tableaux rang


´es en m´emoire. Exemple :

mov si,0 mov word ptr


table[si],1234H mov si,2
mov word ptr table[si],5678H

Dans cet exemple, table repr´esente l’offset du premier ´el´ement du tableau et le registre
SI joue le roˆle d’indice de tableau :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


56H
DS : table SI 78H
12H
DS : table 0 34H

• adressage bas´e et index´e : l’offset est obtenu en faisant la somme d’un registre
de base, d’un registre d’index et d’une valeur constante. Exemple : mov ah,
[bx+si+100H]
Ce mode d’adressage permet l’adressage de structures de donn´ees complexes :
matrices, enregistrements, ... Exemple :

mov bx,10
mov si,15
mov byte ptr matrice[bx][si],12H

Dans cet exemple, BX et SI jouent respectivement le rˆole d’indices de ligne et de


colonne dans la matrice.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


42 Chapitre 5 - La programmation en assembleur du microprocesseur 8086
5.3 - Les instructions arithm´etiques

5.3 Les instructions arithm´etiques


Les instructions arithm´etiques de base sont l’addition, la soustraction, la
multiplication et la division qui incluent diverses variantes. Plusieurs modes
d’adressage sont possibles.
Addition : ADD ope´rande1,op´erande2
L’op´eration effectu´ee est : ope´rande1←ope´rande1 + ope´rande2.
Exemples :
• add ah,[1100H] : ajoute le contenu de la case m´emoire d’offset 1100H a`
l’accumulateur AH (adressage direct);
• add ah,[bx] : ajoute le contenu de la case m´emoire point´ee par BX `a
l’accumulateur AH (adressage bas´e);
• add byte ptr [1200H],05H : ajoute la valeur 05H au contenu de la case m´emoire
d’offset 1200H (adressage imm´ediat).
Soustraction : SUB ope´rande1,op´erande2
L’op´eration effectu´ee est : ope´rande1←ope´rande1−ope´rande2.

Multiplication : MUL ope´rande, ou` ope´rande est un registre ou une case m´emoire.
Cette instruction effectue la multiplication du contenu de AL par un op´erande sur 1
octet ou du contenu de AX par un op´erande sur 2 octets. Le r´esultat est plac´e dans AX
si les donn´ees `a multiplier sont sur 1 octet (r´esultat sur 16 bits), dans (DX,AX) si elles
sont sur 2 octets (r´esultat sur 32 bits). Exemples : • mov al,51 mov bl,32 mul bl → AX =
51 × 32

• mov ax,4253 mov bx,1689 mul bx


→ (DX,AX) = 4253 × 1689 •
mov al,43 mov byte ptr
[1200H],28 mul byte ptr
[1200H]
→ AX = 43 × 28

• mov ax,1234 mov word ptr [1200H],5678 mul word ptr [1200H]
→ (DX,AX) = 1234 × 5678

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


43
Division : DIV ope´rande, ou` ope´rande est un registre ou une case m´emoire. Cette
instruction effectue la division du contenu de AX par un op´erande sur 1 octet ou le
contenu de (DX,AX) par un op´erande sur 2 octets. R´esultat : si l’op´erande est sur 1
octet, alors AL = quotient et AH = reste; si l’op´erande est sur 2 octets, alors AX =
quotient et DX = reste. Exemples : • mov ax,35 mov bl,10 div bl
→ AL = 3 (quotient) et AH = 5 (reste)

• mov dx,0 mov ax,1234 mov bx,10 div bx


→ AX = 123 (quotient) et DX = 4 (reste) Autres

instructions arithm´etiques :

• ADC : addition avec retenue;

• SBB : soustraction avec retenue;

• INC : incr´ementation d’une unit´e;

• DEC : d´ecr´ementation d’une unit´e; • IMUL : multiplication sign´ee;

• IDIV : division sign´ee.

5.4 Les instructions logiques


Ce sont des instructions qui permettent de manipuler des donn´ees au niveau des bits.
Les op´erations logiques de base sont :
• ET;

• OU;

• OU exclusif;

• compl´ement `a 1;

• compl´ement `a 2;

• d´ecalages et rotations.

Les diff´erents modes d’adressage sont disponibles.

ET logique : AND ope´rande1,op´erande2

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


44 Chapitre 5 - La programmation en assembleur du microprocesseur 8086
L’op´eration effectu´ee est : ope´rande1←ope´rande1 ET ope´rande2.
Exemple :

mov al,10010110B AL = 1 0 0 1 0 1 1
0 mov bl,11001101B → BL = 1 1 0 0 1
1 0 1

and al, bl AL = 1 0 0 0 0 1 0 0
5.4 - Les instructions logiques

Application : masquage de bits pour mettre a` z´ero certains bits dans un mot. Exemple
: masquage des bits 0, 1, 6 et 7 dans un octet :

masque
OU logique : OR ope´rande1,op´erande2
L’op´eration effectu´ee est : ope´rande1←ope´rande1 OU ope´rande2.
Application : mise `a 1 d’un ou plusieurs bits dans un mot.
Exemple : dans le mot 10110001B on veut mettre a` 1 les bits 1 et 3 sans modifier les
autres bits.

masque
Les instructions correspondantes peuvent
s’´ecrire : mov ah,10110001B or
ah,00001010B

Compl´ement `a 1 : NOT ope´rande


L’op´eration effectu´ee est : ope´rande .
Exemple :
mov al,10010001B
AL = 10010001B = 01101110B
not al →

Compl´ement `a 2 : NEG ope´rande

L’op´eration effectu´ee est : ope´rande←ope´rande + 1.


Exemple :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


45
mov al,25 mov
bl,12
AL = 25 + ( 12) = 13
neg bl → −
add al,bl

OU exclusif : XOR ope´rande1,op´erande2


L’op´eration effectu´ee est : ope´rande1←ope´rande1⊕ope´rande2.
Exemple : mise `a z´ero d’un registre :
mov al,25
AL = 0
xor al,al →

Instructions de d´ecalages et de rotations : ces instructions d´eplacent d’un certain


nombre de positions les bits d’un mot vers la gauche ou vers la droite.
Dans les d´ecalages, les bits qui sont d´eplac´es sont remplac´es par des z´eros. Il y a les d
´ecalages logiques (op´erations non sign´ees) et les d´ecalages arithm´etiques (op
´erations sign´ees).
Dans les rotations, les bits d´eplac´es dans un sens sont r´einject´es de l’autre coˆt´e du
mot.
D´ecalage logique vers la droite (Shift Right) : SHR ope´rande,n Cette
instruction d´ecale l’op´erande de n positions vers la droite.
Exemple :
mov al,11001011B shr
al,1
avant
1 1 0 0 1 0 1 1
après CF
0 1 1 0 0 1 0 1 1

→ entr´ee d’un 0 a` la place du bit de poids fort; le bit sortant passe `a travers l’indicateur
de retenue CF.
Remarque : si le nombre de bits `a d´ecaler est sup´erieur a` 1, ce nombre doit ˆetre plac
´e dans le registre CL ou CX.
Exemple : d´ecalage de AL de trois positions vers la droite :
mov cl,3 shr
al,cl
D´ecalage logique vers la gauche (Shift Left) : SHL ope´rande,n Cette
instruction d´ecale l’op´erande de n positions vers la droite.
Exemple :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


46 Chapitre 5 - La programmation en assembleur du microprocesseur 8086
mov al,11001011B shl
al,1
avant
1 1 0 0 1 0 1 1
CF après
1 1 0 0 1 0 1 1 0

→ entr´ee d’un 0 a` la place du bit de poids faible; le bit sortant passe `a travers
l’indicateur de retenue CF.
Mˆeme remarque que pr´ec´edemment si le nombre de positions a` d´ecaler est sup
´erieur a` 1.
D´ecalage arithm´etique vers la droite : SAR ope´rande,n Ce d
´ecalage conserve le bit de signe bien que celui-ci soit d´ecal´e.
Exemple :
mov al,11001011B sar
al,1
avant
1 1 0 0 1 0 1 1
après CF
1 1 1 0 0 1 0 1 1

→ le bit de signe est r´einject´e.


5.4 - Les instructions logiques

D´ecalage arithm´etique vers la gauche : SAR ope´rande,n Identique


au d´ecalage logique vers la gauche.
Applications des instructions de d´ecalage :

• cadrage a` droite d’un groupe de bits.

Exemple : on veut avoir la valeur du quartet de poids fort du registre AL :


mov al,11001011B
mov cl,4 → AL = 00001100B shr al,cl • test de l’´etat
d’un bit dans un mot.
Exemple : on veut d´eterminer l’´etat du bit 5 de AL :
mov cl,6 mov cl,3
ou
shr al,cl shl al,cl

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


47
→ avec un d´ecalage de 6 positions vers la droite ou 4 positions vers la gauche, le
bit 5 de AL est transf´er´e dans l’indicateur de retenue CF. Il suffit donc de tester
cet indicateur.

• multiplication ou division par une puissance de 2 : un d´ecalage a` droite revient `a


faire une division par 2 et un d´ecalage a` gauche, une multiplication par 2.
Exemple :
mov al,48
mov cl,3 → AL = 48/23 = 6 shr al,cl

Rotation `a droite (Rotate Right) : ROR ope´rande,n


Cette instruction d´ecale l’op´erande de n positions vers la droite et r´einjecte par la
gauche les bits sortant.
Exemple :
mov al,11001011B ror
al,1
avant
1 1 0 0 1 0 1 1
après CF
1 1 1 0 0 1 0 1 1

→ r´einjection du bit sortant qui est copi´e dans l’indicateur de retenue CF.

Rotation `a gauche (Rotate Left) : ROL ope´rande,n


Cette instruction d´ecale l’op´erande de n positions vers la gauche et r´einjecte par la
droite les bits sortant.
Exemple :
mov al,11001011B rol
al,1
avant
1 1 0 0 1 0 1 1
CF après
1 1 0 0 1 0 1 11

→ r´einjection du bit sortant qui est copi´e dans l’indicateur de retenue CF.

Rotation `a droite avec passage par l’indicateur de retenue (Rotate Right through
Carry) : RCR ope´rande,n
Cette instruction d´ecale l’op´erande de n positions vers la droite en passant par
l’indicateur de retenue CF.
Exemple :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


48 Chapitre 5 - La programmation en assembleur du microprocesseur 8086
mov al,11001011B rcr
al,1
avant
valeur 1 1 0 0 1 0 1 1
précédente après de CF CF
x 1 1 0 0 1 0 1 1

→ le bit sortant par la droite est copi´e dans l’indicateur de retenue CF et la valeur pr´ec
´edente de CF est r´einject´ee par la gauche.
Rotation `a gauche avec passage par l’indicateur de retenue (Rotate Left through
Carry) : RCL ope´rande,n
Cette instruction d´ecale l’op´erande de n positions vers la gauche en passant par
l’indicateur de retenue CF.
Exemple :
mov al,11001011B rcl
al,1
avant
valeur 1 1 0 0 1 0 1 1
précédente
CF après
1 1 0 0 1 0 1 1 x

de CF

→ le bit sortant par la gauche est copi´e dans l’indicateur de retenue CF et la valeur pr´ec
´edente de CF est r´einject´ee par la droite.

5.5 Les instructions de branchement


Les instructions de branchement (ou saut) permettent de modifier l’ordre d’ex´ecution
des instructions du programme en fonction de certaines conditions. Il existe 3 types de
saut :
• saut inconditionnel;

• sauts conditionnels;

• appel de sous-programmes.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


5.5 - Les instructions de branchement 49

Instruction de saut inconditionnel : JMP label


Cette instruction effectue un saut (jump) vers le label sp´ecifi´e. Un label (ou ´etiquette)
est une repr´esentation symbolique d’une instruction en m´emoire :
.
instructions pr´ec
´edant le saut
jmp suite
.
instructions
suivant le saut (jamais ex´ecut´ees)
suite : ... ← instruction ex´ecut´ee apr`es le saut

Exemple :
boucle : inc ax
dec bx → boucle infinie jmp boucle

Remarque : l’instruction JMP ajoute au registre IP (pointeur d’instruction) le nombre


d’octets (distance) qui s´epare l’instruction de saut de sa destination. Pour un saut en
arri`ere, la distance est n´egative (cod´ee en compl´ement `a 2).
Instructions de sauts conditionnels : Jcondition label
Un saut conditionnel n’est ex´ecut´e que si une certaine condition est satisfaite, sinon l’ex
´ecution se poursuit s´equentiellement `a l’instruction suivante.
La condition du saut porte sur l’´etat de l’un (ou plusieurs) des indicateurs d’´etat (flags)
du microprocesseur :
instruction nom condition
JZ label Jump if Zero saut si ZF = 1
JNZ label Jump if Not Zero saut si ZF = 0
JE label Jump if Equal saut si ZF = 1
JNE label Jump if Not Equal saut si ZF = 0
JC label Jump if Carry saut si CF = 1
JNC label Jump if Not Carry saut si CF = 0
JS label Jump if Sign saut si SF = 1
JNS label Jump if Not Sign saut si SF = 0
JO label Jump if Overflow saut si OF = 1
JNO label Jump if Not Overflow saut si OF = 0
JP label Jump if Parity saut si PF = 1
JNP label Jump if Not Parity saut si PF = 0
Remarque : les indicateurs sont positionn´es en fonction du r´esultat de la derni`ere op
´eration.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


50 Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Exemple :
. instructions pr´ec
´edant le
saut conditionnel
jnz suite
.
instructions ex´ecut´ees si la
condition ZF = 0 est v´erifi´ee
suite : ... ← instruction ex´ecut´ee `a la suite du saut
Remarque : il existe un autre type de saut conditionnel, les sauts arithm´etiques. Ils
suivent en g´en´eral l’instruction de comparaison : CMP ope´rande1,op´erande2
condition nombres sign nombres non sign´es
´es

= JEQ label JEQ label


Exemple :
> JG label JA label
< JL label JB label
= JNE label JNE label
cmp ax,bx jg
superieur jl
inferieur
superieur : ...
...
inferieur : ...
Exemple d’application des instructions de sauts conditionnels : on veut additionner deux
nombres sign´es N1 et N2 se trouvant respectivement aux offsets 1100H et 1101H. Le r
´esultat est rang´e `a l’offset 1102H s’il est positif, a` l’offset 1103H s’il est n´egatif et a`
l’offset 1104H s’il est nul :
Organigramme : Programme :

début

N1 + N2 mov al,[1100H] add al,


[1101H] js negatif jz nul
résultat oui mov
>0 [1102H],al jmp fin
non negatif : mov [1103H],al
jmp fin
résultat oui ranger le résultat
=0 à l'offset 1103H
ranger le résultat
non à l'offset 1104H
ISET Rad`es cours de microprocesseur HAGGEGE, 2003`
ranger le résultat
à l'offset 1102H

fin
5.5 - Les instructions de branchement 51

nul : mov [1104H],al fin :hlt

Appel de sous-programmes : pour ´eviter la r´ep´etition d’une mˆeme s´equence


d’instructions plusieurs fois dans un programme, on r´edige la s´equence une seule fois
en lui attribuant un nom (au choix) et on l’appelle lorsqu’on en a besoin. Le programme
appelant est le programme principal. La s´equence appel´ee est un sous-programme
ou proc´edure.
Ecriture d’un sous-programme :
nom sp PROC
.
instructions du sous-
programme
ret ← instruction de retour au programme principal

nom sp ENDP
Remarque : une proc´edure peut ˆetre de type NEAR si elle se trouve dans le mˆeme
segment ou de type FAR si elle se trouve dans un autre segment.
Exemple : ss prog1 PROC NEAR
ss prog2 PROC FAR
Appel d’un sous-programme par le programme principal : CALL proce´dure
.
← instructions pr´ec´edant l’appel au sous-programme

call nom sp ← appel au sous-programme

. ← instructions ex´ecut´ees apr`es le retour au programme principal

Lors de l’ex´ecution de l’instruction CALL, le pointeur d’instruction IP est charg´e avec


l’adresse de la premi`ere instruction du sous-programme. Lors du retour au programme
appelant, l’instruction suivant le CALL doit ˆetre ex´ecut´ee, c’est-`a-dire que IP doit ˆetre
recharg´e avec l’adresse de cette instruction.
programme
valeur de IP
principal
après l'appel

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


52 Chapitre 5 - La programmation en assembleur du microprocesseur 8086

sous- au sous-programme
valeur de IP programme
avant l'appel CALL 2000H
au sous-programme
valeur de IP 1000H
au retour du 1002H
sous-programme RET

2100H valeur de IP
à la fin du
sous-programme

Avant de charger IP avec l’adresse du sous-programme, l’adresse de retour au


programme principal, c’est-`a-dire le contenu de IP, est sauvegard´ee dans une zone m
´emoire particuli`ere appel´ee pile. Lors de l’ex´ecution de l’instruction RET, cette
adresse est r´ecup´er´ee `a partir de la pile et recharg´ee dans IP, ainsi le programme
appelant peut se poursuivre. Fonctionnement de la pile : la pile est une zone m´emoire
fonctionnant en mode LIFO (Last In First Out : dernier entr´e, premier sorti). Deux op
´erations sont possibles sur la pile :
• empiler une donn´ee : placer la donn´ee au sommet de la pile;

• d´epiler une donn´ee : lire la donn´ee se trouvant au sommet de la pile.


Le sommet de la pile est rep´er´e par un registre appel´e pointeur de pile (SP : Stack
Pointer) qui contient l’adresse de la derni`ere donn´ee empil´ee.
La pile est d´efinie dans le segment de pile dont l’adresse de d´epart est contenue dans
le registre SS.
1 Mo FFFFFH
sommet
sens de de la pile
segment de pile
croissance SS : SP
de la pile
SS : 0000H

sens de
croissance segment de code
du programme CS : 0000H

0 00000H

Remarque : la pile et le programme croissent en sens inverse pour diminuer le risque


de collision entre le code et la pile dans le cas ou` celle-ci est plac´ee dans le mˆeme
segment que le code (SS = CS).
Lors de l’appel a` un sous-programme, l’adresse de retour au programme appelant
(contenu de IP) est empil´ee et le pointeur de pile SP est automatiquement d´ecr´ement
´e. Au retour du sous-programme, le pointeur d’instruction IP est recharg´e avec la
valeur contenue sommet de la pile et SP est incr´ement´e.

1 Mo FFFFFH
ISET Rad`es cours de microprocesseur HAGGEGE, 2003`

adresse de SS : FFFFH
retour au segment de pile
sous-programme
SS : SP décrémentation
(2 octets) SS : SP de SP de 2 unités
5.5 - Les instructions de branchement 53

La pile peut ´egalement ´egalement servir a` sauvegarder le contenu de registres qui ne


sont pas automatiquement sauvegard´es lors de l’appel a` un sous programme :

• instruction d’empilage : PUSH ope´rande

• instruction de d´epilage : POP ope´rande

ou` ope´rande est un registre ou une donn´ee sur 2 octets (on ne peut empiler que des
mots de 16 bits).
Exemple :
pushax ; empilage du registre AX ... pushbx ; ... du registre
BX ...
push[1100H] ; ... et de la case me´moire 1100H-1101H
...
pop [1100H] ; de´pilage dans l’ordre inverse de l’empilage pop bx pop ax

Remarque : la valeur de SP doit ˆetre initialis´ee par le programme principal avant de


pouvoir utiliser la pile.
Utilisation de la pile pour le passage de param`etres : pour transmettre des
param`etres `a une proc´edure, on peut les placer sur la pile avant l’appel de la proc
´edure, puis celle-ci les r´ecup`ere en effectuant un adressage bas´e de la pile en utilisant
le registre BP.
Exemple : soit une proc´edure effectuant la somme de deux nombres et retournant le r
´esultat dans le registre AX :

• programme principal :
mov ax,200
pushax mov ; empilage du premier parame`tre
ax,300
pushax ; empilage du deuxie`me param`etre
callsomme ; appel de la proce´dure somme

• proc´edure somme :
somme proc
pushbp ; sauvegarde de BP
mov bp,sp ; faire pointer BP sur le sommet de la pile
mov ax,[bp+4]; re´cup´eration du deuxie`me param`etre add ax,[bp+6]; addition au
premier parame`tre pop bp ; restauration de l’ancienne valeur de BP ret 4 ;
retour et de´pilage des param`etres
somme endp

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


54 Chapitre 5 - La programmation en assembleur du microprocesseur 8086

L’instruction ret 4 permet de retourner au programme principal et d’incr´ementer le


pointeur de pile de 4 unit´es pour d´epiler les param`etres afin de remettre la pile dans
son
´etat initial.
Etat de la pile :
avant CALL
SS : FFFFH SS : FFFFH SS : FFFFH
segment de pile segment de pile segment de pile

2 octets SS : SP SS : SP
(sommet 2 octets paramètre 1 (200) SS : BP+6
de la pile) 2 octets paramètre 2 (300) SS : BP+4
2 octets adresse de retour retour de la pile
2 octets ancienne valeur de BP SS : SP à son état initial
= SS : BP

SS : 0000H SS : 0000H SS : 0000H


après CALL après POP BP et RET 4

5.6 M´ethodes de programmation


Etapes de la r´ealisation d’un programme :
• D´efinir le probl`eme `a r´esoudre : que faut-il faire exactement? • D´eterminer des

algorithmes, des organigrammes : comment faire? Par quoi commencer, puis

poursuivre?

• R´ediger le programme (code source) :

– utilisation du jeu d’instructions (mn´emoniques);


– cr´eation de documents explicatifs (documentation).
• Tester le programme en r´eel;

• Corriger les erreurs (bugs) ´eventuelles : d´eboguer le programme puis refaire


des tests jusqu’`a obtention d’un programme fonctionnant de mani`ere
satisfaisante.
Langage machine et assembleur :
• Langage machine : codes binaires correspondant aux instructions;

• Assembleur : logiciel de traduction du code source ´ecrit en langage assembleur


(mn´emoniques).
R´ealisation pratique d’un programme :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


5.5 - Les instructions de branchement 55

• R´edaction du code source en assembleur a` l’aide d’un ´editeur (logiciel de


traitement de texte ASCII) :
– edit sous MS-DOS,
– notepad (bloc-note) sous Windows,
• Assemblage du code source (traduction des instructions en codes binaires) avec
un assembleur :
– MASM de Microsoft,
– TASM de Borland,
– A86 disponible en shareware sur Internet, ...
pour obtenir le code objet : code machine ex´ecutable par le microprocesseur;
• Chargement en m´emoire centrale et ex´ecution : roˆle du syst`eme d’exploitation
(ordinateur) ou d’un moniteur (carte de d´eveloppement `a base de
microprocesseur).
Pour la mise au point (d´ebogage) du programme, on peut utiliser un programme d’aide
`a la mise au point (comme DEBUG sous MS-DOS) permettant :
• l’ex´ecution pas `a pas;

• la visualisation du contenu des registres et de la m´emoire;

• la pose de points d’arrˆet ...

Structure d’un fichier source en assembleur : pour faciliter la lisibilit´e du code


source en assembleur, on le r´edige sous la forme suivante :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


56

5.6 - M´ethodes de programmation


labels instructions commentaires
label1 : mov ax,60H ; ceci est un commentaire ...
... ... ...
sous prog1 proc near ; sous-programme
... ... ...
sous prog1 endp
... ... ...
Directives pour l’assembleur :
• Origine du programme en m´emoire : ORG offset Exemple : org 1000H

• D´efinitions de constantes : nom constante EQU valeur Exemple : escape equ 1BH

• R´eservation de cases m´emoires : nom variable DB valeur initiale nom variable DW

valeur initiale

DB : Define Byte, r´eservation d’un octet; DW :


Define Word, r´eservation d’un mot (2 octets).
Exemples :
nombre1 db 25 nombre2 dw ? ; pas de valeur initiale
buffer db 100 dup (?) ; re´servation d’une zone m´emoire
; de 100 octets

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


Chapitre 6

Les interfaces d’entr´ees/sorties

6.1 D´efinitions
Une interface d’entr´ees/sorties est un circuit int´egr´e permettant au
microprocesseur de communiquer avec l’environnement ext´erieur (p´eriph´eriques) :
clavier, ´ecran, imprimante, modem, disques, processus industriel, ...
interface port exemple de p´eriph
´erique
interface port imprimante
parall`ele parall`ele
interface s´erie port s´erie modem
Les interfaces d’E/S sont connect´ees au microprocesseur a` travers les bus d’adresses,
de donn´ees et de commandes.

environnement périphérique 1 périphérique 2


extérieur
calculateur port 1 port 2

microprocesseur interface 1 interface 2

données

adresses

commandes

Les points d’acc`es aux interfaces sont appel´es ports.


Exemples :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


58 Chapitre 6 - Les interfaces d’entr´ees/sorties
Sch´ema synoptique d’un circuit d’E/S :
D0 - Dn
lignes de
données
microprocesseur
A0 - Ap circuit périphériques
lignes d'E/S
d'adresses
(p = 1 ou 2, lignes
en général) d'E/S
commandes RD
de lecture/
écriture WR

signal de
selection CS
de boîtier

6.2 Adressage des ports d’E/S


Un circuit d’E/S poss`ede des registres pour g´erer les ´echanges avec les p´eriph

´eriques : • registres de configuration; • registres de donn´ees.

A chaque registre est assign´e une adresse : le microprocesseur acc`ede `a un port d’E/S
en sp´ecifiant l’adresse de l’un de ses registres.
Le microprocesseur peut voir les adresses des ports d’E/S de deux mani`eres :
• adressage cartographique : les adresses des ports d’E/S appartiennent au mˆeme
espace m´emoire que les circuits m´emoire (on dit que les E/S sont mapp´ees en
m´emoire) :
FFFFFH

circuits
espace d'E/S
mémoire circuits
total
mémoire

adressable

00000H Cons´equences :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


59
– l’espace d’adressage des m´emoires diminue;
– l’adressage des ports d’E/S se fait avec une adresse de mˆeme longueur
(mˆemenombre de bits) que pour les cases m´emoires;
6.3 - Gestion des ports d’E/S par le 8086

– toutes les instructions employ´ees avec des cases m´emoires peuvent ˆetre
appliqu´ees aux ports d’E/S : les mˆemes instructions permettent de lire et
´ecrire dans la m´emoire et les ports d’E/S, tous les modes d’adressage ´etant
valables pour les E/S.
• adressage ind ´ependant : le microprocesseur consid`ere
deux espaces distincts :
circuits
– l’espace mémoire d’adressage des m´emoires;
– l’espace d’adressage des ports d’E/S.
C’est le cas du microprocesseur 8086 :
FFFFFH

1 Mo

FFFFH
circuits 64 Ko
d'E/S
00000H0000H espace mémoire espace E/S

Cons´equences :
– contrairement a` l’adressage cartographique, l’espace m´emoire total
adressable n’est pas diminu´e;
– l’adressage des port d’E/S peut se faire avec une adresse plus courte
(nombrede bits inf´erieur) que pour les circuits m´emoires;
– les instructions utilis´ees pour l’acc`es `a la m´emoire ne sont plus utilisables
pourl’acc`es aux ports d’E/S : ceux-ci disposent d’instructions sp´ecifiques;
– une mˆeme adresse peut d´esigner soit une case m´emoire, soit un port d’E/S :
lemicroprocesseur doit donc fournir un signal permettant de diff´erencier
l’adressage de la m´emoire de l’adressage des ports d’E/S.
Remarque : l’adressage ind´ependant des ports d’E/S n’est possible que pour les
microprocesseurs poss´edant un signal permettant de diff´erencier l’adressage de la m
´emoire de l’adressage des ports d’E/S ainsi que les instructions sp´ecifiques pour
l’acc`es aux ports d’E/S. Par contre, l’adressage cartographique est possible pour tous les
microprocesseurs.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


60 Chapitre 6 - Les interfaces d’entr´ees/sorties
6.3 Gestion des ports d’E/S par le 8086
Le 8086 dispose d’un espace m´emoire de 1 Mo (adresse d’une case m´emoire sur 20
bits) et d’un espace d’E/S de 64 Ko (adresse d’un port d’E/S sur 16 bits).
Le signal permettant de diff´erencier l’adressage de la m´emoire de l’adressage des ports
d’E/S est la ligne M :
• pour un acc`es `a la m´emoire, M/IO = 1;

• pour un acc`es aux ports d’E/S, M/IO = 0.


Ce signal est utilis´e pour valider le d´ecodage d’adresse dans les deux espaces :

Les instructions de lecture et d’´ecriture d’un port d’E/S sont respectivement les instruc-

tions IN et OUT. Elles placent la ligne M/IO `a 0 alors que l’instruction MOV place celle-ci
`a 1.
Lecture d’un port d’E/S :
• si l’adresse du port d’E/S est sur un octet :

IN AL,adresse : lecture d’un port sur 8 bits; IN


AX,adresse : lecture d’un port sur 16 bits.
• si l’adresse du port d’E/S est sur deux octets :

IN AL,DX : lecture d’un port sur 8 bits;


IN AX,DX : lecture d’un port sur 16 bits.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


61
ou` le registre DX contient l’adresse du port d’E/S `a lire.
Ecriture d’un port d’E/S :
• si l’adresse du port d’E/S est sur un octet :

OUT adresse,AL : ´ecriture d’un port sur 8 bits; OUT


adresse,AX : ´ecriture d’un port sur 16 bits.
• si l’adresse du port d’E/S est sur deux octets :

OUT DX,AL : ´ecriture d’un port sur 8 bits;


OUT DX,AX : ´ecriture d’un port sur 16 bits.
ou` le registre DX contient l’adresse du port d’E/S `a ´ecrire.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


62 Chapitre 6 - Les interfaces d’entr´ees/sorties

Exemples : • lecture d’un port d’E/S sur 8 bits a` l’adresse 300H : mov dx,300H in
al,dx • ´ecriture de la valeur 1234H dans le port d’E/S sur 16 bits a` l’adresse
49H : mov ax,1234H out 49H,ax

6.4 L’interface parall`ele 8255


Le roˆle d’une interface parall`ele est de transf´erer des donn´ees du microprocesseur
vers des p´eriph´eriques et inversement, tous les bits de donn´ees ´etant envoy´es ou
re¸cus simultan´ement.
sortie de
données
interface en parallèle
microprocesseur parallèle
entrée de
données
en parallèle
données

adresses

commandes

Le 8255 est une interface parall`ele programmable : elle peut ˆetre configur´ee en entr´ee
et/ou en sortie par programme. Brochage du 8255 :
PA3 1 40 PA4
PA2 2 39 PA5
PA1 3 38 PA6
PA0 4 37 PA7
RD 5 36 WR
CS 6 8255 35 RESET
GND 7 34 D0
A1 8 33 D1
A0 9 32 D2
PC7 10 31 D3
PC6 11 30 D4
PC5 12 29 D5
PC4 13 28 D6
PC0 14 27 D7
PC1 15 26 VCC
PC2 16 25 PB7
PC3 17 24 PB6
PB0 18 23 PB5
PB1 19 22 PB4
PB2 20 21 PB3
Sch´ema fonctionnel :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.4 - L’interface parall`ele 8255 63

alimentation
VCC GND

RD 8
port A groupe A
WR (PA0 - PA7)
lignes de A0
contrôle A1 8255 4 port C
haut
RESET (PC4 - PC7)
CS
4 port C
groupe B
bas
D0 - D7 (PC0 - PC3)
bus de
données 8 port B
(PB0 - PB7)

Le 8255 contient 4 registres :


• trois registres contenant les donn´ees pr´esentes sur les ports A, B et C;

• un registre de commande pour la configuration des port A, B et C en entr´ees et/ou en


sorties.
Acc`es aux registres du 8255 : les lignes d’adresses A0 et A1 d´efinissent les adresses des
registres du 8255 :
A1 A0 RD WR CS op´eration
0 0 0 1 0 lecture du port A
0 1 0 1 0 lecture du port B
1 0 0 1 0 lecture du port C
0 0 1 0 0 ´ecriture du port A
0 1 1 0 0 ´ecriture du port B
1 0 1 0 0 ´ecriture du port C
1 1 1 0 0 ´ecriture du registre de
commande
X X X X 1 pas de transaction
1 1 0 1 0 ill´egal
X X 1 1 0 pas de transaction
Remarque : le registre de commande est accessible uniquement en ´ecriture, la lecture de
ce registre n’est pas autoris´ee.
Configuration du 8255 : les ports peuvent ˆetre configur´es en entr´ees ou en sorties
selon le contenu du registre de commande. De plus le 8255 peut fonctionner selon 3
modes : mode 0, mode 1 ou mode 2.
Le mode 0 est le plus simple : les ports sont configur´es en entr´ees/sorties de base. Les
donn´ees ´ecrites dans les registres correspondants sont m´emoris´ees sur les lignes de

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


64 Chapitre 6 - Les interfaces d’entr´ees/sorties

sorties; l’´etat des lignes d’entr´ees est recopi´e dans les registres correspondants et n’est
pas m´emoris´e.
Les modes 1 et 2 sont plus complexes. Ils sont utilis´es pour le dialogue avec des p´eriph
´eriques n´ecessitant un asservissement.
Structure du registre de commande :
D7 D6 D5 D4 D3 D2 D1 D0
drapeau
1 = actif

Groupe A Groupe B
sélection de port C bas
mode : 1 = entrée
00 = mode 0 0 = sortie
01 = mode 1 port B
1x = mode2 1 = entrée
port A 0 = sortie
1 = entrée
0 = sortie sélection de
mode :
port C haut 0 = mode 0
1 = entrée 1 = mode 1
0 = sortie

Connexion du 8255 sur les bus du 8086 : le bus de donn´ees du 8255 est sur 8 bits
alors que celui du microprocesseur 8086 est sur 16 bits. On peut donc connecter le bus
de donn´ees du 8255 sur les lignes de donn´ees de poids faible du 8086 (D0 - D7) ou sur
celles de poids fort (D8 - D15).
Une donn´ee est envoy´ee (ou rec¸ue) par le microprocesseur 8086 : • sur la partie faible
du bus de donn´ees lorsque l’adresse `a ´ecrire (ou `a lire) est paire :
validation par A0;

• sur la partie haute lorsque l’adresse est impaire : validation par BHE.

Ainsi l’un de ces deux signaux A0 ou BHE doit ˆetre utilis´e pour s´electionner le 8255 :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.4 - L’interface parall`ele 8255 65

D0 - D7 D0
.
ou . 8255
D8 - D15 .
D7
M/IO
validation RD RD
décodeur WR WR
A3 - A15 d'adresses
CS
A0 ou BHE
A1 A0
A2 A1
Cons´equence : les adresses des registres du 8255 se trouvent a` des adresses paires
(valida-

tion par A0) ou impaires (validation par BHE).


Le d´ecodeur d’adresses d´etermine l’adresse de base du 8255; les lignes A1 et A2 d
´eterminent les adresses des registres du 8255.
Exemple : connexion du 8255 sur la partie faible du bus de donn´ees du 8086, avec d
´ecodage d’adresses incomplet (les lignes d’adresses A3 - A15 ne sont pas toutes utilis
´ees) :

D0
.
D0 - D7 . 8255
.
D7
A8 A Y0
RD RD
A9 B Y1
WR WR
A10 C Y2
74138 Y3 CS
validation
Y4 A0
G2B Y5 A1 A0
M/IO G2A Y6 A2 A1
+5 V G1 Y7

D´etermination de l’adresse du 8255 :

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0


X X X X X 0 1 1 X X X X X A1 A0 0

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


66 Chapitre 6 - Les interfaces d’entr´ees/sorties

adresse de base s´election CS

= 300H de registre =0

• A2 = 0 et A1 = 0 : adresse du port A = adresse de base + 0 = 300H;

• A2 = 0 et A1 = 1 : adresse du port B = adresse de base + 2 = 302H; • A2 = 1 et A1 =

0 : adresse du port C = adresse de base + 4 = 304H;

• A2 = 1 et A1 = 1 : adresse du registre de commande = adresse de base + 6 = 306H.

Remarque : le d´ecodage d’adresses ´etant incomplet, le 8255 apparaˆıt dans plusieurs


plages d’adresses selon les valeurs des bits d’adresses non d´ecod´es (A7 - A13 et A12
A15). Dans cet exemple, l’adresse de base 300H correspond a` la premi`ere adresse
possible (bits d’adresses non d´ecod´es tous ´egaux a` 0).
Remarque : si on veut que le 8255 poss`ede des adresses cons´ecutives (par exemple
300H, 301H, 302H et 303H), on peut utiliser le sch´ema suivant qui exploite tout le bus
de donn´ees (D0 - D15) du 8086 :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.4 - L’interface parall`ele 8255 67

transmetteur
8 bidirectionnel
D0 - D7 A B
8286
8 D0
DT/R DIR .
.
EN . PA
D7
8
D8 - D15 A B 8255
8286
DIR
BHE
EN
PB

M/IO
validation
décodeur
A2- A15 d'adresses
CS

A1 A1 PC
A0 A0
RD RD
WR WR

Exemple de programmation : soit le montage suivant :

K0 0
PA0
1
D0
. K1 0
PA1
8086 D0 - D7 .. 8255 1
D7 K2 0
PA2
1
adresse
de base PB0
= 300H
LED

On veut que la led s’allume lorsqu’on a la combinaison : K0 = 1 et K1 = 0 et K2 = 1.


Programme :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


68 Chapitre 6 - Les interfaces d’entr´ees/sorties

portA equ 300H ; adresses des registres du 8255


portB equ 302H
portC equ 304H
controle equ 306H

mov dx,controle ; initialisation du port A en entre´e mov al,90H


; et du port B en sortie (mode 0) :
out dx,al ; controle = 10010000B = 90H
boucle :

mov dx,portA ; lecture du port A in al,dx and al,00000111B ;


masquage PA0, PA1 et PA2 cmp al,00000101B ; test PA0 = 1, PA1 = 0
et PA2 = 1 jne faux ; non -> aller au label ‘‘faux’’ ... mov al,00000001B ;
oui -> mettre PB0 a` 1 jmp suite ; et continuer au label ‘‘suite’’
faux : mov al,00000000B ; ... mettre PB0 a` 0
suite : mov dx,portB ; e´criture du port B out dx,al jmp boucle
; retourner lire le port A

6.5 L’interface s´erie 8250


Une interface s´erie permet d’´echanger des donn´ees entre le microprocesseur et un p
´eriph´erique bit par bit.
TxD : émission
interface
microprocesseur série RxD : réception

données

adresses

commandes

Avantage : diminution du nombre de connexions (1 fil pour l’´emission, 1 fil pour la r


´eception).
Inconv´enient : vitesse de transmission plus faible que pour une interface
parall`ele. Il existe deux types de transmissions s´eries :
• asynchrone : chaque octet peut ˆetre ´emis ou re¸cu sans dur´ee d´etermin´ee entre
un octet et le suivant;
• synchrone : les octets successifs sont transmis par blocs s´epar´es par des octets de
synchronisation.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.4 - L’interface parall`ele 8255 69

La transmission asynchrone la plus utilis´ee est celle qui est d´efinie par la norme RS232.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


70 Chapitre 6 - Les interfaces d’entr´ees/sorties

Exemple : transmission du caract`ere ’E’ (code ASCII 45H = 01000101B) sous forme s
´erie selon la norme RS232 :
bit de bit de bits de
start parité stop
bits de données

+9 à +15 V
LSB MSB
-9 à -15 V
1 0 1 0 0 0 1 0

durée d'un bit = T

• l’´etat 1 correspond a` une tension n´egative comprise entre −9 et −15 V, l’´etat 0


a` une tension positive comprise entre +9 et +15 V. Au repos, la ligne est a` l’´etat 1
(tension n´egative);
• le bit de start marque le d´ebut de la transmission du caract`ere;

• les bits de donn´ees sont transmis l’un apr`es l’autre en commenc¸ant par le bit de
poids faible. Ils peuvent ˆetre au nombre de 5, 6, 7 ou 8. Chaque bit est maintenu
sur la ligne pendant une dur´ee d´etermin´ee T. L’inverse de cette dur´ee d´efinit la
fr´equence de bit = nombre de bits par secondes = vitesse de transmission. Les
vitesses normalis´ees sont : 50, 75, 110, 134.5, 150, 300, 600, 1200, 2400, 4800,
9600 bits/s;
• le bit de parit´e (facultatif) est un bit suppl´ementaire dont la valeur d´epend du
nombre de bits de donn´ees ´egaux a` 1. Il est utilis´e pour la d´etection d’erreurs
de transmission;
• les bits de stop (1, 1.5 ou 2) marquent la fin de la transmission du caract`ere.

Principe d’une interface s´erie :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.5 - L’interface s´erie 8250 71

registre de données registre à décalage


TxD
émission émission
8
D0 - D7

registre de données registre à décalage


RxD
réception réception

bus de registres de signaux


logique de synchronisation
données configuration .. de
+ contrôle de parité .
interne et d'état controle

horloge
Un circuit int´egr´e d’interface s´erie asynchrone s’appelle un UART : Universal
Asynchronous Receiver Transmitter); une interface s´erie synchrone/asynchrone est un
USART.
Exemples d’interfaces s´eries :

• 8251 (Intel);

• 8250 (National Semiconductor);

• 6850 (Motorola).

Connexion de deux ´equipements par une liaison s´erie RS232 : les ´equipements
qui peuvent ˆetre connect´es `a travers une liaison s´erie RS232 sont de deux types :

• les ´equipements terminaux de donn´ees (DTE : Data Terminal Equipment) qui


g´en`erent les donn´ees `a transmettre, exemple : un ordinateur;

• les ´equipements de communication de donn´ees (DCE : Data Communication


Equipment) qui transmettent les donn´ees sur les lignes de communication,
exemple : un modem.

Pour connecter ces ´equipements, on utilise des connecteurs normalis´es DB9 ou DB25 :
1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 11 12 13

6 7 8 9 14 15 16 17 18 19 20 21 22 23 24 25

DB9 mâle DB25 mâle

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


72 Chapitre 6 - Les interfaces d’entr´ees/sorties

Diff´erents signaux sont transport´es par ces connecteurs :

signal no broche no broche description sens


DB9 DB25 DTE DCE
TxD 3 2 Transmit Data sortie entr´ee
RxD 2 3 Receive Data entr sortie
´ee
RTS 7 4 Request To Send sortie entr´ee
CTS 8 5 Clear To Send entr sortie
´ee
DTR 4 20 Data Terminal sortie entr´ee
Ready
DSR 6 6 Data Set Ready entr sortie
´ee
DCD 1 8 Data Carrier Detect entr sortie
´ee
RI 9 22 Ring Indicator entr sortie
´ee
GND 5 7 Ground — —
Seuls les 2 signaux TxD et RxD servent a` transmettre les donn´ees. Les autres signaux
sont des signaux de controˆle de l’´echange de donn´ees.
Connexion entre DTE et DCE :
TxD TxD
RxD RxD
RTS RTS
DTE CTS CTS DCE
(ordinateur) DTR DTR (modem)
DSR DSR
DCD DCD
RI RI
GND GND

Dialogue entre DTE et DCE :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.5 - L’interface s´erie 8250 73

DTR

RTS DTE

TxD donnée

DSR

DCD DCE

CTS

(les signaux de controˆle sont actifs `a l’´etat bas = tension positive)


• quand le DTE veut transmettre des donn´ees, il active le signal DTR. Si le DCE est
prˆet `a recevoir les donn´ees, il active le signal DSR puis le signal DCD : la
communication peut d´ebuter;
• lorsque le DTE a une donn´ee `a ´emettre, il active le signal RTS. Si le DCE peut
recevoir la donn´ee, il active CTS : le DTE envoie la donn´ee sur la ligne TxD; • si le
DCE veut demander une pause dans la transmission, il d´esactive CTS : le DTE
arrˆete la transmission jusqu’`a ce que CTS soit r´eactiv´e. C’est un controˆle mat
´eriel du flux de donn´ees;
• Lorsque la transmission est termin´ee, les signaux RTS, CTS, DTR, DCD et DSR sont
successivement d´esactiv´es.
Applications des liaisons s´eries :
• transmission de donn´ees `a travers une ligne t´el´ephonique :
DTE microprocesseur microprocesseur
DTE
interface série interface série

DCE ligne téléphonique DCE


modem modem

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


74 Chapitre 6 - Les interfaces d’entr´ees/sorties

Le modem transforme les signaux num´eriques produits par l’interface s´erie en


signaux analogiques accept´es par la ligne t´el´ephonique et inversement
(modulations num´eriques FSK, PSK, ...)
• liaison s´erie directe entre deux DTE :

– liaison simple a` 3 fils : rebouclage (strapping) des signaux de contrˆole :


TxD TxD
RxD RxD
RTS RTS
CTS CTS
DTR DTR
DSR DSR
DCD DCD
RI RI
DTE 1 GND GND DTE 2

Ce cˆablage ne permet pas le controˆle mat´eriel du flux entre les deux DTE.
– liaison compl`ete : cˆable Null Modem :
TxD TxD
RxD RxD
RTS RTS
CTS CTS
DTR DTR
DSR DSR
DCD DCD
RI RI
DTE 1 GND GND DTE 2

Ce cˆablage simule la pr´esence d’un modem (DCE) en croisant les signaux de


controˆle et permet le contrˆole mat´eriel du flux.
Mise en œuvre d’une interface s´erie, l’UART 8250 :

Brochage du 8250 :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.5 - L’interface s´erie 8250 75

D0 1 40 VCC
D1 2 39 RI
D2 3 38 DCD
D3 4 37 DSR
D4 5 36 CTS
D5 6 8250 35 MR
D6 7 34 OUT1
D7 8 33 DTR
RCLK 9 32 RTS
SIN 10 31 OUT2
SOUT 11 30 INTRPT
CS0 12 29 NC
CS1 13 28 A0
CS2 14 27 A1
BAUDOUT 15 26 A2
XTAL1 16 25 ADS
XTAL2 17 24 CSOUT
DOSTR 18 23 DDIS
DOSTR 19 22 DISTR
GND 20 21 DISTR

Sch´ema fonctionnel :

Acc`es aux registres du 8250 : le 8250 poss`ede 11 registres. Comme il n’y a que 3 bits
d’adresses (A0, A1 et A2), plusieurs registres doivent se partager la mˆeme adresse :
DLAB A2 A1 A0 registre

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


76 Chapitre 6 - Les interfaces d’entr´ees/sorties

0 0 0 0 RBR : Receiver Buffer Register, registre de r´eception


(accessible seulement en lecture)
0 0 0 0 THR : Transmitter Holding Register, registre
d’´emission (accessible seulement en ´ecriture)
1 0 0 0 DLL : Divisor Latch LSB, octet de poids faible du
diviseur d’horloge
1 0 0 1 DLM : Divisor Latch MSB, octet de poids fort du
diviseur d’horloge
0 0 0 1 IER : Interrupt Enable Register, registre d’autorisation
des interruptions
X 0 1 0 IIR : Interrupt Identification Register, registre
d’identification des interruptions
X 0 1 1 LCR : Line Control Register, registre de controˆle de
ligne
X 1 0 0 MCR : Modem Control Register, registre de controˆle
modem
X 1 0 1 LSR : Line Status Register, registre d’´etat de la ligne
X 1 1 0 MSR : Modem Status Register, registre d’´etat du
modem
X 1 1 1 SCR : Scratch Register, registre a` usage g´en´eral
En fonction de l’´etat de DLAB (Divisor Latch Access Bit = bit de poids fort du registre
LCR), on a acc`es soit au registre d’´emission/r´eception, soit au diviseur d’horloge, soit
au masque d’interruptions.
Structure des registres :
• Line Control Register (LCR) :

bits 0 et 1 : longueur du mot transmis, bit 1 bit 0


→ 5 bits 0 0
0 1
1 0
1 1
→ 6 bits
→ 7 bits
→ 8 bits
bit 2 : nombre de bits de stop, 0 → 1 bit de stop,

1 → 1.5 bits de stop si 5 bits sont transmis, 2


bits de stop sinon;

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.5 - L’interface s´erie 8250 77

bit 3 : autorisation de parit´e, 0 → pas de parit´e,

1 → parit´e g´en´er´ee et v´erifi´ee;

bit 4 : s´election de parit´e, 0 → parit´e impaire,

1 → parit´e paire;

bit 5 : forc¸age de parit´e, 0 → parit´e non forc´ee

1 → parit´e fixe;
bit 6 : controˆle de l’´etat de la ligne TxD, 10 →→ forc¸age de TxD `ligne en
bit 7 : DLAB (Divisor Latch Access bit), fonctionnement normal,a l’´etat 0
(break);

0 → acc`es aux registres


d’´emission,de r´eception et IER,

1 → acc`es au diviseur d’horloge.


• Line Status Register (LSR) :

bit 0 : 1 → donn´ee re¸cue; bit 1 : 1 → erreur d’´ecrasement

de caract`ere; bit 2 : 1 → erreur de parit´e; bit 3 : 1 →

erreur de cadrage (bit de stop non valide); bit 4 : 1 → d

´etection d’un ´etat logique 0 sur RxD pendant une dur´ee

sup´erieure `a la dur´ee d’un mot;

bit 5 : 1 → registre de transmission vide;

bit 6 : 1 → registre a` d´ecalage vide; bit 7

: non utilis´e, toujours a` 0.

• Modem Control Register (MCR) :

activation (mise a` 0) des lignes correspondantes en


bit 2 :

mettant a` 1 ces bits; ⎪

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


78 Chapitre 6 - Les interfaces d’entr´ees/sorties

fonctionnement en boucle : TxD connect´ee `a RxD (mode test);

: inutilis´es, toujours a` 0.
• Modem Status Register (MSR) :

bit 0 : 1 → changement de CTS depuis la derni`ere lecture : delta CTS; bit 1

: 1 → delta DSR;

bit 2 : 1 → delta RI (uniquement front montant sur RI); bit 3

: 1 → delta DCD;

ces bits indiquent l’´etat des lignes correspondantes.


• Diviseur d’horloge (DLM,DLL) : la vitesse de
transmission est fix´ee par la valeur du diviseur d’horloge :
fr´equence dhorloge(quartz)
vitesse (bit/s) =
16 × (DLM,DLL)

Exemple de calcul : vitesse de transmission d´esir´ee = 1200 bit/s, fr´equence


d’horloge
= 1.8432 MHz, d ´etermination de la
valeur du diviseur d’horloge : fr´equence dhorloge
diviseur =
DLM = 0 et DLL = 96.
16 × vitesse
• Receiver Buffer Register (RBR) : contient la donn´ee re¸cue.

• Transmitter Holding Register (THR) : contient la donn´ee `a transmettre.

• bit 0Interrupt Identification Register (IIR): 0 → pas d’interruption en


cours;interruption en cours, :

1→

bits 1 et 2 : source d’interruption, bit 2 bit 1


1 1
ISET Rad`es
1 0
cours de microprocesseur HAGGEGE, 2003`
0 1
0 0
6.5 - L’interface s´erie 8250 79

→→→→ erreurdonn´ee re¸cueregistre d’´emission videchangement d’´etat modem

(ordre de priorit´e d´ecroissant);

: inutilis´es, toujours a` 0.

bit 7 ⎪⎪⎭

• bit 0bit 1Interrupt Enable Register (IER): 1: 1 →→ donn´ee re¸cue;registre


d’´emission vide; : autorisation des interruptions

bit 2 : 1 → erreur;changement d’´etat modem;

: inutilis´es, toujours a` 0.
bit 7 ⎪⎪⎭

• Scratch Register (SCR) : registre a` usage g´en´eral pouvant contenir des donn
´ees temporaires.
Exemple de programmation : soit un UART 8250 dont le bus de donn´ees est connect´e
sur la partie faible du bus de donn´ees du microprocesseur 8086. L’adresse de base du
8250 est fix´ee `a la valeur 200H par un d´ecodeur d’adresses. La fr´equence d’horloge
du 8250 est de 1.8432 MHz. On veut :

• ´ecrire une proc´edurebits/s, 8 bits par caract`ere, parit´e paire, 1 bit de stop
(2400, 8, P, 1);init qui initialise le 8250 avec les param`etres suivants : 2400

• ´ecrire une proc´eduremsg. L’´emission s’arrˆete lorsque le caract`ereenvoi qui


´emet un message contenu dans la zone de donn´eesEOT (End Of Text, code ASCII =
03H)

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


80 Chapitre 6 - Les interfaces d’entr´ees/sorties

est rencontr´e;

• ´ecrire une proc´eduredans une zone de donn´ees appel´eereception qui rec¸oit une
ligne de 80 caract`ligne. En cas d’erreur de r´eception, envoyer leeres et la range

caract`ere NAK (No Acknowledge, code ASCII = 15H) sinon envoyer le caract`ere
ACK (Acknowledge, code ASCII = 06H).
Programme :
RBR equ 200H ; adresses des registres du 8250
THR equ 200H
DLL equ 200H
DLM equ 202H
IER equ 202H
IIR equ 204H
LCR equ 206H
MCR equ 208H
LSR equ 20AH
MSR equ 20CH
SCR equ 20EH
EOT equ 03H ; caracte`re End Of Text
ACK equ 06H ; caracte`re Acknowledge
NAK equ 15H ; caracte`re No Acknowledge
LIGNE db 80 dup(?) ; zone de rangement des caracte`res re¸cus
MSG db ’Test 8250’, EOT ; message a` envoyer
INIT PROC NEAR ; proce´dure d’initialisation du 8250
mov dx,LCR ; DLAB = 1 pour acce´der au diviseur
mov al,80H out ; d’horloge
dx,al
mov dx,DLL ; vitesse de transmission = 2400 bit/s
mov al,48 out ; => DLL = 48 ...
dx,al
mov dx,DLM ; ... et DLM = 0
mov al,0 out
dx,al

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


6.5 - L’interface s´erie 8250 81

mov dx,LCR ; DLAB = 0 , 8 bits de donne´es,


mov al,00011011B out ; parite´ paire, 1 bit de stop
dx,al
ret
INIT ENDP

ENVOI CARACTERE PROC NEAR ; proce´dure d’´emission du contenu de AH


mov dx,LSR ; lecture du registre d’e´tat de la ligne
attente envoi : ; attente registre de transmission vide
in al,dx
and al,20H ; masquage bit 5 de LSR
jz attente envoi ; si bit 5 de LSR = 0 => attente ...
mov dx,THR ; ... sinon envoyer le caracte`re
mov al,ah out ; contenu dans le registre AH
dx,al
ret
ENVOI CARACTERE ENDP
ENVOI PROC NEAR ; proce´dure d’´emission du message
mov si,offset MSG ; pointer vers le de´but du message
boucle :mov ah,[si] ; AH <- caracte`re `a envoyer
cmp AH,EOT ; fin du message?
jz fin envoi ; oui => fin proce´dure
call ENVOI CARACTERE ; non => envoyer caracte`re ...
inc si jmp ; ... et passer au caracte`re suivant
boucle fin envoi :
ret
ENVOI ENDP

RECEPTION PROC NEAR ; proce´dure de r´eception d’une ligne


mov di,offset LIGNE ; pointer vers de´but zone de r´eception
mov cx,80 attente ; compteur de caracte`res re¸cus
reception :
mov dx,LSR in ; lecture du registre d’e´tat de la ligne
al,dx
test al,01H ; test de l’e´tat du bit 0 de LSR
jz attente reception ; pas de caracte`re re¸cu => attente test al,00001110B ;
sinon test erreurs : bits 1,2,3 de LSR jz suite ; pas d’erreurs => continuer mov
ah,NAK ; erreurs => envoyer NAK ...
call ENVOI CARACTERE jmp attente reception ; ... et retourner attendre un
caracte`re

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


82 Chapitre 6 - Les interfaces d’entr´ees/sorties

suite : mov dx,RBR in al,dx ; lire caracte`re re¸cu ...

mov [di],al ; ... et le ranger dans LIGNE


mov ah,ACK call ENVOI ; puis envoyer ACK
CARACTERE
dec cx ; de´cr´ementer compteur de caracte`res
jz fin reception ; si compteur = 0 => fin re´ception
inc di ; sinon incre´menter DI
jmp attente reception ; et aller attendre caracte`re suivant
fin reception : ret
RECEPTION ENDP

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


Chapitre 7

Les interruptions

7.1 D´efinition d’une interruption


Soit un microprocesseur qui doit ´echanger des informations avec un p´eriph´erique :
périphérique

microprocesseur interface

Il y a deux m´ethodes possibles pour recevoir les donn´ees provenant des p´eriph´eriques
:
• scrutation p´eriodique (ou polling) : le programme principal contient des
instructions qui lisent cycliquement l’´etat des ports d’E/S.
Avantage : facilit´e de programmation. Inconv
´enients :
– perte de temps s’il y a de nombreux p´eriph´eriques `a interroger;
– de nouvelles donn´ees ne sont pas toujours pr´esentes;
– des donn´ees peuvent ˆetre perdues si elles changent rapidement.
• interruption : lorsqu’une donn´ee apparaˆıt sur un p´eriph´erique, le circuit d’E/S
le signale au microprocesseur pour que celui-ci effectue la lecture de la donn´ee :
c’est une demande d’interruption (IRQ : Interrupt Request) :
périphérique
demande
d'interruption
microprocesseur interface

Avantage : le microprocesseur effectue une lecture des ports d’E/S seulement


lorsqu’une donn´ee est disponible, ce qui permet de gagner du temps et d’´eviter de
perdre des donn´ees.
Exemples de p´eriph´eriques utilisant les interruptions :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


84 Chapitre 7 - Les interruptions

• clavier : demande d’interruption lorsqu’une touche est enfonc´ee; • port s´erie :

demande d’interruption lors de l’arriv´ee d’un caract`ere sur la ligne de

transmission.

Remarque : les interruptions peuvent ˆetre g´en´er´ees par le microprocesseur lui-


mˆeme en cas de probl`emes tels qu’une erreur d’alimentation, une division par z´ero ou
un circuit m´emoire d´efectueux (erreurs fatales). Dans ce cas, la demande d’interruption
conduit a` l’arrˆet du microprocesseur.

7.2 Prise en charge d’une interruption par le


microprocesseur
A la suite d’une demande d’interruption par un p´eriph´erique :

• le microprocesseur termine l’ex´ecution de l’instruction en cours;

• il range le contenu des principaux registres sur la pile de sauvegarde : pointeur


d’instruction, flags, ...

• il ´emet un accus´e de r´eception de demande d’interruption (Interrupt


Acknowledge) indiquant au circuit d’E/S que la demande d’interruption est accept
´ee :
périphérique
demande
d'interruption
microprocesseur interface
interruption
acceptée

Remarque : le microprocesseur peut refuser la demande d’interruption : celle-ci


est alors masqu´ee. Le masquage d’une interruption se fait g´en´eralement en
positionnant un flag dans le registre des indicateurs d’´etat. Il existe cependant des
interruptions non masquables qui sont toujours prises en compte par le
microprocesseur.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


• il abandonne l’ex´ecution du programme en cours et va ex´ecuter un sous-

programme de service de l’interruption (ISR : Interrupt Service Routine);

• apr`es l’ex´ecution de l’ISR, les registres sont restaur´es `a partir de la pile et le


microproceseur reprend l’ex´ecution du programme qu’il avait abandonn´e :
7.3 - Adresses des sous-programmes d’interruptions 73

programme
sous-programme
principal
de service
de l'interruption
service de
l'interruption
arrivée de
la demande
d'interruption retour au programm
principal (IRET)
e

Remarque : la derni`ere instruction d’un sous-programme de service d’interruption doit


ˆetre l’instruction IRET : retour d’interruption.
Si plusieurs interruptions peuvent se produire en mˆeme temps, on doit leur affecter une
priorit´e pour que le microprocesseur sache dans quel ordre il doit servir chacune
d’entre elle.

7.3 Adresses des sous-programmes d’interruptions


Lorsqu’une interruption survient, le microprocesseur a besoin de connaˆıtre l’adresse du
sous-programme de service de cette interruption. Pour cela, la source d’interruption
place sur le bus de donn´ees un code num´erique indiquant la nature de l’interruption. Le
microprocesseur utilise ce code pour rechercher dans une table en m´emoire centrale
l’adresse du sous-programme d’interruption a` ex´ecuter. Chaque ´el´ement de cette table
s’appelle un vecteur d’interruption :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


86 Chapitre 7 - Les interruptions

Lorsque les adresses des sous-programmes d’interruptions sont g´er´ees de cette


mani`ere, on dit que les interruptions sont vectoris´ees.
Avantage de la vectorisation des interruptions : l’emplacement d’une ISR peut ˆetre
n’importe ou` dans la m´emoire, il suffit de sp´ecifier le vecteur d’interruption
correspondant.
7.4 Les interruptions du 8086
Le microprocesseur 8086 peut g´erer jusqu’`a 256 interruptions. Chaque interruption
rec¸oit un num´ero compris entre 0 et 255 appel´e type de l’interruption. Trois sortes
d’interruptions sont reconnues par le 8086 :
type FFH : libre
• interruptions mat´erielles produites par l’activation des lignes INTR et NMI
du microprocesseur;
• interruptions logicielles produites par l’instruction INT n, ou` n est le type
type 40H : libre
de l’interruption; type 3FH :
réservé par Microsoft
• interruptions processeur g´en´er´ees par le microprocesseur en cas de d
´epassement, de division par z´ero ou lors de l’ex´ecution pas `a pas d’un
programme.
type 20H :
Les interruptions du 8086 sont vectoris´ees. La table des vecteurs d’interruptions réservé par Microsoft
type 1FH :
doit obligatoirement commencer a` l’adresse physique 00000H dans la m´emoire
réservé par Intel
centrale. Chaque vecteur d’interruption est constitu´e de 4 octets repr´esentant
une adresse logique

du type CS : IP. 3FFH


type 05H :
adresses des 3FCH
réservé par Intel
vecteurs d'interruption
type 04H :
overflow
type 03H :
HAGGEGE, 2003` int sur 1 octet
ISET Rad`es cours de microprocesseur instruction
type 02H :
NMI
type 01H :
pas à pas
type 00H :
division par zéro
103H 00H
100H FCH interruptions
FFH libres : disponibles pour
l'utilisateur

83H
interruptions
80H
réservées par Microsoft
7FH dans un PC : utilisées
7CH par MS-DOS,
Windows, ...

17H
14H interruptions réservées par
13H Intel
10H 0FH
0CH
0BH
08H
07H
04H
03H 2 octets
2 octets
7.5 - Le controˆleur programmable d’interruptions 8259 75

Remarque : correspondance entre le type de l’interruption et l’adresse du vecteur


correspondant :

adresse vecteur d’interruption = 4 × type de l’interruption

Exemple : interruption 20H, adresse du vecteur = 4 × 20H = 80H.

La table des vecteurs d’interruptions est charg´ee par le programme principal (carte a`
microprocesseur) ou par le syst`eme d’exploitation (ordinateur) au d´emarrage du
syst`eme. Elle peut ˆetre modifi´ee en cours de fonctionnement (d´etournement des
vecteurs d’interruptions).
CS
IP

7.5 Le controˆleur programmable d’interruptions 8259


Le microprocesseur 8086 ne dispose que de deux lignes de demandes d’interruptions
mat´erielles (NMI et INTR). Pour pouvoir connecter plusieurs p´erip´eriques utilisant des
interruptions, on peut utiliser le controˆleur programmable d’interruptions 8259 dont le
roˆle est de :

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


88 Chapitre 7 - Les interruptions

• re¸cevoir des demandes d’interruptions des p´eriph´eriques;

• r´esoudre les priorit´es des interruptions;

• g´en´erer le signal INTR pour le 8086;

• ´emettre le num´ero de l’interruption sur le bus de donn´ees.

Un 8259 peut g´erer jusqu’`a 8 demandes d’interruptions mat´erielles.


Brochage du 8259 :
CS 1 28 VCC
WR 2 27 A0
RD 3 26 INTA
D7 4 25 IR7
D6 5 24 IR6
D5 6 8259 23 IR5
D4 7 22 IR4
D3 8 21 IR3
D2 9 20 IR2
D1 10 19 IR1
D0 11 18 IR0
CAS0 12 17 INT
CAS1 13 16 SP/EN
GND 14 15 CAS2

Sch´ema fonctionnel :
+5 V

D0 - D7 VCC
ou D0 - D7 IR0
D8 - D15 IR1
RD RD IR2
M/IO 8259 entrées de
validation WR WR IR3
demandes
décodeur IR4
A2 - A15 d'adresses d'interruptions
IR5
CS IR6
A0
ou IR7
A1 A0
BHE
CAS0 mise en
INTR INT
CAS1 cascade
INTA INTA
CAS2 de plusieurs
GND SP/EN 8259

Remarque : si le nombre de demandes d’interruptions est sup´erieur a` 8, on peut placer


plusieurs 8259 en cascade :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


IR0
8259 IR1
esclave IR2
IR3
INT
IR4
8259 IR0
maître IR1 IR5
IR6
IR2
INTR INT IR7
IR3 SP/EN entrées de
INTA INTA IR4 demandes
IR5 d'interruptions
IR6
IR7 IR0
8259 IR1
esclave IR2
IR3
INT
IR4
IR5
CAS0, CAS1, CAS2 IR6
IR7
SP/EN

Annexe
Jeu d’instructions du 8086
Addition

ADD Addition d’octets ou de mots


ADC Addition d’octets ou de mots avec retenue
INC Incr´ementation de 1 d’un octet ou d’un mot
AAA Ajustement ASCII de l’addition
DAA Ajustement d´ecimal de l’addition
Transfert de donn´ees :

G´en´eral

MOV D´eplacement d’un octet ou d’un mot


PUSH Ecriture d’un mot au sommet de la pile
POP Lecture d’un mot au sommet de la pile
XCHG Echange d’octets ou de mots

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


90 Chapitre 7 - Les interruptions

XLAT ou Traduction d’un octet a` l’aide d’une table


XLATB
Entr´ees/Sorties

IN Lecture d’un port d’E/S


OUT Ecriture d’un port d’E/S
Transfert d’adresses

LEA Chargement d’une adresse effective


LDS Chargement d’un pointeur utilisant DS
LES Chargement d’un pointeur utilisant ES
Transfert des flags

LAHF Transfert des 5 flags bas dans AH


SAHF Transfert de AH dans les 5 flags bas
PUSHF Sauvegarde des flags sur la pile
POPF Restauration des flags a` partir de la pile
Instructions arithm´etiques :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


Logique

NOT Compl´ement `a 1 d’un octet ou d’un mot


AND ET logique de deux octets ou de deux mots
OR OU logique de deux octets ou de deux mots
XOR OU exclusif logique de deux octets ou de deux mots
TEST Comparaison, a` l’aide d’un ET, d’octets ou de mots
Rotations

ROL Rotation a` gauche d’un octet ou d’un mot)


ROR Rotation a` droite d’un octet ou d’un mot
RCL Rotation a` gauche incluant CF (octet ou mot)
RCR Rotation a` droite incluant CF (octet ou mot)
D´ecalages

SHL/SAL D´ecalage a` gauche arithm´etique ou logique (octet ou


mot)
SHR D´ecalage logique a` droite d’un octet ou d’un mot
SAR D´ecalage arithm´etique a` droite d’un octet ou d’un
mot
Annexe - Jeu d’instructions du 8086
Soustraction

SUB Soustraction d’octets ou de mots


SBB Soustraction d’octets ou de mots avec retenue
DEC D´ecr´ementation de 1 d’un octet ou d’un mot
NEG Compl´ementation a` 2 d’un octet ou d’un mot
(changement de signe)
CMP Comparaison d’octets ou de mots
AAS Ajustement ASCII de la soustraction
DAS Ajustement d´ecimal de la soustraction
Multiplication

MUL Multiplication non sign´ee d’octets ou de mots


IMUL Multiplication sign´ee d’octets ou de mots
AAM Ajustement ASCII de la multiplication
Division

DIV Division non sign´ee d’octets ou de mots

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


92
IDIV Division sign´ee d’octets ou de mots
AAD Ajustement ASCII de la division
CBW Conversion d’octet en mot
CWD Conversion de mot en double mot
Instructions logiques :
79

Controˆles d’it´erations

LOOP Bouclage tant que CX = 0


LOOPE ou Bouclage tant que CX = 0 et ZF = 1 (´egalit´e)
LOOPZ
LOOPNE ou Bouclage tant que CX = 0 et ZF = 0 (in´egalit´e)
LOOPNZ
JCXZ Saut si CX est nul
Branchements inconditionnels

CALL Appel de proc´edure


RET Retour d’une proc´edure
JMP Saut inconditionnel
Interruptions

INT Interruption logicielle


INTO Interruption si OF = 1 (overflow)
IRET Retour d’une interruption
Instructions sur les chaˆınes de caract`eres :

Pr´efixes

REP R´ep´etition tant que CX n’est pas nul


REPE ou REPZ R´ep´etition tant qu’il y a ´egalit´e et que CX n’est pas
nul
REPNE ou R´ep´etition tant qu’il n’y a pas ´egalit´e et que CX
REPNZ n’est pas nul
Instructions

MOVS ou D´eplacement de blocs d’octets ou de mots


MOVSB/MOVSW

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


CMPS ou Comparaison de blocs d’octets ou de mots
CMPSB/CMPSW
SCAS ou Exploration d’un bloc d’octets ou de mots
SCASB/SCASW
LODS ou Tranfert d’un octet ou d’un mot dans AL ou AX
LODSB/LODSW
STOS ou Chargement d’un bloc d’octets ou de mots par AL ou
STOSB/STOSW AX
Instructions de branchements :
Annexe - Jeu d’instructions du 8086

Op´erations sur les flags

STC Met le flag de retenue `a 1


CLC Efface le flag de retenue
CMC Inverse l’´etat du flag de retenue
STD Met le flag de direction a` 1 (d´ecr´ementation)
CLD Met le flag de direction a` 0 (incr´ementation)
STI Autorise les interruptions sur INTR
CLI Interdit les interruptions sur INTR
Synchronisation avec l’ext´erieur

HLT Arrˆet du microprocesseur (sortie de cet ´etat par


interruption ou reset)
WAIT Attente tant que TEST n’est pas `a 0
ESC Pr´efixe = instruction destin´ee `a un coprocesseur
LOCK Pr´efixe = r´eservation du bus pour l’instruction
Pas d’op´eration

NOP Pas d’op´eration


Instructions de branchements conditionnels :
Sauts conditionnels
JA ou JNBE (1)
Saut si « sup´erieur » (si CF + ZF = 0)
JAE ou JNB (1) Saut si « sup´erieur ou ´egal » (si CF = 0)
JB ou JNAE (1) Saut si « inf´erieur » (si CF = 1)
JBE ou JNA (1) Saut si « inf´erieur ou ´egal » (si CF + ZF = 1)
JC Saut en cas de retenue (si CF = 1)
JE ou JZ Saut si « ´egal » ou « nul » (si ZF = 1)

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


94
JG ou JNLE (2) Saut si « plus grand » (si (SF ⊕ OF) + ZF = 0)
JGE ou JNL (2) Saut si « plus grand ou ´egal » (si SF ⊕ OF = 0)
JL ou JNGE (2) Saut si « plus petit » (si SF ⊕ OF = 1)
JLE ou JNG (2) Saut si « plus petit ou ´egal » (si (SF ⊕ OF) + ZF = 1)
JNC Saut si « pas de retenue » (si CF = 0)
JNE ou JNZ Saut si « non ´egal » ou « non nul » (si (ZF = 0)
JNO Saut si « pas de d´epassement » (si OF = 0)
JNP ou JPO Saut si « parit´e impaire » (si PF = 0)
JNS Saut si « signe positif » (si SF = 0)
JO Saut si « d´epassement » (si OF = 1)
JP ou JPE Saut si « parit´e paire » (si PF = 1)
JS Saut si « signe n´egatif » (si SF = 1)
(1)
concerne des nombres non sign´es.
(2)
concerne des nombres sign´es.

Instructions de controˆle du 8086 :

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`


Bibliographie
´
[1] P. Andre . La liaison RS232. Dunod, Paris, 1998.
[2] T.C. Bartee. Digital Computer Fundamentals. McGraw-Hill, Tokyo, 1981.
[3] J. Campbell. L’interface RS-232. Sybex, Paris, 1984.
[4] B. Fabrot. Assembleur pratique. Marabout Informatique, Alleur, Belgique, 1996.
[5] A.B. Fontaine. Le microprocesseur 16 bits 8086/8088 – Mat´eriel, logiciel, syst`eme
d’exploitation. Masson, Paris, 1988.
[6] B. Geoffrion. 8086 - 8088 – Programmation en langage assembleur. Editions Radio,
Paris, 1986.
[7] J.P. Hayes. Computer Architecture and Organization. McGraw-Hill, Tokyo, 1982.
[8] S. Leibson. Manuel des interfaces. McGraw-Hill, Paris, 1984.
[9] H. Lilen. Introduction a` la micro-informatique – Du microprocesseur au
microordinateur. Editions Radio, Paris, 1982.
[10] H. Lilen. 8088 et ses p´eriph´eriques – Les circuits cl´es des IBM PC et compatibles.
Editions Radio, Paris, 1985.
[11] H. Lilen. 8088 – Assembleur IBM PC et compatibles. Editions Radio, Paris, 1986.
[12] H. Lilen. Cours fondamental des microprocesseurs. Editions Radio, Paris, 1987.
[13] H. Lilen. Microprocesseurs – Du CISC au RISC. Dunod, Paris, 1995.
[14] G.H. MacEwen. Introduction to Computer Systems. McGraw-Hill, Tokyo, 1981.
[15] A. Mariatte. PC, modems et serveurs. P.S.I, Lagny, France, 1986.
[16] P. Mercier. Assembleur facile. Marabout Informatique, Alleur, Belgique, 1989.
[17] P. Mercier. La maˆıtrise du MS-DOS et du BIOS – Les interruptions – Organisation
interne. Marabout Informatique, Alleur, Belgique, 1989.
[18] P. Mercier. Les interruptions du MS-DOS. Marabout Informatique, Alleur, Belgique,
1990.
[19] A. Osborne. Initiation aux micro-ordinateurs – Niveau 2. Editions Radio, Paris, 1981.
[20] J.B. Peatman. Microcomputer Based Design. McGraw-Hill, Tokyo, 1981.
[21] E. Pissaloux. Pratique de l’assembleur I80x86 – Cours et exercices. Herm`es, Paris,
1994.
[22] H. Schakel. Programmer en assembleur sur PC. Micro Application, Paris, 1995.
Bibliographie

[23] C. Tavernier. Modems. ETSF, Paris, 1993.

HAGGEGE, 2003` cours de microprocesseur ISET Rad`es


96

[24] M. Tischer et B. Jennrich. La bible PC – Programmation syst`eme. Micro Application,


Paris, 1997.
[25] R. Tourki. L’ordinateur PC – Architecture et programmation – Cours et exercices.
Centre de Publication Universitaire, Tunis, 2002.
[26] J. Tracy Kidder. The Soul of a New Machine. Atlantic-Little Brown, U.S.A, 1981.
[27] J.M. Trio. Microprocesseurs 8086-8088 – Architecture et programmation. Eyrolles,
Paris, 1984.
[28] R. Zaks et A. Wolfe. Du composant au syst`eme – Introduction aux microprocesseurs.
Sybex, Paris, 1988.

ISET Rad`es cours de microprocesseur HAGGEGE, 2003`

Vous aimerez peut-être aussi