Vous êtes sur la page 1sur 51

Rpublique Algrienne Dmocratique et Populaire

Ministre de lEnseignement Suprieur et de la Recherche Scientifique


Universit Mohamed Khider Biskra
Facult des Sciences et de la Technologie

Dpartement de Gnie Electrique :
Filire dElectronique :

Microprocesseurs et
ses interfaces
Support de cours : 1 ere anne Master
INSTRUMENTATION et Micro-informatique

Prparer par : Dr. Okba Benelmir

Anne Universitaire : 2015-2016


Sommaire
Chapitre 1 : Introduction aux microprocesseurs ..........................................................................................4
I.1 Introduction ..................................................................................................................................4
I.2 Architecture d'un systme microprocesseur...........................................................................4
I.2.1 Le microprocesseur ......................................................................................................................4
I.2.2 La mmoire ...................................................................................................................................5
I.2.3 Interface I/O.................................................................................................................................6
I.3 Architecture de base dun microprocesseur ..............................................................................6
I.3.1 Unit de traitement.......................................................................................................................6
I.3.2 Unit de commande ......................................................................................................................7
I.4 La famille de 80x86.......................................................................................................................7
I.4.1 Le microprocesseur 8086 (1978)..................................................................................................7
I.4.2 Le microprocesseur 8088 (1979)..................................................................................................8
I.4.3 Les microprocesseurs 80186 & 80188 (1982) .............................................................................8
I.4.4 Le microprocesseur 80286 (1982)................................................................................................8
I.4.5 Le microprocesseur 80386 (1984)................................................................................................8
I.4.6 Le microprocesseur 80486 (1989)................................................................................................9
I.4.7 Le microprocesseur Pentium (1993) ...........................................................................................9
Chapitre 2 : Le Microprocesseur Intel 8086 ................................................................................................10
II.1 Description physique du 8086....................................................................................................10
II.2 Schma fonctionnel du 8086 ......................................................................................................10
II.2.1 Connexions de base ....................................................................................................................13
II.3 Organisation interne du 8086 ....................................................................................................13
II.4 La segmentation de la mmoire.................................................................................................15
Chapitre 3 : La programmation du microprocesseur 8086.......................................................................16
III.1 Gnralits.....................................................................................................................................16
III.2 Les modes d'adressage ...............................................................................................................16
III.2.1 Adressage registre ....................................................................................................................17
III.2.2 Adressage immdiat .................................................................................................................17
III.2.3 Adressage direct .......................................................................................................................17
III.2.4 Adressage indirect par registre ...............................................................................................17

1
III.2.5 Adressage bas ...........................................................................................................................17
III.2.6 Adressage index .......................................................................................................................17
III.2.7 Adressage bas index ...............................................................................................................18
III.3 Les instructions de transfert .......................................................................................................18
III.3.1 Instruction MOV .......................................................................................................................18
III.3.2 Instruction de pile......................................................................................................................19
III.3.3 Instruction XCHG......................................................................................................................20
III.4 Les instructions arithmtiques .................................................................................................20
III.4.1 Instruction ADD .........................................................................................................................20
III.4.2 Instruction ADC ........................................................................................................................20
III.4.3 Instruction INC...........................................................................................................................21
III.4.4 Instruction SUB .........................................................................................................................21
III.4.5 Instruction SBB .........................................................................................................................21
III.4.6 Instruction DEC ........................................................................................................................21
III.4.7 Instruction NEG ........................................................................................................................21
III.4.8 Instruction CMP.........................................................................................................................21
III.4.9 Instruction MUL.........................................................................................................................22
III.4.10 Instruction DIV.........................................................................................................................22
III.4.11 Instructions IMUL et IDIV.....................................................................................................22
III.5 Les instructions logiques..........................................................................................................22
III.5.1 Instruction AND..........................................................................................................................22
III.5.2 Instruction OR ...........................................................................................................................22
III.5.3 Instruction XOR ........................................................................................................................23
III.5.4 Instruction TEST........................................................................................................................23
III.5.5 Instruction NOT .........................................................................................................................23
III.5.6 Instructions de Dcalages...........................................................................................................23
III.5.7 Instructions de Rotations ...........................................................................................................24
III.6 Les instructions de branchement .............................................................................................24
III.6.1 Instruction de saut inconditionnel ...........................................................................................25
III.6.2 Instructions de sauts conditionnels ..........................................................................................25
III.6.3 Instruction CALL.......................................................................................................................25
III.6.4 Instruction RET ..........................................................................................................................26

2
III.6.5 Instructions des interruptions ...................................................................................................26
III.6.6 Instruction de boucles LOOP ....................................................................................................26
III.7 Les instructions de manipulation de chaines ...........................................................................26
Chapitre 4 : Interfaage du microprocesseur 8086 .....................................................................................28
IV.1 Microprocesseur 8086 (Minimum Mode).................................................................................28
IV.2 Gnrateur dhorloge.................................................................................................................28
IV.3 Bus systme (Demultiplexed and Buffered) .............................................................................28
IV.4 Mmoire systme (ROM & RAM) ............................................................................................30
IV.5 E/S systme (Switches and LEDs) .............................................................................................32
IV.5.1 Adresse cartographique .............................................................................................................32
IV.5.2 Adressage indpendant ..............................................................................................................32
Chapitre 5 : Les interfaces dentres/sorties................................................................................................34
V.1 Dfinition.....................................................................................................................................34
V.2 Linterface parallle 8255 .........................................................................................................34
V.2.1 Interfaage de 8086 avec le 8255 ...............................................................................................37
V.3 Le 8279........................................................................................................................................37
V.4 Linterface srie 8250 .................................................................................................................38
V.4.1 Structure de lUART..................................................................................................................39
V.4.2 Les registres du 8250..................................................................................................................40
Chapitre 6 : Les interruptions......................................................................................................................41
VI.1 Dfinition dune interruption ....................................................................................................41
VI.2 Le contrleur programmable dinterruptions 8259 ................................................................42
VI.3 Le temporisateur programmable 8253/8254...........................................................................44
VI.4 DMA (Accs Direct la Mmoire)............................................................................................48
VI.5 Le 8237.........................................................................................................................................48
Bibliographie...................................................................................................................................................50

3
Chapitre 1 : Introduction aux microprocesseurs

I.1 Introduction
Dans les annes 70 les technologies des
ordinateurs numriques et celles des circuits intgrs
sont fondues pour donner naissance au
microprocesseur.
Le microprocesseur possde une architecture
semblable lordinateur en plus tous les deux
effectuent des calculs sous le contrle dun
programme.
La plupart des systmes informatiques
d'aujourd'hui sont bass sur un principe de conception
propose par le Dr John Von Neumann (1946).

I.2 Architecture d'un systme microprocesseur


Dans un systme microprocesseur (Architecture de Von Neumann), on retrouve au
minimum : (1) Un microprocesseur, (2) Une mmoire morte (ROM) + Une mmoire vive (RAM),
(3) Une interface entres/sorties
Tous ces organes sont relis entre eux avec 3 bus : Bus de donnes bidirectionnel, Bus d'adresse,
Bus de commande

Figure I.1 : Systme microprocesseur

I.2.1 Le microprocesseur
Cest le cur du systme. Cest lui qui a la charge des fonctions suivantes :
- Fournit les signaux de synchronisation et de commande tous les lments du systme
- Prend en charge les instructions et les donnes dans la mmoire
- Transfre les donnes entre la mmoire et les dispositifs dI/O et vice versa
- Dcode les instructions
- Effectue les oprations arithmtiques et logiques commandes par les instructions
- Ragit aux signaux de commande produits par les entres/sorties comme le signal RESET et
les INTERRUPTIONS

4
I.2.2 La mmoire
La mmoire a pour rle de conserver des groupes de chiffres binaires (mots) qui sont soit
des instructions formant un programme, soit des donnes dont le programme a besoin.
Elle se dcompose souvent en :

a/ une mmoire morte (ROM = Read Only Memory) charge de stocker le programme. Cest une
mmoire lecture seule.
ROM : Read Only Memory. Mmoire lecture seule, sans criture. Son contenu est programm
une fois pour toutes par le constructeur. Avantage : faible cot.
Inconvnient : ncessite une production en trs grande quantit.
PROM: Programmable Read Only Memory. ROM programmable une seule fois par lutilisateur.
EPROM : Erasable PROM, appele aussi UVPROM. ROM programmable lectriquement avec
un programmateur et effaable par exposition un rayonnement ultraviolet.
EEPROM : Electrically Erasable PROM. ROM programmable et effaable lectriquement.
Les EEPROM contiennent des donnes qui peuvent tre modifies.
b/ une mmoire vive (RAM = Random Access Memory) charge de stocker les donnes
intermdiaires ou les rsultats de calculs. On peut lire ou crire des donnes dedans, ces donnes
sont perdues la mise hors tension.
SRAM: Static Random Access Memory. Mmoire statique accs alatoire, base de bascules
semi-conducteurs deux tats (bascules RS).
DRAM : Dynamic RAM. Base sur la charge de condensateurs : condensateur charg = 1,
condensateur dcharg = 0.
Remarque :
Les disques durs, disquettes, CDROM, etc sont des priphriques de stockage et sont considrs
comme des mmoires secondaires.
On peut donc schmatiser un circuit mmoire par la figure suivante o lon peut distinguer :

Figure I.2 : Schma fonctionnel dune mmoire

5
Les entres dadresses, les entres / sorties de donnes, les entres de commandes :
Entre de slection de lecture ou dcriture. (R/ W), une entre de slection du circuit. (CS).
Le nombre de lignes dadresses dpend de la capacit de la mmoire : n lignes dadresses
permettent dadresser 2n cases mmoire: 8 bits dadresses permettent dadresser 256 octets, 16 bits
dadresses permettent dadresser 65536 octets (= 64 Ko), ...
Exemple : mmoire RAM 6264, capacit = 8K8 bits : 13 broches dadresses A0 A12,
213 = 8192 = 8 Ko.

I.2.3 Interface I/O


Cest un circuit intgr permettant au microprocesseur de communiquer avec
lenvironnement extrieur (priphriques) : clavier, cran, imprimante, bouton poussoir, processus
industriel, actionneurs
Les transferts E/S correspondent des instructions de lecture et dcriture. Le plus souvent le circuit
dinterface comporte un registre appel port .
Ecriture : Le microprocesseur envoie lordre dcriture et les donnes sont mmorises dans le
registre de linterface.
Lecture : le circuit se contente de prsenter les informations du priphrique sur le bus de donnes.

I.3 Architecture de base dun microprocesseur


Le microprocesseur est construit autour de deux lments principaux :
Une unit de traitement et Une unit de commande

I.3.1 Unit de traitement


Elle regroupe les circuits qui assurent les traitements ncessaires l'excution des instructions.
Les blocs de lunit de traitement :

UAL Registres
Bus dadresse
Flags
Bus de donnes

Dcodeur Squenceur

Dinstructions Bus de commande

Unit de commande
Figure I.3: Principales sections d'un microprocesseur

6
ALU (Arithmetic and Logic Unit)
C'est lunit qui permet d'effectuer des calculs arithmtiques simples (additions, soustractions,
dcalages, etc.) et des oprations logiques (ET, OU, etc.).
Les registres gnraux
Les registres gnraux participent aux oprations arithmtiques et logiques ainsi qu' l'adressage. Le
plus important est appel accumulateur.
Registre dtat
Cest lensemble des drapeaux (flags) qui forme le registre dtat.
Les flags ragissent aprs certaines instructions et permettent de savoir si le rsultat de l'opration
est zro (flag Z), si il y a eu un dpassement (flag C), si le nombre de bit 1 est pair (flag P) et le
signe (flag S).

I.3.2 Unit de commande


Cest lensemble squenceur/dcodeur dinstruction. Elle est compose par :
Squenceur
C'est le matre d'orchestre, il cadence le microprocesseur. C'est lui qui pilote le bus de
commande et les blocs internes
Dcodeur dinstruction
Il reconnat linstruction et la transforme en signaux internes grce un microcode contenu
dans une ROM interne.
Le compteur de programme
Constitu par un registre dont le contenu est initialis avec l'adresse de la premire
instruction du programme. Il contient toujours ladresse de linstruction excuter.
Stack Pointer
Il a pour rle dindiquer au microprocesseur la prochaine case disponible dans la pile.

I.4 La famille de 80x86


I.4.1 Le microprocesseur 8086 (1978)
Adresse bus 20-bit.
16 bits du bus de donnes internes.
16 bits du bus de donnes externes.
Lunit d'interface de bus (BIU) et l'unit d'excution (EU).
Registres de 16 bits (certains registres sont dcoups en deux et on peut accder sparment
la partie haute et la partie basse.).
Il peut tre utilis avec un coprocesseur mathmatique externe.

7
I.4.2 Le microprocesseur 8088 (1979)
Il est entirement compatible avec le 8086, le jeu d'instruction est identique. La seule
diffrence rside dans la taille du bus de donnes, celui du 8088 fait seulement 8 bits.

I.4.3 Les microprocesseurs 80186 & 80188 (1982)


Le 80186/80188 intgre sur une seule puce un microprocesseur 8086/8088 plus un
gnrateur d'horloge, un temporisateur programmable, un contrleur d'interruption
programmable, un contrleur d'accs direct la mmoire et un circuit pour slectionner les
dispositifs d'E / S.

I.4.4 Le microprocesseur 80286 (1982)


Bus d'adresse de 24 bits.
16 bits du bus de donnes internes.
16 bits du bus de donnes externes.
Conu pour tre compatible avec 8086 & 80186 microprocesseurs.
Fournit deux modes de programmation:
Mode rel : le processeur fonctionne exactement comme le processeur 8086.
Mode protg : Dans ce mode, le processeur utilise l'espace mmoire complte qui est
16MB.
Ce mode est appel mode protg parce que plusieurs programmes peuvent tre chargs en
mmoire la fois (chacun dans son propre segment), mais ils sont protgs lun contre l'autre.

I.4.5 Le microprocesseur 80386 (1984)


Bus d'adresse de 32 bits.
32 bits du bus de donnes internes.
32 bits du bus de donnes externes.
Des registres de 32 bits.
Offre trois modes:
Mode rel (identique celui de 80 286)
Le mode protg (gre 4 Go de mmoire d'une manire similaire celle du 80 286).
Mode virtuel (similaire au mode rel, sauf que plusieurs processeurs 8086 peuvent
fonctionner simultanment).

8
I.4.6 Le microprocesseur 80486 (1989)
Bus d'adresse de 32 bits.
Bus de donnes 32 bits interne et externe.
Des registres de 32 bits.
On-chip cache (stocke les instructions et les donnes les plus rcemment utilises)
Unit virgule flottante intgre (FPU)
Modes rels et protgs comme dans 80386

I.4.7 Le microprocesseur Pentium (1993)


Bus d'adresse de 32 bits.
32-bit interne
64 bits du bus de donnes externes.
Des registres de 32 bits.
Deux instructions pipelines
On-chip cache
FPU intgr

9
Chapitre 2 : Le Microprocesseur Intel 8086

II.1 Description physique du 8086

Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en 1978. Cest le


premier microprocesseur de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486, Pentium,
...). Il se prsente sous la forme dun boitier DIP (Dual In-line Package) 40 broches :

II.2 Schma fonctionnel du 8086

Figure II.1: Brochage et Schma fonctionnel du 8086

Brochage et Fonctions des Pins du 8086 :


CLK : entre du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce signal
provient dun gnrateur dhorloge : le 8284.
AD0 AD15 : Ces lignes reprsentent 16 bits de bus d'adresse multiplexs avec 16 bits de lignes
de donnes.
Pendant T1, elles reprsentent des lignes d'adresse A15-A0.
Pendant T2, T3, T4, elles reprsentent des lignes de donnes D0-D15.
A16/S3 A19/S6 : Ces lignes adresse sont multiplexes avec les lignes dtat.
Pendant T1, elles reprsentent des lignes d'adresse A19-A16.
Pendant T2, T3, T4, elles reprsentent des signaux d'tat S6-S3.
S0 S7 : signaux dtat indiquant le type dopration en cours sur le bus.

10
ALE (Address Latch Enable ): Ce signal est une impulsion active pendant T1, elle indique que
linformation qui circule dans bus A/D est une adresse.
Elle est fournie par le Cpu pour verrouiller les lignes d'adresse au cours des cycles T2, T3, T4.
RD : Read, signal de lecture dune donne.
WR : Write, signal dcriture dune donne.
M/IO : Memory/Input-Output, indique si le CPU adresse la mmoire (M/IO = 1) ou les
entres/sorties (M/IO = 0).
DEN : Data Enable, indique que des donnes sont en train de circuler sur le bus A/D (quivalente
de ALE pour les donnes).
DT/R : Data Transmit/Receive, indique le sens de transfert des donnes :
DT/R = 1 : donnes mises par le microprocesseur (criture) ;
DT/R = 0 : donnes reues par le microprocesseur (lecture).

Chronogramme de sparation de bus A/D

11
Chronogramme de sens de transfert de donnes sur le bus de donnes

READY : Entre de synchronisation avec la mmoire.


TEST : Entre de mise en attente du microprocesseur dun vnement extrieur.
RESET : Entre de remise zro du microprocesseur.
MN/MX : indique dans quel mode le processeur doit fonctionner
HIGH minimum mode.
LOW maximum mode.
NMI et INTR : Entres de demande dinterruption.
INTR : interruption normale,
NMI (Non Maskable Interrupt) : interruption prioritaire.
INTA : Interrupt Acknowledge, indique que le microprocesseur accepte linterruption.
HOLD et HLDA : Signaux de demande daccord daccs direct la mmoire (DMA).
BHE : Bus High Enable, signal de lecture de loctet de poids fort du bus de donnes.
Il est utilis avec A0 pour slectionner le mot entier, octet fort, octet faible ou aucun.

BHE A0 Data Selected

0 0 les deux octets (mot complet) (D15-D0)

0 1 octet fort (adresse impaire) (D15-D8)

1 0 octet faible (adresse paire) (D7-D0)

1 1 aucun octet

12
II.2.1 Connexions de base
GND: se connecter 0V.

VCC: se connecter 5V.

MN / MX : se connecter 5V (mode minimum).

NMI et INTR: se connecter 0V (pas de support pour les interruptions).

CLK: se connecter la sortie CLK du gnrateur d'horloge.

HOLD: se connecter 0V (pas d'accs direct la mmoire).

TEST : se connecter 0V (pas d'attente pour les co-processeur).

READY: se connecter 5V (pas de cycles d'attente pour les priphriques lents).

RESET: se connecter zro de la sortie du gnrateur d'horloge.

Remarque :
Un systme microprocesseur trs simple est compos des parties suivantes:

(1) 8284A Clock Generator (15 MHz Crystal)

(2) 8086 Microprocessor (Minimum Mode)

(3) Bus System (Demultiplexed and Buffered)

(4) Memory System (ROM & RAM Modules)

(5) I/O System (Switches and LEDs)

II.3 Organisation interne du 8086


Le 8086 est constitu de deux units internes distinctes:

lunit dexcution (EU : Execution Unit) ;


lunit dinterface de bus (BIU : Bus Interface Unit).
Le rle de la BIU est de rcuprer et stocker les informations traiter, et d'tablir les
transmissions avec les bus du systme. L'EU excute les instructions qui lui sont transmises par la
BIU.
Pendant que l'EU du 8086/8088 excute les informations qui
lui sont transmises, l'instruction suivante est charge dans la BIU. Les instructions qui
suivront sont places dans une file d'attente. Lorsque l'EU a fini de traiter une instruction la BIU lui
transmet instantanment l'instruction suivante, et charge la troisime instruction en vue de la
transmettre l'EU. De cette faon, l'EU est continuellement en activit.

13
Figure II.2 : architecture du microprocesseur 8086

Le microprocesseur 8086 contient 14 registres rpartis en 4 groupes :


1) Registres de travails : 4 registres sur 16 bits AX, BX, CX et DX.
Chacun de ces registres est de 16-bits de large, mais Ils peuvent tre galement considrs
comme 8 registres sur 8 bits.
Registre AX : (Accumulateur) : registre de travail principal.
Registre BX : (registre de base) : Il est utilis pour l'adressage.
Registre CX : (Le compteur) : le registre CX a t fait pour servir comme compteur
lors des instructions de boucle.
Registre DX : On utilise le registre DX pour les oprations de multiplication et de division
et pour contenir le numro d'un port d'entre/sortie pour adresser les
interfaces d'E/S.

2) Registres de segments : 4 registres sur 16 bits.


Ils sont employs par la CPU pour dterminer les adresses de segment de mmoire.
Le registre CS (code segment) : Il pointe sur le segment qui contient les codes des
instructions du programme excutable.
Le registre DS (Data segment) : Le registre segment de donnes pointe sur la zone
mmoire de donnes.
Le registre ES (Extra segment) : segment auxiliaire pour donnes.
Le segment SS (Stack segment) : Le registre SS pointe sur la pile.

14
Remarque : la pile est une zone mmoire ou on peut sauvegarder le contenu des registres, les
adresses ou les donnes pour les rcuprer aprs l'excution d'un sous-programme ou l'excution
d'un programme d'interruption.

3) Registres de pointeurs et dindex : 4 registres sur 16 bits.


Ce sont des registres de 16 bits ils sont utiliss comme pointeurs de mmoire.
L'index SI : (source indexe) : Il est associ au registre DS, il sert aussi pour les instructions
de chane de caractres, en effet il pointe sur le caractre source.
L'index DI : (Destination indexe) : Il est associ aux registres (DS ou ES), il sert aussi pour
les instructions de chane de caractres, il pointe alors sur la destination.
Les pointeurs SP et BP : ( Stack pointer et base pointer ) :
Ils sont associs au registre SS, Ils pointent sur la zone pile. Pour le registre
BP a un rle proche de celui de BX, le registre SP Pointe sur la tte de la pile.
Le pointeur IP : Associ au registre CS, il a seulement une fonction qui est d'indiquer la
prochaine instruction excuter par le CPU.
4) le registre FLAG : La plupart des instructions arithmtiques et logiques affectent le
registre d'tat du processeur (ou registre de FLAG).
Cest un registre de 16 bits. Six des drapeaux sont des indicateurs d'tat refltant les
proprits du rsultat de la dernire instruction arithmtique ou logique.
Trois des indicateurs peuvent tre activs ou remis zro par le programmeur: (TF, IF, DF).
Flags :

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;
AF : indicateur de retenue auxiliaire ;
ZF : indicateur de zro ;
SF : indicateur de signe ;
TF : indicateur dexcution pas pas (trap) ;
IF : indicateur dautorisation dinterruption ;
DF : indicateur de dcrmentation ;
OF : indicateur de dpassement (overow).

II.4 La segmentation de la mmoire


Le processeur 8086 a un bus d'adresses du bit 20, Ceci permet au processeur d'adresser 220
ou 1,048,576 emplacements mmoire diffrents (1 Mo).
Puisque les registres du 8086 ne font que 16 bits et avec 16 bits en peut adresser que 64 ko
alors INTEL a propos de fractionner la mmoire totale adressable de 1 Mo en bloc de 64 ko
appels segments. On utilise alors deux registres pour adresser une case mmoire (registre de
segment combin au registre doffset), on appelle donc une adresse logique :
le couple : segment : offset.
On appelle adresse physique : Ladresse dune case mmoire donne sous la forme dune
quantit sur 20 bits.
Adresse physique = segment x 16+ offset
Exemple : CS : IP = 3F51 : 0021 donc Adresse physique = 3F510 + 0021 = 3F530h.

15
Chapitre 3 : La programmation du microprocesseur 8086

III.1 Gnralits
Le programme est une suite d'instructions. Une instruction est un mot binaire dcrivant
l'action que doit excuter le microprocesseur,
Une instruction est dfinie par son code opratoire, quon crit gnralement en hexa, mais
pour une plus grande facilit on les dsignera par leurs mnmoniques. Le mnmonique est une
abrviation en caractre latin.
La programmation en assembleur utilise un ensemble dinstructions appel jeu
dinstructions. Chaque microprocesseur son propre jeu dinstructions.
Pour les microprocesseurs classiques, le nombre dinstructions reconnues varie entre 75 et
150 (microprocesseurs CISC : Complex Instruction Set Computer). Il existe aussi des
microprocesseurs dont le nombre dinstructions est trs rduit (microprocesseurs RISC : Reduced
Instruction Set Computer) : entre 10 et 30 instructions, permettant damliorer le temps
dexcution des programmes.
Les instructions peuvent tre classes en groupes :
instructions de transfert de donnes ;
instructions arithmtiques ;
instructions logiques ;
instructions de branchement ...

III.2 Les modes d'adressage


La structure la plus gnrale dune instruction est la suivante :

Opration effectuer oprande destination, oprande source

Lopration est ralise entre les 2 oprandes et le rsultat est toujours rcupr dans
loprande de gauche.
Il y a aussi des instructions qui agissent sur un seul oprande.
Les oprandes peuvent tre des registres, des constantes ou le contenu de cases mmoire, on
appelle a le mode dadressage
Les modes d'adressage dfinissent comment identifier l'oprande de chaque instruction.
Un mode d'adressage spcifie comment calculer l'adresse de la mmoire d'un oprande en
utilisant les informations contenues dans les registres et / ou Les constantes contenues dans
linstruction.
Il y a plusieurs modes d'adressage dans le 8086:

16
III.2.1 Adressage registre
Ce mode utilise les registres internes de CPU, dans ce mode le CPU transfert d'une copie
d'un octet (8 bits) ou un mot (16 bits) d'un registre (source) vers un autre registre (destination).
Exemples : MOV AX, BX : Copier le contenu de BX dans AX
Notez que le transfert d'un registre 8 bits avec un registre 16 bits est une erreur.

III.2.2 Adressage immdiat


L'adressage immdiat transfre la source, un octet immdiat ou le mot, dans le registre de
destination ou l'emplacement mmoire.
Exemples : ADD AX, 177h : Additionner le registre AX avec le nombre hexadcimal 177.
MOV AX, 'ab': Charger AH par le code ASCII du caractre 'a' et AL par le
code ASCII du caractre 'b'.

III.2.3 Adressage direct


L'adressage direct dmnage un octet ou un mot entre un emplacement mmoire et un
registre. Ladresse de la case mmoire ou plus prcisment son [Rseg : Offset] est prcis
directement dans linstruction.
Exemples : MOV AL, [1234H] : Copier le contenu de la mmoire d'adresse DS:1234 dans AL.

III.2.4 Adressage indirect par registre


L'adressage indirect de registre transfre un octet ou un mot entre un registre et un
emplacement mmoire adresss par un intermdiaire (un des 4 registres doffset BX, BP, SI ou DI).
Exemple : MOV AX, [BX] : transfert de contenu de la case mmoire 16 bits point par
DS:BX.
MOV AX, [ES:BP] : Charger AX par le contenu de la mmoire d'adresse ES:BP.
Remarque :
Ladressage indirect est divis en 3 catgories (ladressage Bas, ladressage index et
ladressage bas index) selon le registre doffset utilis.

III.2.5 Adressage bas


Il utilise les registres de base (BX, BP) comme pointeur. On peut ajouter un dplacement de
registre offset pour dterminer loffset,
Exemple : MOV AX, [BX] : Charger AX par le contenu de la mmoire d'adresse DS:BX
MOV AX, [BX+1000H] : Charger AX par le contenu de la mmoire d'adresse
DS:BX+1000

III.2.6 Adressage index


Le mme mode que le bas, mais il utilise les registres dindexes (SI, DI) comme pointeur.
On peut ajouter un dplacement de registre offset pour dterminer loffset
Exemple : MOV AX, [SI] : Charger AX par le contenu de la mmoire d'adresse DS:SI
MOV AX, [SI+100] : Charger AX par la mmoire d'adresse DS:SI+100.

17
III.2.7 Adressage bas index
Cest un mode combine entre de modes dadressage comme lindique son nom.
Exemple : MOV AX, [BP+SI-8] : AX est charg par la mmoire d'adresse SS:BP+SI-8
MOV AX, [BX+DI+4] : AX est charg par la mmoire d'adresse DS:BX+DI+4

III.3 Les instructions de transfert


Elles permettent de dplacer des donnes dune source vers une destination :
registre vers mmoire ;
registre vers registre ;
mmoire vers registre.
Remarque : le microprocesseur 8086 nautorise pas les transferts de mmoire vers mmoire (pour
ce faire, il faut passer par un registre intermdiaire).

III.3.1 Instruction MOV


Le format gnral d'une instruction MOV est : MOV Destination, Source
(MOV Op1, Op2).
L'instruction MOV copie le contenu de l'oprande source dans l'oprande de destination.
La source peut tre : Registre, mmoire, valeur immdiate (latrale).
La destination peut tre : Registre, mmoire.
Toutes les combinaisons autorises des deux oprandes sont numres ci-dessous:

MOV AX, BX copier un registre dans un autre.


MOV M, AX copier le contenu dune case mmoire dans un registre.
MOV AX, M copier un registre dans une case mmoire.

MOV AX, 4 copier une constante dans un registre.


MOV taille M, 4 copier une constante dans une case mmoire.
(taille = BYTE ou WORD)

Les actions suivantes ne sont pas autorises avec l'instruction MOV:


1- Interdit dutiliser le registre (CS) comme destination.
2- Interdit de lire ou crire dans le registre (IP).
3- Interdit de copier la valeur dun registre de segment vers un autre registre de segment, il
faut passer par une case mmoire ou par un registre interne de 16 bits.
4- Interdit de copier une valeur immdiate vers un registre de segment, il faut passer par un
registre interne ou une case mmoire de 16 bits.
5- Interdit de transfrer le contenu dune case mmoire vers une autre, il faut passer par un
registre interne de mme taille.

18
III.3.2 Instruction de pile
Les instructions de pile sont des instructions importantes qui stockent et rcuprent des
donnes partir de la pile mmoire selon le protocole LIFO (dernier entr, premier sorti).
Le processeur 8086 prend en charge 4 instructions de pile:
PUSH
POP
PUSF (Push Drapeau enregistrer)
POPF (Pop Drapeau enregistrer)

a/ PUSH
Le format gnral d'une instruction de PUSH est : PUSH oprande
- L'instruction PUSH stocke le contenu de loprande Op (16 bits) dans le sommet de Pile
- Dcrmente SP de 2

Les oprandes admis de l'instruction PUSH sont:


PUSH AX registre
PUSH word [@] une case mmoire de 16 bits.

Figure III.1 : Fonctionnement de l'instruction PUSH

La figure III.1 montre le fonctionnement de l'instruction PUSH AX aprs excution.


PUSHF : Empilement de registre FLAG vers le sommet de la PILE.

b/ POP
Le format gnral d'une instruction POP est : POP oprande.
- L'instruction POP Dpile une valeur de 16 bits depuis le sommet de la Pile (STACK
SEGMENT) et la stocke dans les oprandes (16 bits).
- Incrmente SP de 2

- Les oprandes admis de l'instruction POP sont:


POP AX registre
POP word [@] une case mmoire de 16 bits.

Figure III.2 montre le fonctionnement de l'instruction POP BX aprs excution.

19
Figure III.2 : Fonctionnement de l'instruction POP

POPF : Dpilement de registre FLAG depuis le sommet de la Pile (STACK SEGMENT).

III.3.3 Instruction XCHG


Le format gnral de linstruction XCHG est : XCHG Op1, Op2.
Echange l'oprande Source Op2 avec l'oprande Destination Op1. Impossible sur segment.
XCHG AL, AH
XCHG [@], AH
XCHG AH, [@]

III.4 Les instructions arithmtiques


Avec le 8086 on a les instructions arithmtiques de base : laddition, la soustraction, la
multiplication et la division. Qui incluent diverses variantes. Plusieurs modes dadressage sont
possibles. Les oprations peuvent s'effectuer sur des nombres de 8 bits ou de 16 bits signs ou
non signs.

III.4.1 Instruction ADD


La forme gnrale de l'instruction ADD est : ADD destination, source.
L'instruction ADD Additionne l'oprande source et l'oprande destination avec rsultat dans
l'oprande destination, Destination destination + source.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, valeur immdiate.
Toutes les combinaisons autorises des deux oprandes sont numres ci-dessous:
Les FLAGs affects : CF ; OF; AF ; SF ; ZF ; PF.
Exemple : ADD AX, 4 ADD AX, BX ADD [@], BX ADD AX, [SI]

III.4.2 Instruction ADC


L'instruction ADC Additionne l'oprande source, l'oprande destination et le curry avec
rsultat dans l'oprande destination :
ADC Destination, Source ; Destination destination + source + CF.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, valeur immdiate.
Les FLAGs affects : CF ; OF; AF ; SF ; ZF ; PF.

20
III.4.3 Instruction INC
Incrmentation dun oprande.
INC Destination ; Destination destination+1.
La destination peut tre : registre, mmoire.
Les FLAGs affects : OF ; AF ; SF ; ZF ; PF
CF reste inchang
Pour incrmenter une case mmoire, il faut prciser la taille :
INC byte [ ], INC word [ ]

III.4.4 Instruction SUB


La forme gnrale de l'instruction SUB (Soustraction) est : SUB destination, source.
L'instruction SUB Soustrait l'oprande source et l'oprande destination et place le rsultat
dans l'oprande de destination. Destination destination source.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, valeur immdiate.
Les FLAGs affects : CF ; OF; AF ; SF ; ZF ; PF.

III.4.5 Instruction SBB


L'instruction SBB fait la soustraction entre deux oprandes avec carry.
SBB Destination, Source ; Destination destination source CF.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, valeur immdiate.
Les FLAGs affects : CF ; OF; AF ; SF ; ZF ; PF.

III.4.6 Instruction DEC


Dcrmentation dun oprande : DEC Destination ; Destination destination 1.
La destination peut tre : registre, mmoire.
Les FLAGs affects : OF ; AF ; SF ; ZF ; PF.
CF reste inchang.

III.4.7 Instruction NEG


Linstruction NEG donne le complment 2 de l'oprande Op : remplace Op par son
ngatif : NEG Destination ; Destination C2 (destination).
La destination peut tre : registre, mmoire.
Les FLAGs affects : CF ; OF; AF; SF ; ZF; PF.

III.4.8 Instruction CMP


Linstruction CMP fait la comparaison entre deux oprandes et positionne les drapeaux en
fonction du rsultat. Loprande Op1 nest pas modifi.
CMP Op1, Op2 ; Rsultat Op1 Op2.
Op1 peut tre : registre, mmoire.
Op2 peut tre : registre, mmoire, valeur immdiate.
Les FLAGs affects : CF ; OF ; AF ; SF ; ZF ; PF.

21
III.4.9 Instruction MUL
Cette instruction excute la multiplication entre laccumulateur et un oprande (non
sign) : MUL Oprande.
Si loprande est une valeur sur 8 bits : AX AL * Oprande.
Si loprande est une valeur sur 16 bits : DX : AX AX * Oprande.
L'oprande ne peut pas tre une donne, cest soit un registre soit une position mmoire,
dans ce dernier cas, il faut prciser la taille (byte ou word)
Les FLAGs affects : CF et OF si la partie haute du rsultat est non nulle. La partie haute
est AH pour la multiplication 8 bits et DX pour la multiplication 16 bits
Exemple :
MUL BL ; AL x BL AX
MUL CX ; AX x CX DX:AX

III.4.10 Instruction DIV


Cette instruction excute la Division entre laccumulateur et un oprande (non sign):
DIV Oprande.
Si loprande sur 8 bits : AL AX / Oprande ; AH Reste.
Si loprande sur 16 bits : AX (DX : AX) / Oprande ; DX Reste.
Loprande doit tre soit un registre soit une mmoire. Dans le dernier cas il faut prciser la
taille de loprande, exemple : DIV byte [adresse] ou DIV word [adresse].
Les FLAGs : CF ; OF ; ZF ; SF ; PF ; et AF sont inconnus (X).

III.4.11 Instructions IMUL et IDIV


La multiplication et la division de laccumulateur avec un oprande (sign).
Les mmes syntaxes que MUL et DIV.

III.5 Les instructions logiques


Ce sont des instructions qui permettent de manipuler des donnes au niveau des bits. Les
oprations logiques de base sont : ET ; OU ; OU exclusif ; dcalages et rotations.

III.5.1 Instruction AND


ET logique entre deux oprandes bit bit : AND Destination, Source ;
Destination destination (ET) source.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, immdiate.
Les FLAGs affects : ZF ; SF ; PF

III.5.2 Instruction OR
OU logique entre deux oprandes bit bit : OR Destination, Source ;
Destination destination (OU) source.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, immdiate.
Les FLAGs affects : ZF ; SF ; PF

22
III.5.3 Instruction XOR
OU Exclusif entre deux oprandes bit bit : XOR Destination, Source ;
Destination destination (ou exclusif) source.
La destination peut tre : registre, mmoire.
La source peut tre : registre, mmoire, immdiate.
Les FLAGs affects : ZF ; SF ; PF
Remarque : Astuces sur les instructions logiques (OR, XOR, AND) :
1. Forage 1 : cest le OR avec un 1 .
2. Masquage 0 : cest le AND avec un 0 .
3. Inverser un bit : cest le XOR avec un 1 .

III.5.4 Instruction TEST


L'instruction TEST effectue l'opration ET.
La diffrence est que l'instruction AND change l'oprande de destination, alors que
l'instruction TEST positionne uniquement les FLAG.
TEST Op1, Op2 ; Rsultat Op1 (ET) Op2.
Op1 peut tre : registre, mmoire.
Op2 peut tre : registre, mmoire, immdiate.
Les FLAGs affects : ZF ; SF ; PF

III.5.5 Instruction NOT


Complment 1 de loprande : NOT Destination.
La destination peut tre : registre, mmoire.

III.5.6 Instructions de Dcalages


Ces instructions dplacent dun certain nombre de positions les bits dun mot vers la gauche
ou vers la droite.
Dans les dcalages, les bits qui sont dplacs sont remplacs par des zros. Il y a les
dcalages logiques (oprations non signes) et les dcalages arithmtiques (oprations
signes).
Le 8086 prend en charge quatre instructions de dcalage diffrentes :

Shift Left

Shift Arithmetic
Left

Shift Right

Shift Arithmetic

Figure III.3 Les instructions de dcalage

23
Remarque : Les dcalages arithmtiques permettent de conserver le signe. Ils sont utiliss pour
effectuer des oprations arithmtiques comme des multiplications et des divisions par 2.
La forme gnrale des instructions de dcalage est : XXX destination, N
O: XXX est le mnmonique de dcalage (i.e., SHL, SHR, SAL, SAR),
La destination peut tre : registre, mmoire et l'oprande N peut tre soit une constante
(immdiat) soit le registre CL :
Exemples: SHL AX, 1
SHL AX, CL

III.5.7 Instructions de Rotations


Dans les rotations, les bits dplacs dans un sens sont rinjects de lautre ct du mot. Les
quatre oprations de rotation disponibles apparaissent dans la figure suivante :

Rotate Through CF
Left

Rotate Left

Rotate Through CF
Right

Rotate
Right

Figure III.4: instructions de rotation du registre ou de la mmoire indiquant la direction et


le fonctionnement de chaque rotation.

La forme gnrale des instructions de rotation est : XXX destination, N


O: XXX est la mnmonique de rotation (i.e., RCL, RCR, ROL, ROR),
Exemples: ROL AX, 1
ROL AX, CL

III.6 Les instructions de branchement


Les instructions de branchement (ou saut) permettent de faire un saut dans le programme, et
excuter une instruction beaucoup plus loigne, ou au contraire revenir en arrire. Il existe 3
types de saut :
saut inconditionnel ;
sauts conditionnels ;
appel de sous-programmes.

24
III.6.1 Instruction de saut inconditionnel
JMP label ; Provoque un saut sans condition la ligne portant l'tiquette label.
O label est un identificateur d'adresse de programme.

III.6.2 Instructions de sauts conditionnels


Instructions de sauts conditionnels sont conditionnes par l'tat des indicateurs (drapeaux)
qui sont eux mme positionns par les instructions prcdentes.
Jxxx label o: xxx dcrit la condition du saut.

Tableau 1: Liste des instructions de sauts conditionnels du 8086.

Remarque :

- Les termes suprieur et infrieur (above and below) pour les nombres non signs.
- Les termes plus grand et plus petit (greater than and less than) pour les nombres signs.

III.6.3 Instruction CALL


Appel d'une procdure (sous-programme) : CALL nom_ sous-programme
Le CPU fait plusieurs choses quand une instruction CALL est excute:
(1) Il ajuste le contenu du registre IP comme sil va excuter l'instruction suivante.

25
(2) Il stocke le contenu du registre IP dans la pile de programme.
(3) On ajuste le contenu du registre d'IP de nouveau pour pointer sur la premire instruction
de la procdure appele.
Lunit centrale continue excuter les instructions jusqu' ce qu'elle rencontre une
instruction RET.

III.6.4 Instruction RET


Un RET (Return) instruction de retour de sous-programme : RET
Quand le CPU rencontre une instruction RET, il effectue les actions suivantes :
(1) Il rcupre le contenu du registre IP stock dans la pile de programme par l'instruction
CALL.
(2) Il met la valeur restaure dans le registre IP et continue l'excution.
Le CPU revient ltat o il tait lorsque l'instruction CALL a t rencontre.

III.6.5 Instructions des interruptions


INT n: Appel linterruption logicielle n n
IRET : Cette instruction termine un sous-programme de traitement dune
interruption.

III.6.6 Instruction de boucles LOOP


L'instruction LOOP dcrmente le contenu de CX et provoque un saut relatif court si ce
dernier nest pas nul.
La forme gnrale d'une instruction de boucle est : LOOP label
O label est un identificateur d'adresse de programme.
L'instruction LOOP est quivalente au deux instructions :
DEC CX
JNZ label
La difrence entre les deux instructions ci-dessus et de l'instruction LOOP est que cette
dernire, n'affecte pas les tats des flags.
Le 8086 4 variations de l'instruction LOOP:
LOOPZ (Loop While Zero) ou LOOPE (Loop While Equal) : si le flag ZF=1 et si CX 0.
LOOPNZ (Loop While Not Zero) ou LOOPNE (Loop While Not Equal) : si le flag ZF=0
et si CX 0.
Ces variations permettent le droulement du programme pour deux conditions (le registre
CX et le drapeau zro (ZF) en mme temps).

III.7 Les instructions de manipulation de chaines


Dans le Cpu 8086 on a 5 instructions de manipulation de chanes :
MOVS, LODS, STOS sont des instructions de transfert, elles peuvent tre rptes l'aide du
prfixe REP
CMPS et SCAS sont des instructions de comparaisons, elles peuvent tre rptes l'aide du
prfixe REPZ

Remarque : Chacune des instructions existe en deux versions, entre deux octets, ou entre 2
words, le prfixe REP pour les instructions de transfert MOVS LODS STOS, Ce prfixe utilise
le registre CX comme un compteur de rptition.

26
Les prfixes REPE et REPZ : Rptition des instructions de comparaisons SCAS et CMPS
tant que ZF=1 et CX0.
Les prfixes REPNE et REPNZ : Rptition des instructions de comparaisons SCAS et
CMPS tant que ZF=0 et CX0.
Ces instructions sont utilises sans oprandes. les registres utiliss sont : pour la source
DS:SI, et pour la destination ES:DI. A chaque excution dune instruction de traitement de
chane, les registres dindexes sont incrments ou dcrments selon le flag DF de registre
dtat.
* DF = 0 : SI et DI sont incrments, (linstruction CLD mit (DF = 0))
* DF = 1 : SI et DI sont dcrments. (l instruction STD mit (DF = 1))
SI et DI sont incrments de 1 ou de 2 selon que l'opration s'effectue sur un octet
(byte) ou sur un mot de 16 bits (word).

MOVSB : Copie Le contenu dun octet de mmoire DS: [SI] dans un octet de mmoire
ES: [DI], puis auto inc/decrmente les registres SI et DI.

MOVSW : Copie Le contenu du mot de mmoire DS: [SI] dans le mot de mmoire ES:
[DI], puis auto inc/decrmente de 2 les registres SI et DI

LODSB : Copie l'octet source DS: [SI] dans AL puis inc/dcr le registre SI.

LODSW : Copie le mot source DS: [SI] dans AX puis inc/dcr de 2 le registre SI.

STOSB : Copie AL dans loctet destination ES: [DI] et inc/dcr le registre DI.

STOSW : Copie AX dans le mot destination ES: [DI] et inc/dcr de 2 le registre DI.

CMPSB : Compare l'octet source ES : [DI] avec l'octet destination DS: [SI], positionne
les indicateurs puis inc/dcrmente les registres SI et DI.

CMPSW : Compare le mot source ES : [DI] avec mot destination DS: [SI], positionne
les indicateurs puis inc/dcrmente de 2 les registres SI et DI

SCASB : Compare AL avec l'octet destination ES : [DI], positionne les indicateurs


puis inc/dcr le registre DI.

SCASW : Compare AX avec le mot destination ES : [DI], positionne les indicateurs


puis inc/dcr le registre DI de 2.

27
Chapitre 4 : Interfaage du microprocesseur 8086

Un systme microprocesseur trs simple est compos des parties suivantes:


(1) Microprocesseur 8086 (Minimum Mode)
(2) Gnrateur dhorloge 8284A (15 MHz Crystal)
(3) Bus systme (Demultiplexed and Buffered)
(4) Mmoire systme (ROM & RAM)
(5) I/O systme (Switches and LEDs)

IV.1 Microprocesseur 8086 (Minimum Mode)


Le 8086 a Deux modes de fonctionnement :
Mode minimum (MN/MX = 1): Ce mode permet de diminuer le nombre de circuits
extrieurs pour les systmes processeur unique. Le processeur prend en charge la gestion des
bus.
Mode maximum (MN/MX = 0) : ces signaux de commande sont produits par un
contrleur de bus, le 8288. Ce mode permet de raliser des systmes multiprocesseurs.

IV.2 Gnrateur dhorloge


Le 8284A est un circuit intgr conu spcialement pour les microprocesseurs 8086/8088.
Ce circuit fournit les fonctions ou les signaux de bases suivantes: gnration d'horloge, RESET,
READY.

Figure IV.1 : Interfaage du 8284 avec le 8086

IV.3 Bus systme (Demultiplexed and Buffered)


Avant dutiliser le microprocesseur 8086 avec les mmoires ou les interfaces E /S, les pines
multiplex (adresse /donnes et d'adresses/lignes d'tat) doivent tre dmultiplexes. Il faut aussi
amplifier le courant fourni par ces lignes pour pouvoir commander d'autres composants dans le
systme.
Le dmultiplexage des signaux AD0 AD15 (ouA16/S3 A19/S6) sefait laide dun
verrou (latch), ensemble de bascules D. cet vnement est indiqu par le signal ALE.
Circuit de demultiplexage A/D:
Exemples de bascules D: circuits 8282, 74373, 74573.

28
Figure IV.2 : bascules D circuits 8282

Si plus de 10 composants sont attachs aux broches de bus, l'ensemble du systme 8086 doit
tre amplifi. Les broches dmultiplexs (adresse bus A19-A0 et BHE) sont dj
amplifies par les verrous (latch). Donc, il faut amplifier le bus de donnes D15 - D0. Le bus de
donnes est bidirectionnel, nous devons utiliser des tampons (buffers) bidirectionnels :
Exemples de tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245 :

Figure IV.3 : circuits transmetteurs bidirectionnels 8286

Remarque : Les signaux de bus de contrle (M/IO, RD et WR) les signaux de bus de
contrle sont des signaux unidirectionnels. Par consquent, nous avons besoin d'utiliser des
tampons unidirectionnels tels que le buffer 74LS244.
La figure suivante montre la conception de bus systme de p 8086

29
Figure IV.4 : conception de bus systme de p 8086

IV.4 Mmoire systme (ROM & RAM)


Le microprocesseur 8086 20 bits d'adresses (A19 - A0) donc un espace mmoire Dune
capacit de 1 Mo.
Par consquent, le micro-processeur 8086 ncessite que cet espace mmoire soit organis en
deux banques (512 Ko chacune) appeles les banques paires et impaires.
La partie paire est connecte au bus de donnes D0/D7, et la partie impaire est connecte au
bus D8/D15. Ces deux banques sont slectionnes par A0 est BHE.
Puisque le 8086 a un espace mmoire Dune capacit de 1 Mo. Do la possibilit davoir
jusqu 8 blocs mmoire de 128Ko chacun.
Si on va utiliser deux boitiers mmoire RAM de 64 ko chacun. Donc on a 16 lignes
6 10 16
d'adresse (64K =2 x 2 = 2 ).

30
Le 8086 sera interfac la RAM comme suit:
Les lignes d'adresse les moins significatives A16-A1 sont utilises pour adresser des
emplacements de mmoire dans la RAM.
Les lignes d'adresse les plus significatives A19-A17 sont utilises pour slectionner la plage
d'adresses ncessaires dans l'espace de mmoire de 8086 (slectionner les deux boitiers RAM),
comme sur figure.

Dcodage Adressage

Figure IV.5 : interfaage de la mmoire.

Remarque : Le microprocesseur 8086 fournit trois signaux de commande RD, WR et M / IO qui


peuvent tre dcods comme reprsents sur la figure suivante : les signaux (MEMR, MEMW, IOR
et IOW).

31
Figure IV.6 : dcodage signaux lecture et criture mmoire et I/O.

IV.5 E/S systme (Switches and LEDs)


Les ports dE/S sont utiliss pour lchange de donnes entre le p et un priphrique.
Un port dE/S est similaire un emplacement mmoire sauf que chaque port doit avoir sa propre
adresse.
Avec les processeurs 80x86, on a 16 lignes dadresse pour le port dE/S avec une taille 64Ko.
Il existe deux mthodes diffrentes dinterface dE/S microprocesseur 8086:
E / S isol (adresse cartographique) ;
E / S Mapp en mmoire (adresse cartographique).

IV.5.1 Adresse cartographique


Les adresses des ports dE/S appartiennent au mme
espace mmoire que les circuits mmoires (Les adresses des
ports dE/S appartiennent au mme espace mmoire que les
circuits mmoires (on dit que les E/S sont mappes en
mmoire)

IV.5.2 Adressage indpendant


Le microprocesseur considre deux espaces
distincts :
Lespace dadressage des mmoires
Lespace dadressage des ports dE/S

32
Tableau IV.1: Comparaison entre Adressage cartographique et indpendant

Adresse cartographique Adressage indpendant


lespace dadressage des mmoires diminue contrairement ladressage
ladressage des ports dE/S se fait avec une cartographique, lespace mmoire total
adresse de mme longueur que pour les cases adressable nest pas diminu
mmoires ladressage des ports dE/S peut se faire
toutes les instructions employes avec des cases avec une adresse plus courte que les circuits
mmoires peuvent tre appliques aux ports mmoires
dE/S. les instructions utilises pour laccs la
Les mmes instructions permettent de lire et mmoire ne sont plus utilisables pour
crire dans la mmoire et les ports dE/S, tous les laccs aux ports dE/S, ceux-ci disposent
modes dadressages tant valables pour les E/S dinstructions spcifiques

Remarque : la mmoire et les ports I/O partage le mme bus de donnes et dadresse, cest Le
signal M/IO qui permet de diffrencier ladressage de la mmoire de ladressage des ports E/S :
pour un accs la mmoire, M/IO = 1;
pour un accs aux ports dE/S, M/IO = 0.

Les instructions utilises pour R/W dun port sont IN / OUT . Il existe deux types
daccs, accs direct et un autre indirect. Les registres utiliss sont laccumulateur AL / AX et le
registre de donnes DX . Les instructions directes d'E / S fournissent l'adresse de port (qui doit
tre un nombre compris entre 0 et FFh).
Si ladresse du port dE/S est sur un octet:

Lecture dun port dE/S Ecriture dun port dE/S


IN AL, @: lecture dun port sur 8 bits OUT @, AL: criture dun port sur 8 bits
IN AX, @: lecture dun port sur 16 bits OUT @, AX: criture dun port sur 16 bits

Pour accder la plage complte des ports d'E/S de 0000H FFFFH, les instructions
indirectes d'E / S doivent tre utilises.
Pour ces instructions, le registre DX doit tre prcharg avec l'adresse du port.
si ladresse du port dE/S est sur deux octets:

Lecture dun port dE/S Ecriture dun port dE/S


IN AL, DX : lecture dun port sur 8 bits OUT DX, AL : criture dun port sur 8 bits
IN AX, DX : lecture dun port sur 16 bits OUT DX, AX: criture dun port sur16 bits

O le registre DX contient ladresse du port dE/S : lire / crire.

33
Chapitre 5 : Les interfaces dentres/sorties

V.1 Dfinition
Une interface d'entres/sorties est un circuit permettant au Cpu de communiquer avec
l'environnement extrieur (priphrique) : clavier, cran, imprimante, processus industriel etc...
Les interfaces d'E/S sont connectes au microprocesseur travers les bus d'adresses de
donnes et de commandes.
Un circuit dE/S possde des registres pour grer les changes avec les priphriques :
Registre de configuration
Registre de donnes
A chaque registre est assigne une adresse : le microprocesseur accde un port dE/S en
spcifiant ladresse de lun de ses registres.
Intel a dvelopp plusieurs circuits intgr de contrle de priphrique conus pour soutenir
la famille de processeurs 80x86 tels que:
Le 8255A Programmable Peripheral Interface (PPI),
Le 8259 Programmable Interrupt Controller (PIC),
Le 8253/54 Programmable Interval Timer (PIT),
Le 8237 Programmable DMA Controller.

V.2 Linterface parallle 8255


Le rle dune interface parallle est de transfrer des donnes du microprocesseur vers un
priphrique et linverse en parallle. Le 8255 est une interface parallle programmable, elle peut
tre configure en entre et/ou en sortie par programme.
Le 8255 fournit 24 lignes dE/S qui peuvent tre organises en trois ports dE/S (A, B, et C)
de 8 bits chacun. De plus le8255 peut fonctionner selon 3 modes: mode 0, mode1 ou mode2.

Figure V.1: configuration des broches du 8255

34
Tableau V.1: Slection des ports de 8255

Figure V.2: Schma fonctionnel du 8255

35
Figure V.3: Structure du registre de commande

La figure prcdente montre le fonctionnement du PPI 8255 :


(a) Lorsque le bit 7 = 0, mise 1 ou 0 dune ligne du PORTC individuellement.
(b) Lorsque le bit 7 = 1, l'un des modes 0, 1, ou 2 peuvent tre programms.

Mode 0 (E/ S de base): Ports A et B


fonctionnent comme entres ou sorties. Le port C
est divis en deux groupes de 4 bits qui peuvent
tre configurs comme entres ou sorties.
Mode 1 : Il est utilis pour le dialogue avec
des priphriques ncessitant un asservissement
(contrle).Ports A et B fonctionnent comme des
entres ou sorties comme en mode 0. Port C est
utilis pour le contrle.
Mode 2: le port A est bidirectionnel (entre
et sortie).
Port C est utilis comme signaux du contrle. Port
B nest pas utilis.
Remarque : Ces modes peuvent aussi tre
mlangs. Par exemple, le port A peut tre
programm pour fonctionner en mode 2, tandis
que le port B fonctionne en mode 0.
Figure V.4 : Les trois modes de base du 8255

36
V.2.1 Interfaage de 8086 avec le 8255
On peut connecter le bus de donnes du
8255 sur les lignes de donnes de poids faible
du 8086 (D0 - D7) ou sur celles de poids fort
(D8 - D15).
Donc lun des deux signaux A0 ou
BHE doit tre utilise pour slectionner le 8255
alors les adresses des registres du 8255 se
trouvent des adresses paires (validation par
A0) ou impaires (validation par BHE).
Exemple :

A15-A12 A11-A8 A7-A4 A2 A1 A0


0000 0000 0000 0 0 0
0000 0000 0000 0 1 0
0000 0000 0000 1 0 0
0000 0000 0000 1 1 0

Chip Select (CS) Slection adresses


de port paires

V.3 Le 8279
Intel 8279 est un circuit intgr d'interface programmable clavier / l'cran :
Scans et encode jusqu' un clavier de 64-cl.
Contrle jusqu' un affichage numrique de 16 chiffres.
La Section Clavier possde une mmoire tampon de 8 caractres FIFO intgre.
L'affichage est command partir d'une RAM interne 16x8 qui mmorise les informations
d'affichage codes.

Figure V.5 : (a) Schma fonctionnel et (b) brochage du 8279.

37
Figure V.6: Interface du 8279 (Un clavier Hexa et afficheur 7 segments) avec le 8086.

V.4 Linterface srie 8250


Linterface entres/sorties permet dchanger des donnes entre le microprocesseur et un
priphrique soit dune manire parallle (un mot de 8 bits) ou dune manir srie (bit par bit).
Mais sur des distances suprieures quelques mtres, il est difficile de mettre en uvre une
transmission en parallle. On utilise alors une liaison srie.
Le circuit intgr 8250 est le composant charg de la gestion des transmissions sries
asynchrones il est appel UART (Universal Asynchronous Receiver Transmitter).
Il existe deux types de transmissions sries:
synchrone: les octets successifs sont transmis par blocs spars par des octets de
synchronisation.
asynchrone : chaque octet peut tre mis ou reu sans dure dtermine entre un octet et le
suivant ;

Figure V.7: Protocole de transmission de donnes asynchrone

dans le protocole de transmission de donnes on a que deux tats significatifs : 0 (ou low),

38
et 1 (ou high). Quand on ne transmet rien, la ligne est l'tat high (tension ngative). Comme le
montre la figure V.7,
Le bit de Start permettra au rcepteur de savoir que des donnes vont tre transmises;
Les bits de donnes sont transmis lun aprs lautre en commenant par le bit de poids
faible. Ils peuvent tre au nombre de 5, 6, 7 ou 8.
Le bit de parit est un bit supplmentaire dont la valeur dpend du nombre de bits de
donnes gaux 1. Il est utilis pour la dtection derreurs de transmission ;
Les bits de stop (1, 1.5 ou 2) marquent la fin de la transmission du caractre.

V.4.1 Structure de lUART

Figure V.8: Structure de lUART

L'UART est conue pour grer les signaux en provenance d'un modem. Aussi est-il
ncessaire de donner quelles broches sont utilises par
l'ETCD (Equipement Terminal de Communication de
Donnes).
signal Signification
TxD Transmit Data
RxD Receive Data
RTS Request To Send
CTS Clear To Send
DTR Data Terminal Ready
DSR Data Set Ready
DCD Data Carrier Detect
RI Ring Indicator

Figure V.9 : Brochage du 8250

Les 2 signaux TxD et RxD servent transmettre les donnes. Les autres signaux sont des
signaux de contrle de lchange de donnes.

39
Figure V.10 : Bornes du circuit UART 8250.

V.4.2 Les registres du 8250


Linterface 8250 possde plus de 8 registres de 8 bits permettant de grer la communication.
Ces registres sont lus et modifis par le processeur par le biais des instructions IN et OUT vues plus
haut.
Comme on ne dispose que de 3 bits dadresse :
(A0, A1 et A2), plusieurs registres doivent se partager la mme adresse La solution est
dutiliser un bit dun registre spcial, DLAB.
En fonction de ltat de DLAB (Divisor Latch Access Bit), on a accs soit au registre
dmission / rception, soit au diviseur dhorloge, soit au masque dinterruptions.

Dans ce cours on ne va pas tudier le fonctionnement du 8250 ni sa programmation car


dhabitude elle nest pas utilise dune faon individuelle mais elle fait partie du systme de
communication.

40
Chapitre 6 : Les interruptions

VI.1 Dfinition dune interruption


Dans un systme microprocesseur pour dialoguer avec ces priphriques le
microprocesseur a deux faons de communiquer avec ces derniers :
- polling (scrutation priodique) : En questionnant de faon continue le priphrique
pour vrifier que des donnes peuvent tre lues ou crites. Cela permettra de limiter les tches qui
pourraient tre accomplies par le micro-ordinateur.
- interruption : En l'interrompant lorsqu' un priphrique est prt lire ou crire des
donnes, avec une demande dinterruption (IRQ : Interrupt Request).
En utilisant cette technique, le processeur peut passer la plupart de son temps d'autres
tches, et nexcute une lecture des ports dE/S que lorsqu une donne est disponible.
Le processeur 8086 reoit les interruptions de trois sources diffrentes:
(1) interruptions processeur : cest le processeur lui-mme qui les gnre, en
raison d'un dfaut interne (par exemple, une tentative de diviser par zro)
(2) L'interruption logicielle : l'aide de linstruction INT n (couramment utilise
dans le PC pour accder au BIOS et fonctions DOS),
(3) interruptions matrielles : produites par lactivation des lignes INTR et NMI
du microprocesseur.
A la suite dune demande dinterruption par un priphrique :
le microprocesseur termine lexcution de linstruction en cours ;
il range le contenu des principaux registres sur la pile de sauvegarde : CS : IP, ags, ...
il met un accus de rception de demande dinterruption (Interrupt Acknowledge)
indiquant au circuit dE/S que la demande dinterruption est accepte.
il abandonne lexcution du programme en cours et va excuter un sous-programme de
service de linterruption (ISR : Interrupt Service Routine) ;
il termine lexcution de lISR avec l'instruction lRET (retour d'interruption).
les registres sont rcuprs partir de la pile et le microprocesseur reprend lexcution du
programme quil avait abandonn.
Le processeur 8086 a seulement 2 broches interruption matrielle: INM ; INTR.
- NMI (interruption non masquable) : Elle ne peut pas tre bloque; le processeur doit
rpondre. Pour cette raison l'entre NMI est habituellement rserve pour les fonctions
critiques du systme.
- INTR (Interruption) : Elle est masquable via le drapeau IF.
Pour (8086), l'adresse de la routine de service d'interruption est stocke dans 4
emplacements de mmoire conscutifs (un double-mot) dans une table de vecteur d'interruption
commenant l'adresse 00000h.
Remarque : adresse vecteur dinterruption = 4 type de linterruption
Exemple : interruption 10H, adresse du vecteur = 4 10H = 40H.

41
VI.2 Le contrleur programmable dinterruptions 8259

Le microprocesseur 8086 ne dispose que de deux lignes de demandes dinterruptions


matrielles (NMI et INTR). Pour pouvoir connecter plusieurs priphriques utilisant des
interruptions, on peut utiliser le contrleur programmable dinterruptions.
Un contrleur d'interruption programmable (PIC) fonctionne comme un directeur gnral
dans un environnement de systme command par interruption.
Il accepte les demandes provenant de l'quipement priphrique, dtermine laquelle des
demandes entrantes est de la plus haute importance (priorit), vrifie si la demande entrante a une
valeur de priorit plus leve que le niveau en cours dexcution et met une interruption vers le
processeur sur la base de cette dtermination.

Exemple : le rle de PIC 8259 :


recevoir des demandes dinterruptions des priphriques ;
rsoudre les priorits des interruptions ;
gnrer le signal INTR pour le 8086 ;
mettre le numro de linterruption sur le bus de donnes.

Le 8259A peut grer jusqu 8 demandes dinterruptions matrielles. Il est programm par le
logiciel du systme comme un priphrique d'E / S.
Une slection de modes de priorit est disponible pour le programmeur de sorte que la
manire dont les demandes sont traites par le 8259A peut tre configure pour correspondre ses
besoins du systme.
Les modes de priorit peuvent tre modifis ou reconfigurs dynamiquement tout moment
pendant le programme principal. Cela signifie que la structure d'interruption complte peut tre
dfinie selon les besoins.

42
VI.3 Brochage du 8259 :

Figure VI.1 : Brochage et Schema fonctionnel du 8259 .

Exemple : interfaage de 8259 avec le 8086 :

Figure VI.2 : interfaage de 8259 avec le 8086 .

Remarque : si le nombre de demandes dinterruptions est suprieur 8, on peut placer plusieurs


8259 en cascade.

43
VI.3 Le temporisateur programmable 8253/8254
On peut facilement excuter une boucle de temporisation mais lorsque le microprocesseur
excute la temporisation il ne peut plus rien faire dautre. Pour cela on fait appel un circuit
spcialis cest le PROGRAMMABLE TIMER.
Le 8253 programmable interval timer/counter est spcialement conu pour les circuits
dIntel. Le programmeur configure le 8253 pour correspondre ses besoins, initialise un des
compteurs du 8253 avec la quantit dsire, puis avec le mot de commande le 8253 prendra en
charge la temporisation et signalera la fin dexcution avec une interruption du CPU.

Figure VI.3 : Schma fonctionnel et les descriptions des broches du 8254.

Il y a trois registres de comptage de 16 bits, dont chacun peut tre programm comme un
timer ou un compteur d'vnements. Plus un registre de commande qui peut ne peut-tre qucrit.
Laccs aux registres du 8254 seffectue de la faon suivante :
Tableau VI.1: Description des oprations de base

CS RD WR A1 A0 fonction

0 1 0 0 0 Chargement compteur 0
0 1 0 0 1 Chargement compteur 1
0 1 0 1 0 Chargement compteur 2
0 1 0 1 1 Ecriture mot de mode
0 0 1 0 0 Lecture compteur 0
0 0 1 0 1 Lecture compteur 1
0 0 1 1 0 Lecture compteur 2
0 0 1 1 1 Etat de haute impdance
1 X X X X
0 1 1 X X

44
Table VI.2: Pin description of the 8254.

La programmation du 8254 se fait par lenvoi dun mot de commande dans le registre de
commande CR. Les bits 6 et 7 de ce mot de commande permettent de laffecter lun des trois
compteurs. Le format du mot de commande est le suivant :

45
On remarque que chaque compteur peut tre utilis selon lun des 6 modes possibles :
Mode 0 :
Il Permet au 8254 dtre utilis comme un compteur ou temporisateur. Dans ce mode, la
sortie est au niveau logique 0 Lorsque le dcomptage atteint 0, la sortie passe au niveau 1. On
notera que l'entre GATE doit tre un 1 logique pour permettre au compteur de compter. Si G
devient 0 au milieu du comptage, le compteur sarrte jusqu' ce que G redevient 1.

Mode 1 :
Le 8254 la fonction comme un monostable redclenchable. Un front montant sur la
gchette GATE dclenche le dcompte au top dhorloge qui suit. Alors la sortie passe 0 et sy
maintient jusqu ce que le dcompte arrive 0. Chaque front montant sur GATE relance le
processus partir du compte initial (si celui- ci na pas t modifi).
Mode 2 :
Cest le mode diviseur par n il permet au 8254 de gnrer une srie d'impulsions continues.
La sparation entre les impulsions est dtermine par le comptage. Par exemple, pour un compte de
10, la sortie est un tat logique 1 pendant neuf priodes d'horloge et 0 pour une priode d'horloge.
Ce cycle est rpt jusqu' ce que le compteur est programm avec un nouveau comptage ou jusqu'
ce que lentre G est place un niveau logique 0. L'entre G doit tre un 1 logique pour ce mode
pour gnrer une srie continue d'impulsions.
Mode 3:
Ce mode est similaire au mode 2 sauf que OUT passe au niveau bas lorsque la moiti du
compte initial est atteinte, soit N/2, et reste dans cet tat jusqu ce que le compte arrive 0 et le
cycle recommence. Comme pour le mode 2, un niveau 1 sur GATE valide le dcompte et un niveau
0 linhibe alors quun front montant le rinitialise. De ce fait, une valeur impaire amne (N+l)/2
avec sorties au niveau haut et (N-1)/2 au niveau bas.
Mode 4:
Ce mode est similaire au mode 0 sauf que OUT est au niveau haut pendant le dcomptage et
produit une seule impulsion ngative lorsque le compte devient nul.
Mode 5:
Ce mode est similaire au mode 4. Cependant il est dmarr par une impulsion de
dclenchement sur la broche G au lieu par le programme. Ce mode est galement similaire au mode
1, car il est redclenchable.

46
Figure VI.4 : Les six modes de fonctionnement pour le 8254. L'entre de G = 0 arrte le
compteur en mode 2, 3, et 4.

47
VI.4 DMA (Accs Direct la Mmoire)
Prcdemment, nous avons discut d'E / S de base et de traitement dinterruption.
Maintenant, nous nous tournons vers la forme finale d'E / S appel accs direct la mmoire
(DMA). La technique DMA offre laccs directe la mmoire pendant que le microprocesseur est
temporairement dsactiv. Ceci permet aux donnes d'tre transfres entre la mmoire et le
dispositif d'E / S une vitesse qui est limite uniquement par la vitesse des composants de
mmoire dans le systme ou le dispositif de commande DMA. Les transferts DMA sont utiliss de
nombreuses fins, mais plus frquents comme pour, transfert de donnes entre la mmoire et le
disque dur, transfert de donnes vers la carte graphique ou la carte de son, etc.
On utilise pour cela le contrleur de DMA un circuit intgr qui gre le transfert par DMA,
lors de linitialisation dun transfert par DMA, le contrleur de DMA ngocie laccs au bus de
donnes avec le microprocesseur via les deux broches HRQ et HLDA du microprocesseur :
Le cycle commence avec la requte du priphrique via une entre DREQ (pour Dma
REQuest) du DMAC.
Le DMAC positionne alors lentre HOLD du 8086 niveau haut, requrant ainsi que le
microprocesseur entre dans un tat HOLD qui laisse la main au DMAC.
Le microprocesseur rpond en terminant le cycle de bus en cours (sil y en a un) et met ses
adresses, donnes et la plupart des contrles en position ouverte (haute impdance). La broche
HLDA (pour HOLD Acknowledge) est positionne au niveau haut par le microprocesseur pour
accuser rception de la requte.
Dans un systme avec des tampons de bus dadresse, de donnes et de contrle, HDLA est
utilis pour dsactiver ces tampons de faon ce que le microprocesseur soit compltement
dconnect de la mmoire et des entres-sorties.
Lorsquil reoit HDLA, le DMAC applique DACK (pour Dma ACknowledge) au
priphrique requrant le service. Le DMAC contrle alors le systme, fournissant les signaux de
bus dadresse et de contrle comme si il tait le microprocesseur (ce quil est rellement).
Tant que le DMAC utilise les bus pour des transferts, le microprocesseur est inactif (et
rciproquement, lorsque le microprocesseur est actif, le DMAC est inactif). Lorsque le DMAC a
termin son travail, il met HOLD un niveau bas de faon ce que le microprocesseur reprenne la
main.

VI.5 Le 8237
Intel a conu le DMAC 8237 pour tre associ au microprocesseur 8080. Il est galement
utilis pour les microprocesseurs 8085 et 8086/88. Le 8237 est en fait un microprocesseur usage
spcial dont le travail est le transfert de donnes grande vitesse entre la mmoire et les E / S. la
Figure suivante montre le brochage et le diagramme du contrleur de DMA programmable 8237.
Le 8237 a quatre canaux pour transfrer les donnes, cest--dire quil peut tre reli
quatre priphriques. Bien entendu, un instant donn, un seul priphrique peut utiliser le DMAC
pour transfrer des donnes.
A chaque canal est associ deux signaux : DREQ et DACK. Il y a un seul signal HOLD et
un seul signal HLDA, ce qui signifie que les quatre canaux utilisent les mmes bus systme, mais le
DMAC dcide quel priphrique doit prendre le contrle partir dun registre des priorits qui peut
tre programm.

48
Figure VI.5 : (a) Schma fonctionnel et (b) brochage du contrleur DMA programmable
8237.

On ne va pas aller plus loin dans ltude du contrleur DMA programmable 8237 car il est
rarement utilis dune faon individuelle.

49
Bibliographie

[1] Brey, Barry B. The Intel microprocessors 8086/8088, 80186/80188, 80286, 80386, 80486,
Pentium, Pentium Pro processor, Pentium II, Pentium III, Pentium 4, and Core2 with 64-
bit extensions: architecture, programming, and interfacing ;8th ed; Pearson Prentice Hall ;
2009.
[2] D.a.godse A.p.godse. Microprocessors and Interfacing; first edition ; technical publications
pune ; 2009 .
[3] M.aumiaux . Les systmes microprocesseurs ; 2eme edition ; masson ; 1982.
[4] Intel The 8086 Family; Users Manual ; 1979.
[5] Dr J.Y. Haggge. MICROPROCESSEUR ; (cours Institut Suprieur des tudes
Technologiques de Rads) ; 2003
[6] A. Oumnad. MICROPROCESSEURS DE LA FAMILLE 8086.
[7] www.chipdocs.com
[8] www.datasheetcatalog.com

50

Vous aimerez peut-être aussi