Vous êtes sur la page 1sur 86

Institut Suprieur des Etudes Technologiques de Rad`s e e Dpartement de Gnie Electrique e e

MICROPROCESSEUR Support de cours

e e 4`me niveau Gnie Electrique

` Dr J.Y. Haggege
Ingnieur ENIT e Agrg de Gnie Electrique e e e Technologue a lISET de Rad`s ` e

2003

ii

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Table des mati`res e


1 Historique et volution des ordinateurs e 1.1 Prhistoire des ordinateurs . . . . . e 1.2 Machines lectromcaniques . . . . . . e e 1.3 Machines lectroniques . . . . . . . . . e 1.4 Machines actuelles . . . . . . . . . . . 1 1 1 1 2 3 3 4 5 6 6 11 11 11 12 13 14 16 17 19 19 20 20 26 29 32 33 33 33 37 38

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2 Architecture et fonctionnement dun microprocesseur 2.1 Structure dun calculateur . . . . . . . . . . . . . . . . . 2.2 Organisation de la mmoire centrale . . . . . . . . . . . . e 2.3 Circulation de linformation dans un calculateur . . . . . 2.4 Description matrielle dun microprocesseur . . . . . . . e 2.5 Fonctionnement dun microprocesseur . . . . . . . . . . . 3 Les 3.1 3.2 3.3 3.4 3.5 3.6 3.7 mmoires e Mmoires ROM et RAM . . . . . . . . . . . . . e Schma fonctionnel dune mmoire . . . . . . . e e Interfaage microprocesseur/mmoire . . . . . . c e Chronogrammes de lecture/criture en mmoire e e Connection de plusieurs bo tiers mmoire . . . . e Dcodage dadresses . . . . . . . . . . . . . . . e Classication des mmoires . . . . . . . . . . . . e

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

4 Le microprocesseur Intel 8086 4.1 Description physique du 8086 . . . . . . . . . 4.2 Schma fonctionnel du 8086 . . . . . . . . . . e 4.3 Description et utilisation des signaux du 8086 4.4 Organisation interne du 8086 . . . . . . . . . . 4.5 Gestion de la mmoire par le 8086 . . . . . . . e 4.6 Le microprocesseur 8088 . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

5 La programmation en assembleur du microprocesseur 8086 5.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e e 5.2 Les instructions de transfert . . . . . . . . . . . . . . . . . . . 5.3 Les instructions arithmtiques . . . . . . . . . . . . . . . . . . e 5.4 Les instructions logiques . . . . . . . . . . . . . . . . . . . . .
` HAGGEGE, 2003 cours de microprocesseur

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

ISET Rad`s e

iv 5.5 5.6 6 Les 6.1 6.2 6.3 6.4 6.5 7 Les 7.1 7.2 7.3 7.4 7.5

Table des mati`res e Les instructions de branchement . . . . . . . . . . . . . . . . . . . . . . . . 42 Mthodes de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . 48 e interfaces dentres/sorties e Dnitions . . . . . . . . . . . e Adressage des ports dE/S . . Gestion des ports dE/S par le Linterface parall`le 8255 . . . e Linterface srie 8250 . . . . . e . . . . . . 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 53 55 60 71 71 72 73 74 75 77 81

interruptions Dnition dune interruption . . . . . . . . . . . . . . . . e Prise en charge dune interruption par le microprocesseur Adresses des sous-programmes dinterruptions . . . . . . Les interruptions du 8086 . . . . . . . . . . . . . . . . . Le contrleur programmable dinterruptions 8259 . . . . o

Annexe - Jeu dinstructions du 8086 Bibliographie

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 1 Historique et volution des e ordinateurs


1.1 Prhistoire des ordinateurs e

Les premi`res machines ` calculer taient purement mcaniques : bouliers, abaques, ... e a e e (antiquit). e Premi`re vraie machine ` calculer : Pascal, 1642, machine a additionner. e a ` Machine ` multiplier : Leibniz, 1694, base sur les travaux de John Neper (1617, logaa e rithmes). e Premi`re machine programmable : mtier ` tisser, Jacquard, xviii`me si`cle, machine ` e e a e a cartes perfores. e e e e Machine programmable universelle : Babbage, xviii`me si`cle, non ralisable avec les technologies de lpoque (machines ` vapeur), principe des machines actuelles. e a

1.2

Machines lectromcaniques e e

Machine ` calculer a cartes perfores : Hermann Hollerith, 1885, facilite le recensement a ` e amricain. e Machines industrielles pour la comptabilit et les statistiques. Ces machines sont ` base e a de relais lectromcaniques (Aiken et Stibitz, 1936-1939). e e

1.3

Machines lectroniques e

Premi`re machine ` calculer lectronique : ENIAC, 1944, Eckert et Mauchly, 18000 tubes e a e lectroniques, machine a programme cbl. e ` a e Machine ` programme enregist : John Von Neumann, 1946, les instructions sont enrea e gistres dans la mmoire du calculateur : ordinateur. e e Premier ordinateur commercialis : SSEC dIBM, 1948. e Ordinateur a transistors : 1963, PDP5 de Digital Equipment Corporation (DEC), intro` duction des mmoires ` ferrites : mini-ordinateurs. e a
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

Chapitre 1 - Historique et volution des ordinateurs e

Micro-ordinateurs : 1969-70, utilisation des circuits intgrs LSI. e e Premier microprocesseur : Intel, 1971, microprocesseur 4004, puis 8008, premier microordinateur : le Micral, 1973, France, puis lAltair, 1975, Etats-Unis. Autres microprocesseurs : 8080 et 8085 dIntel, 6800 de Motorola, Z80 de Zilog : microprocesseurs 8 bits, dbut des annes 1980. e e Microprocesseurs 16 bits : 8086/8088 dIntel, 68000 de Motorola. Microprocesseurs 32 bits en 1986 : 80386 dIntel et 68020 de Motorola. Fabrication en grandes sries des micro-ordinateurs : 1977, Apple, Commodore, Tandy. e IBM PC + MS-DOS (Microsoft) en 1981.

1.4

Machines actuelles

Ordinateurs de plus en plus puissants, bass sur des microprocesseurs performants : Pene tium, Power PC, ... Nouvelles architectures de microprocesseurs : RISC. Applications multimdia, rseaux, ... e e Syst`mes embarqus : microcontrleurs, processeurs de traitement de signal (DSP), ... e e o

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 2 Architecture et fonctionnement dun microprocesseur


2.1 Structure dun calculateur
unit centrale de traitement (UCT) horloge registres

unit de contrle

unit arithmtique et logique (UAL)

unit de transfert

unit d'entres/ sorties

monde extrieur (priphriques, capteurs, actionneurs, ...)

: ordre ou commande : donnes

mmoire centrale

Llment de base dun calculateur est constitu par lunit centrale de traitement ee e e (UCT, CPU : Central Processing Unit). LUCT est constitue : e dune unit arithmtique et logique (UAL, ALU : Arithmetic and Logic Unit) : e e cest lorgane de calcul du calculateur ; de registres : zones de stockage des donnes de travail de lUAL (oprandes, e e rsultats intermdiaires) ; e e dune unit de contrle (UC, CU : Control Unit) : elle envoie les ordres (ou come o mandes) ` tous les autres lments du calculateur an dexcuter un programme. a ee e La mmoire centrale contient : e le programme a excuter : suite dinstructions lmentaires ; ` e ee les donnes ` traiter. e a
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

Lunit dentres/sorties (E/S) est un intermdiaire entre le calculateur et le monde e e e extrieur. e Lunit de transfert est le support matriel de la circulation des donnes. e e e Les changes dordres et de donnes dans le calculateur sont synchroniss par une horloge e e e qui dlivre des impulsions (signal dhorloge) a des intervalles de temps xes. e ` Dnition : un microprocesseur consiste en une unit centrale de traitement (UAL + e e registres + unit de contrle) enti`rement contenue dans un seul circuit intgr. Un cale o e e e culateur construit autour dun microprocesseur est un microcalculateur ou un microordinateur. Remarque : un circuit intgr qui inclut une UCT, de la mmoire et des priphriques e e e e e est un microcontrleur. o

2.2

Organisation de la mmoire centrale e

La mmoire peut tre vue comme un ensemble de cellules ou cases contenant chacune e e une information : une instruction ou une donne. Chaque case mmoire est repre par e e ee un numro dordre unique : son adresse. e Reprsentation : e
adresse des cases mmoire (gnralement note en hexadcimal)

12H contenu des cases mmoire C6H 05H 3EH

0003H 0002H 0001H 0000H

largeur des cases mmoire : en gnral 1 octet (8 bits) = unit d'adressage

Une case mmoire peut tre lue ou crite par le microprocesseur (cas des mmoires e e e e vives) ou bien seulement lue (cas des mmoires mortes). e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

2.3 - Circulation de linformation dans un calculateur

2.3

Circulation de linformation dans un calculateur

microprocesseur

mmoire

E/S

BUS
Le microprocesseur change des informations avec la mmoire et lunit dE/S, sous forme e e e de mots binaires, au moyen dun ensemble de connexions appel bus. Un bus permet e de transfrer des donnes sous forme parall`lle, cest-`-dire en faisant circuler n bits e e e a simultanment. e Les microprocesseurs peuvent tre classs selon la longueur maximale des mots binaires e e quils peuvent changer avec la mmoire et les E/S : microprocesseurs 8 bits, 16 bits, e e 32 bits, ... Le bus peut tre dcompos en trois bus distincts : e e e le bus dadresses permet au microprocesseur de spcier ladresse de la case e mmoire ` lire ou a crire ; e a `e le bus de donnes permet les transferts entre le microprocesseur et la mmoire ou e e les E/S ; le bus de commande transmet les ordres de lecture et dcriture de la mmoire et e e des E/S.
priphriques bus de donnes 16 bus d'adresses bus de commande
ISET Rad`s e

largeur du bus (nombre de bits en parallle) 8

microprocesseur

mmoire

E/S

Remarque : les bus de donnes et de commande sont bidirectionnels, le bus dadresse e est unidirectionnel : seul le microprocesseur peut dlivrer des adresses (il existe une e drogation pour les circuits dacc`s direct ` la mmoire, DMA). e e a e
` HAGGEGE, 2003 cours de microprocesseur

priphriques

La ralisation matrielle des ordinateurs est gnralement base sur larchitecture de Von e e e e e Neumann :

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

2.4

Description matrielle dun microprocesseur e

Un microprocesseur se prsente sous la forme dun circuit intgr muni dun nombre e e e gnralement important de broches. Exemples : e e 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 reprsenter un microprocesseur par son schma fonctionnel : e e

alimentation n bits bus d'adresses

horloge reset microprocesseur signaux de commande du microprocesseur

p bits bus de donnes

bus de commande

2.5

Fonctionnement dun microprocesseur

Un microprocesseur excute un programme. Le programme est une suite dinstructions e stockes dans la mmoire. Une instruction peut tre code sur un ou plusieurs octets. e e e e Format dune instruction :

opration effectuer

oprande 1

oprande 2

donnes traites par l'opration


Exemple : e e ADDITIONNER case mmoire 1, case mmoire 2
opration e oprandes e cours de microprocesseur ` HAGGEGE, 2003

ISET Rad`s e

2.5 - Fonctionnement dun microprocesseur Rangement en mmoire : e

oprande p instruction n

oprande 2 oprande 1 code opratoire de l'addition 3EH

0002H 0001H 0000H

Pour excuter les instructions dans lordre tabli par le programme, le microprocesseur e e doit savoir a chaque instant ladresse de la prochaine instruction a excuter. Le micropro` ` e cesseur utilise un registre contenant cette information. Ce registre est appel pointeur e dinstruction (IP : Instruction Pointer) ou compteur dinstructions ou compteur ordinal. Exemple :

pointeur d'instruction 3A2BH adresse de la prochaine instruction excuter

oprande p instruction n 3A2BH

oprande 2 oprande 1 instruction 1

0002H 0001H 0000H

Remarque : la valeur initiale du pointeur dinstruction est xe par le constructeur e du microprocesseur. Elle vaut une valeur bien dnie ` chaque mise sous tension du e a microprocesseur ou bien lors dune remise a zro (reset). ` e Pour savoir quel type dopration doit tre excut (addition, soustraction, ...), le mie e e e croprocesseur lit le premier octet de linstruction pointe par le pointeur dinstruction e (code opratoire) et le range dans un registre appel registre dinstruction. Le code e e opratoire est dcod par des circuits de dcodage contenus dans le microprocesseur. Des e e e e signaux de commande pour lUAL sont produits en fonction de lopration demande qui e e est alors excute. e e Remarque : pour excuter une instruction, lUAL utilise des registres de travail, e exemple : laccumulateur, registre temporaire recevant des donnes intermdiaires. e e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

Pendant que linstruction est dcode, le pointeur dinstruction est incrment de faon ` e e e e c a pointer vers linstruction suivante :
pointeur d'instruction 3A2DH instruction n+1 oprande p 3A2BH instruction n 3A2DH 3A2CH 3A2BH

puis le processus de lecture et de dcodage des instructions recommence. e A la suite de chaque instruction, un registre du microprocesseur est actualis en fonction e du dernier rsultat : cest le registre dtat du microprocesseur. Chacun des bits du e e registre dtat est un indicateur dtat ou ag (drapeau). e e Exemple : registre dtat du microprocesseur Z80 : e
7 S 6 Z 5 4 AC 3 2 P/O 1 N 0 C

signe

zro

retenue auxiliaire

soustraction retenue parit/ (carry) dpassement

Les indicateurs dtat sont activs lorsquune certaine condition est remplie, exemple : le e e ag Z est mis a 1 lorsque la derni`re opration a donn un rsultat nul, le ag C est mis ` e e e e ` un lorsque le rsultat dune addition poss`de une retenue, ... a e e Les indicateurs dtat sont utiliss par les instructions de saut conditionnels : en fonction e e de ltat dun (ou plusieurs) ags, le programme se poursuit de mani`re dirente. e e e Toutes ces tapes (lecture de linstruction, dcodage, excution) sont synchronises par e e e e un squenceur qui assure le bon droulement des oprations : e e e
mmoire horloge bus d'adresse pointeur d'instruction bus de commande : "lire la mmoire" registre d'instruction

squenceur

bus de donnes

micro-code

dcodeur

excution
` HAGGEGE, 2003

ISET Rad`s e

cours de microprocesseur

2.5 - Fonctionnement dun microprocesseur

Pour excuter le programme contenu dans la mmoire centrale, le squenceur du microproe e e cesseur excute lui-mme un programme appel micro-code, contenu dans une mmoire e e e e morte a lintrieur du microprocesseur. ` e Le squenceur est dirig par une horloge qui dlivre un signal de frquence donne pere e e e e mettant dencha ner les direntes tapes de lexcution dune instruction : e e e
cycle d'instruction priode d'horloge (microcycle)

T1 recherche de l'instruction

T2 dcodage

T3 excution instruction suivante

Chaque instruction est caractrise par le nombre de priodes dhorloge (ou microcycles) e e e quelle utilise (donne fournie par le fabricant du microprocesseur). e Exemple : horloge a 5 MHz, priode T = 1/f = 0, 2 s. Si linstruction sexcute en 3 ` e e microcycles, la dure dexcution de linstruction est : 3 0, 2 = 0, 6 s. e e Lhorloge est constitue par un oscillateur a quartz dont les circuits peuvent tre internes e ` e ou externes au microprocesseur. Structure compl`te dun microprocesseur simple : pour fonctionner, un microprocesseur e ncessite donc au minimum les lments suivants : e ee
registres pointeur d'instruction registre d'instruction accumulateur indicateurs d'tat squenceur horloge dcodeur d'instructions

Unit Arithmtique et Logique (UAL)

quartz

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

10

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 3 Les mmoires e


3.1 Mmoires ROM et RAM e

On distingue deux types de mmoires : e les mmoires vives (RAM : Random Access Memory) ou mmoires volatiles. Elles e e perdent leur contenu en cas de coupure dalimentation. Elles sont utilises pour e stocker temporairement des donnes et des programmes. Elles peuvent tre lues et e e crites par le microprocesseur ; e les mmoires mortes (ROM : Read Only Memory) ou mmoires non volatiles. e e Elles conservent leur contenu en cas de coupure dalimentation. Elles ne peuvent tre que lues par le microprocesseur (pas de possibilit dcriture). On les utilise e e e pour stocker des donnes et des programmes de mani`re dnitive. e e e Les mmoires sont caractrises par leur capacit : nombre total de cases mmoire contee e e e e nues dans un mme bo e tier.

3.2

Schma fonctionnel dune mmoire e e


A0 A1 A2 An-1 RAM ou ROM D0 D1 D2 Dp-1

n lignes d'adresses

p lignes de donnes (le plus souvent, p = 8)

actifs l'tat bas

signal de lecture : RD ou OE signal d'criture (RAM) : WR validation de botier : CS (chip select)

Le nombre de lignes dadresses dpend de la capacit de la mmoire : n lignes dadresses e e e n e permettent dadresser 2 cases mmoire : 8 bits dadresses permettent dadresser 256 oc` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

12

Chapitre 3 - Les mmoires e

tets, 16 bits dadresses permettent dadresser 65536 octets (= 64 Ko), ... Exemple : mmoire RAM 6264, capacit = 8K 8 bits : 13 broches dadresses A0 a A12, e e ` 213 = 8192 = 8 Ko.

3.3

Interfaage microprocesseur/mmoire c e
microprocesseur D0 D1 donnes D7 D7 An-1 commandes RD WR RD WR CS A0 A1 A2 An-1 D0 D1 mmoire A0 A1 A2

adresses

Reprsentation condense (plus pratique) : e e


microprocesseur D0 D1 donnes D7 D7 An-1 commandes RD WR RD WR CS A0 A1 A2 n An-1 bus 8 D0 D1 mmoire A0 A1 A2

adresses

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

3.4 - Chronogrammes de lecture/criture en mmoire e e

13

3.4

Chronogrammes de lecture/criture en mmoire e e

Une caractristique importante des mmoires est leur temps dacc`s : cest le temps qui e e e scoule entre linstant o` ladresse de la case mmoire est prsente sur le bus dadresses e u e e e et celui o` la mmoire place la donne demande sur le bus de donnes. Ce temps varie u e e e e entre 50 ns (mmoires rapides) et 300 ns (mmoires lentes). e e Chronogramme de lecture en mmoire : e

une priode d'horloge

horloge temps d'tablissement de l'adresse adresse stable bus d'adresses lecture interdite commande de lecture temps d'accs bus de donnes valeurs non significatives donne stable donne sur le bus adresse sur le bus (0 ou 1) lecture autorise

Remarque : si le temps dacc`s dune mmoire est suprieur a une priode dhorloge e e e ` e (mmoire lente), le microprocesseur peut accorder a la mmoire un temps supplmentaire e ` e e (une ou plusieurs priodes dhorloge), a la demande de celle-ci. Ce temps supplmentaire e ` e est appel temps dattente (wait time : TW ) : e
signal de lecture microprocesseur demande de temps d'attente
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

mmoire

14 Chronogramme dcriture en mmoire : e e

Chapitre 3 - Les mmoires e

horloge

bus d'adresses

adresse sur le bus

bus de donnes pallier de scurit commande de lecture

donne sur le bus

criture autorise

3.5

Connexion de plusieurs bo tiers mmoire sur le e bus dun microprocesseur

Les bo tiers mmoire poss`dent une broche note CS : Chip Select. Lorsque cette broche e e e est active (tat bas), le circuit peut tre lu ou crit. Lorsquelle est inactive( tat haut), e e e e le circuit est exclu du service : ses broches de donnes D0 ` D7 passent a ltat de haute e a ` e impdance : tout se passe comme si la mmoire tait dconnecte du bus de donnes du e e e e e e microprocesseur, do` la possibilit de connecter plusieurs bo u e tiers mmoire sur un mme e e e ` e e bus : un seul signal CS doit tre actif a un instant donn pour viter les conits entre les dirents bo e tiers. Exemple : connexion de trois bo tiers mmoire dune capacit de 8 Ko chacun (13 lignes e e dadresses) sur un bus dadresse de 16 bits :
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

3.5 - Connection de plusieurs bo tiers mmoire e


13 microprocesseur A0 A1 A2 A12 A13 A14 A15 bus d'adresses A0 - A12 mmoire 1 A0 A1 A2 8 Ko A12 CS RD WR D0 D1 D7 mmoire 2 A0 A1 A2 8 Ko A12 CS RD WR D0 D1 D7 mmoire 3 A0 A1 A2 8 Ko A12 CS RD WR D0 D1 D7

15

D0 D1 D7 RD WR

signaux de selection de botier 8

bus de donnes D0-D7

Dans un mme bo e tier, une case mmoire est dsigne par les bits dadresses A0 ` A12 : e e e a A12 0 A11 0 ... ... 0000H A1 0 A0 0 ` a A12 1 A11 1 ... ... 1FFFH A1 1 A0 1

` ` Pour atteindre la mmoire no 1, il faut mettre a 1 le bit A13 et a 0 les bits A14 et A15. e La plage dadresses occupe par cette mmoire est donc : e e A15 0 A14 0 A13 A12 ... 0 ... 1 2000H A0 0 ` a A15 0 A14 0 A13 A12 ... 1 ... 1 3FFFH A0 1

De mme, pour la mmoire no 2, on doit avoir A13 = 0, A14 = 1 et A15 = 0 do` la plage e e u dadresses occupe cette mmoire : e e A15 0 A14 1 A13 A12 ... 0 ... 0 4000H A0 0 ` a A15 0 A14 1 A13 A12 ... 1 ... 0 5FFFH A0 1

Pour la mmoire no 3, on doit avoir A13 = 0, A14 = 0 et A15 = 1 do` la plage dadresses e u occupe cette mmoire : e e A15 1 A14 0 A13 A12 ... 0 ... 0 8000H A0 0 ` a A15 1 A14 0 A13 A12 ... 1 ... 0 9FFFH A0 1

On en dduit la cartographie ou mapping de la mmoire visible par le microprocesseur : e e


` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

16
FFFFH

Chapitre 3 - Les mmoires e

9FFFH mmoire no 3 8000H mmoire relle implante mmoire totale adressable par le microprocesseur

5FFFH mmoire no 2 mmoire no 1 2000H 0000H 4000H 3FFFH

3.6

Dcodage dadresses e

Les trois bits A13, A14 et A15 utiliss prcdemment fournissent en fait 8 combinaisons, e e e de 000 a 111, do` la possibilit de connecter jusqu` 8 bo ` u e a tiers mmoire de 8 Ko sur le e bus. La mmoire totale implante devient donc de 8 8 Ko = 64 Ko : valeur maximale e e possible avec 16 bits dadresses. Pour cela, il faut utiliser un circuit de dcodage dadresses, dans ce cas : un dcodeur e e 3 vers 8.

A0 A12 microprocesseur
A15 A14 A13

mmoire no 0

D0 D7

2 3 CS 4 5 CS CS 6 7 CS CS CS CS CS

A B C

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

dcodeur 3 vers 8 (ex: 74138)


ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

3.7 - Classication des mmoires e Table de vrit du dcodeur dadresses : e e e C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0

17

Le mapping de la mmoire devient ainsi : e


FFFFH mmoire n 7 mmoire no 6 C000H BFFFH mmoire no 5 A000H 9FFFH mmoire no 4 mmoire no 3 mmoire no 2 mmoire no 1 mmoire no 0 2000H 1FFFH 0000H 8000H 7FFFH 6000H 5FFFH 4000H 3FFFH
o

E000H DFFFH

3.7

Classication des mmoires e

Jusqu` la n des annes 1970, on utilisait des mmoires ` tores magntiques, lentes et a e e a e de faibles capacits. Actuellement, on nutilise plus que des mmoires ` semiconducteurs. e e a
mmoires semiconducteurs mmoires mortes ROM
` HAGGEGE, 2003

mmoires vives DRAM SRAM


ISET Rad`s e

PROM EPROM EEPROM


cours de microprocesseur

18 Mmoires mortes : e

Chapitre 3 - Les mmoires e

ROM : Read Only Memory. Mmoire ` lecture seule, sans criture. Son contenu e a e est programm une fois pour toutes par le constructeur. Avantage : faible cot. e u Inconvnient : ncessite une production en tr`s grande quantit. e e e e PROM : Programmable Read Only Memory. ROM programmable une seule fois par lutilisateur (ROM OTP : One Time Programming) en faisant sauter des fusibles. Ncessite un programmateur spcialis : application dune tension de programmation e e e (21 ou 25 V) pendant 20 ms. EPROM : Erasable PROM, appele aussi UVPROM. ROM programmable lectrie e quement avec un programmateur et eaable par exposition a un rayonnement ultrac ` violet pendant 30 minutes. Famille 27nnn, exemple : 2764 (8 Ko), 27256 (32 Ko). Avantage : reprogrammable par lutilisateur. EEPROM : Electrically Erasable PROM. ROM programmable et eaable lectric e quement. Lecture ` vitesse normale ( 100 ns). Ecriture (= eacement) tr`s lente a e ( 10 ms). Application : les EEPROM contiennent des donnes qui peuvent tre e e modies de temps en temps, exemple : param`tres de conguration des ordinateurs. e e Avantage : programmation sans extraction de la carte et sans programmateur. Inconvnient : cot lev. e u e e Mmoires vives : e SRAM : Static Random Access Memory. Mmoire statique a acc`s alatoire, a base e ` e e ` de bascules ` semiconducteurs ` deux tats (bascules RS). Famille 62nnn, exemple : a a e 62128 (16 Ko). Avantage : tr`s rapide, simple dutilisation. Inconvnient : compliqu e e e ` raliser. a e DRAM : Dynamic RAM. Base sur la charge de condensateurs : condensateur e charg = 1, condensateur dcharg = 0. Avantage : intgration leve, faible cot. e e e e e e u Inconvnient : ncessite un rafra e e chissement priodique ` cause du courant de fuite e a des condensateurs. Application : ralisation de la mmoire vive des ordinateurs e e (barettes mmoire SIMM : Single In-line Memory module). e

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 4 Le microprocesseur Intel 8086


4.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 bo e tier DIP (Dual In-line Package) ` a 40 broches :
GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND
` HAGGEGE, 2003

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

VCC AD15 A16/S3 A17/S4 A18/S5 A19/S6 BHE/S7 MN/MX RD HOLD HLDA WR M/IO DT/R DEN ALE INTA TEST READY RESET
ISET Rad`s e

8086

(mode maximum)

(RQ/GT0) (RQ/GT1)

(LOCK)
(S2) (S1) (S0) (QS0) (QS1)

cours de microprocesseur

20

Chapitre 4 - Le microprocesseur Intel 8086

4.2

Schma fonctionnel du 8086 e


alimentation VCC GND

horloge

CLK RESET

A19 A16 AD15 8086 AD0 WR bus d'adresses/ donnes

contrle du microprocesseur

READY MN/MX TEST

INTA interruptions NMI INTR

RD M/IO ALE BHE DEN signaux de contrle

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

4.3

Description et utilisation des signaux du 8086

CLK : entre du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce e signal provient dun gnrateur dhorloge : le 8284. e e
4,77 MHz quartz 14,318 MHz 8284 CLK READY 8086 RESET gnrateur d'horloge
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

4.3 - Description et utilisation des signaux du 8086

21

RESET : entre de remise ` zro du microprocesseur. Lorsque cette entre est mise ` e a e e a ltat haut pendant au moins 4 priodes dhorloge, le microprocesseur est rinitialis : il e e e e va excuter linstruction se trouvant a ladresse FFFF0H (adresse de bootstrap). Le signal e ` de RESET est fourni par le gnrateur dhorloge. e e READY : entre de synchronisation avec la mmoire. Ce signal provient galement du e e e gnrateur dhorloge. e e TEST : entre de mise en attente du microprocesseur dun vnement extrieur. e e e e MN/MX : entre de choix du mode de fonctionnement du microprocesseur : e mode minimum (MN/MX = 1) : le 8086 fonctionne de mani`re autonome, il gn`re e e e lui-mme le bus de commande (RD, WR, ...) ; e mode maximum (MN/MX = 0) : ces signaux de commande sont produits par un contrleur de bus, le 8288. Ce mode permet de raliser des syst`mes multiproceso e e seurs.

NMI et INTR : entres de demande dinterruption. INTR : interruption normale, NMI e (Non Maskable Interrupt) : interruption prioritaire. INTA : Interrupt Acknowledge, indique que le microprocesseur accepte linterruption. HOLD et HLDA : signaux de demande daccord dacc`s direct ` la mmoire (DMA). e a e S0 ` S7 : signaux dtat indiquant le type dopration en cours sur le bus. a e e A16/S3 ` A19/S6 : 4 bits de poids fort du bus dadresses, multiplexs avec 4 bits a e dtat. e AD0 ` AD15 : 16 bits de poids faible du bus dadresses, multiplexs avec 16 bits a e de donnes. Le bus A/D est multiplex (multiplexage temporel) do` la ncessit dun e e u e e dmultiplexage pour obtenir sparment les bus dadresses et de donnes : e e e e 16 bits de donnes (microprocesseur 16 bits) ; e e 20 bits dadresses, do` 220 = 1 Mo despace mmoire adressable par le 8086. u

Chronogramme du bus A/D :


` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

22
1 cycle de bus T1 CLK T2 T3

Chapitre 4 - Le microprocesseur Intel 8086

T4

T1

T2

T3

T4

ADi

adresse

donne

adresse

donne

ALE lecture RD criture WR

Le dmultiplexage des signaux AD0 a AD15 (ou A16/S3 a A19/S6) se fait en mmorisant e ` ` e ladresse lorsque celle-ci est prsente sur le bus A/D, ` laide dun verrou (latch), ene a semble de bascules D. La commande de mmorisation de ladresse est gnre par le e e ee microprocesseur : cest le signal ALE, Address Latch Enable. Circuit de dmultiplexage A/D : e
LATCH ALE bus d'adresses 8086 H Q D x 20 A0 - A19 bus de donnes 20 AD0 - AD15 A16/S3 - A19/S6 D0 - D15 S3 -S6

Fonctionnement : si ALE = 1, le verrou est transparent (Q = D) ; si ALE = 0, mmorisation de la derni`re valeur de D sur les sorties Q ; e e les signaux de lecture (RD) ou dcriture (WR) ne sont gnrs par le microprocese e ee seur que lorsque les donnes sont prsentes sur le bus A/D. e e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

4.3 - Description et utilisation des signaux du 8086 Exemples de bascules D : circuits 8282, 74373, 74573.

23

AD0 - AD7 ou AD8 - AD15 ou A16/S3 - A19/S6 ALE

D0 D1 8282 D7 STROBE OE

Q0 Q1

Q7

A0 - A7 ou A8 - A15 ou A16 - A19

RD : Read, signal de lecture dune donne. e WR : Write, signal dcriture dune donne. e e e M/IO : Memory/Input-Output, indique si le 8086 adresse la mmoire (M/IO = 1) ou les entres/sorties (M/IO = 0). e DEN : Data Enable, indique que des donnes sont en train de circuler sur le bus A/D e (quivalent de ALE pour les donnes). e e e DT/R : Data Transmit/Receive, indique le sens de transfert des donnes : e e e DT/R = 1 : donnes mises par le microprocesseur (criture) ; DT/R = 0 : donnes reues par le microprocesseur (lecture). e c
1 cycle de bus T1 CLK T2 T3 T4

ADi

adresse

donne

ALE

DEN criture DT/R lecture

Les signaux DEN et DT/R sont utiliss pour la commande de tampons de bus (buers) e permettant damplier le courant fourni par le microprocesseur sur le bus de donnes. e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

24

Chapitre 4 - Le microprocesseur Intel 8086

Exemples de tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245.


A0 A1 AD0 - AD7 ou AD8 - AD15 commande du sens de transfert DT/R validation du transfert DEN A7 DIR EN 8286 D0 - D7 ou D8 - D15 x8 B7 B0 B1

lignes de donnes bufferises

BHE : Bus High Enable, signal de lecture de loctet de poids fort du bus de donnes. e Le 8086 poss`de un bus dadresses sur 20 bits, do` la capacit dadressage de 1 Mo ou e u e 512 Kmots de 16 bits (bus de donnes sur 16 bits). e Le mga-octet adressable est divis en deux banques de 512 Ko chacune : la banque e e infrieure (ou paire) et la banque suprieure (ou impaire). Ces deux banques sont e e slectionnes par : e e A0 pour la banque paire qui contient les octets de poids faible ; BHE pour la banque impaire qui contient les octets de poids fort.
A1 - A19 bus d'adresses

A1 A0 A2 A1

D0 D0 D1 D1 banque paire D7 D7

A19 A18 A0 CS A1 A0 A2 A1 D0 D8 D1 D9 banque impaire D7 D15 A19 A18 BHE D0 - D15 bus de donnes
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

CS

4.3 - Description et utilisation des signaux du 8086

25

Seuls les bits A1 ` A19 servent a dsigner une case mmoire dans chaque banque de a ` e e 512 Ko. Le microprocesseur peut ainsi lire et crire des donnes sur 8 bits ou sur 16 bits : e e BHE A0 0 0 0 1 1 0 1 1 octets transfrs ee les deux octets (mot complet) octet fort (adresse impaire) octet faible (adresse paire) aucun octet

Remarque : le 8086 ne peut lire une donne sur 16 bits en une seule fois, uniquement si e loctet de poids fort de cette donne est rang ` une adresse impaire et loctet de poids e ea faible a une adresse paire (alignement sur les adresses paires), sinon la lecture de cette ` donne doit se faire en deux oprations successives, do` une augmentation du temps e e u dexcution du transfert d ` un mauvais alignement des donnes. e ua e Ralisation des deux banques avec plusieurs bo e tiers mmoire : e
bus d'adresses A1 - A19 D0 D0 D1 D1 64 K x 8 D7 D7 A16 A15 A17 A A18 B A19 C 74138 A0 EN
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

A1 A0 A2 A1

CS A1 A0 A2 A1 64 K x 8 A16 A15 CS D0 D0 D1 D1 D7 D7

banque paire

A1 A0 A2 A1 64 K x 8

D0 D8 D1 D9 D7 D15

A16 A15 A17 A A18 B A19 C 74138 BHE EN


Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

CS A1 A0 A2 A1 64 K x 8 D7 D15 A16 A15 CS bus de donnes D0 - D15 D0 D8 D1 D9

banque impaire

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

26 Cration du bus syst`me du 8086 : e e

Chapitre 4 - Le microprocesseur Intel 8086

CLK 8284 RESET READY

BHE/S7 A19/S6 A16/S3 AD0 AD15 8086

8282 D STR Q

BHE A19 A16

8282 D STR 8282 D STR Q Q

A15 A8

WR RD M/IO

ALE DEN DT/R

A7 BUS SYSTEME commandes donnes B D7 D0 M/IO RD WR


` HAGGEGE, 2003

A0

A 8286 EN DIR

D15 D8

A 8286 EN DIR

4.4

Organisation interne du 8086

Le 8086 est constitu de deux units fonctionnant en parall`le : e e e lunit dexcution (EU : Execution Unit) ; e e lunit dinterface de bus (BIU : Bus Interface Unit). e
ISET Rad`s e cours de microprocesseur

adresses

4.4 - Organisation interne du 8086


8 bits AH registres gnraux BH CH DH SI pointeurs et index DI SP BP 8 bits AL BL CL DL = AX = BX = CX = DX 16 bits 16 bits DS SS CS ES IP

27

registres de segments pointeur d'instruction

bus de donnes interne

16

gnration d'adresses et contrle de bus

bus externe A/D multiplex + bus de contrle

registres temporaires

1 2 3 4 5 6 commandes de l'unit d'excution

file d'attente des instructions (6 octets)

UAL

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

Rle des deux units : o e lunit dinterface de bus (BIU) recherche les instructions en mmoire et les range e e dans une le dattente ; lunit dexcution (EU) excute les instructions contenues dans la le dattente. e e e Les deux units fonctionnent simultanment, do` une acclration du processus dexcution e e u ee e dun programme (fonctionnement selon le principe du pipe-line). Le microprocesseur 8086 contient 14 registres rpartis en 4 groupes : e Registres gnraux : 4 registres sur 16 bits. e e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

28 AX = (AH,AL) ; BX = (BH,BL) ; CX = (CH,CL) ; DX = (DH,DL).

Chapitre 4 - Le microprocesseur Intel 8086

Ils peuvent tre galement considrs comme 8 registres sur 8 bits. Ils servent a contee e ee ` nir temporairement des donnes. Ce sont des registres gnraux mais ils peuvent e e e tre utiliss pour des oprations particuli`res. Exemple : AX = accumulateur, CX e e e e = compteur. Registres de pointeurs et dindex : 4 registres sur 16 bits. Pointeurs : SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde de donnes en cours dexcution dun programme) ; e e BP : Base Pointer, pointeur de base, utilis pour adresser des donnes sur e e la pile. Index : SI : Source Index ; DI : Destination Index. Ils sont utiliss pour les transferts de cha e nes doctets entre deux zones mmoire. e Les pointeurs et les index contiennent des adresses de cases mmoire. e Pointeur dinstruction et indicateurs (ags) : 2 registres sur 16 bits. Pointeur dinstruction : IP, contient ladresse de la prochaine instruction a ` excuter. e Flags : 15 14 13 12 O 11 D 10 I T 9 8 S 7 Z 6 A 5 4 P 3 2 C 1 0

CF : indicateur de retenue (carry) ; PF : indicateur de parit ; e AF : indicateur de retenue auxiliaire ; ZF : indicateur de zro ; e SF : indicateur de signe ; TF : indicateur dexcution pas ` pas (trap) ; e a IF : indicateur dautorisation dinterruption ; DF : indicateur de dcrmentation ; e e OF : indicateur de dpassement (overow). e Registres de segments : 4 registres sur 16 bits. CS : Code Segment, registre de segment de code ;
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

4.5 - Gestion de la mmoire par le 8086 e

29

DS : Data Segment, registre de segment de donnes ; e SS : Stack Segment, registre de segment de pile ; ES : Extra Segment, registre de segment supplmentaire pour les donnes ; e e Les registres de segments, associs aux pointeurs et aux index, permettent au mie croprocesseur 8086 dadresser lensemble de la mmoire. e

4.5

Gestion de la mmoire par le 8086 e

Lespace mmoire adressable par le 8086 est de 220 = 1 048 576 octets = 1 Mo (20 bits e dadresses). Cet espace est divis en segments. Un segment est une zone mmoire de e e 64 Ko (65 536 octets) dnie par son adresse de dpart qui doit tre un multiple de 16. e e e Dans une telle adresse, les 4 bits de poids faible sont a zro. On peut donc reprsenter ` e e ladresse dun segment avec seulement ses 16 bits de poids fort, les 4 bits de poids faible tant implicitement ` 0. e a Pour dsigner une case mmoire parmi les 216 = 65 536 contenues dans un segment, il e e sut dune valeur sur 16 bits. Ainsi, une case mmoire est repre par le 8086 au moyen de deux quantits sur 16 bits : e ee e ladresse dun segment ; un dplacement ou oset (appel aussi adresse eective) dans ce segment. e e Cette mthode de gestion de la mmoire est appele segmentation de la mmoire. e e e e

1 Mo

FFFFFH

un segment (64 Ko)

case mmoire offset adresse multiple de 16

00000H

La donne dun couple (segment,oset) dnit une adresse logique, note sous la forme e e e segment : oset. Ladresse dune case mmoire donne sous la forme dune quantit sur 20 bits (5 digits e e e hexa) est appele adresse physique car elle correspond a la valeur envoye rellement e ` e e sur le bus dadresses A0 - A19.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

30

Chapitre 4 - Le microprocesseur Intel 8086

Correspondance entre adresse logique et adresse physique :

16 bits segment 20 bits + offset

4 bits 0000

16 bits adresse physique 20 bits


Ainsi, ladresse physique se calcule par lexpression : adresse physique = 16 segment + oset car le fait dinjecter 4 zros en poids faible du segment revient a eectuer un dcalage de e ` e 4 positions vers la gauche, cest a dire une multiplication par 24 = 16. ` A un instant donn, le 8086 a acc`s ` 4 segments dont les adresses se trouvent dans les e e a registres de segment CS, DS, SS et ES. Le segment de code contient les instructions du programme, le segment de donnes contient les donnes manipules par le programme, le e e e segment de pile contient la pile de sauvegarde et le segment supplmentaire peut aussi e contenir des donnes. e Le registre CS est associ au pointeur dinstruction IP, ainsi la prochaine instruction a e ` excuter se trouve a ladresse logique CS : IP. e `

1 Mo

FFFFFH

instruction excuter segment de code CS : IP offset = IP CS : 0000H

0
ISET Rad`s e

00000H
cours de microprocesseur ` HAGGEGE, 2003

4.5 - Gestion de la mmoire par le 8086 e

31

De mme, les registres de segments DS et ES peuvent tre associs ` un registre dindex. e e e a Exemple : DS : SI, ES : DI. Le registre de segment de pile peut tre associ aux registres e e de pointeurs : SS : SP ou SS : BP. Mmoire accessible par le 8086 a un instant donn : e ` e

1 Mo extra segment

FFFFFH ES : DI offset = DI ES : 0000H

segment de pile

SS : SP offset = SP SS : 0000H

segment de donnes

DS : SI offset = SI DS : 0000H

segment de code 0

CS : IP offset = IP CS : 0000H 00000H

Remarque : les segments ne sont pas ncessairement distincts les uns des autres, ils e peuvent se chevaucher ou se recouvrir compl`tement. e
1 Mo segment de pile segment de donnes segment de code SS : 0000H DS : 0000H CS : 0000H 0 00000H FFFFFH 1 Mo segment de code, de donnes et de pile FFFFFH

CS : 0000H DS : 0000H SS : 0000H

00000H

Le nombre de segments utilis dnit le mod`le mmoire du programme. e e e e


` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

32

Chapitre 4 - Le microprocesseur Intel 8086

Contenu des registres apr`s un RESET du microprocesseur : e IP = 0000H CS = FFFFH DS = 0000H ES = 0000H SS = 0000H Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la premi`re instruction e excute par le 8086 se trouve donc a ladresse logique FFFFH : 0000H, correspondant a e e ` ` ladresse physique FFFF0H (bootstrap). Cette instruction est gnralement un saut vers e e 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 donnes externe est e sur 8 bits au lieu de 16 bits, le bus de donnes interne restant sur 16 bits. e Le 8088 a t produit par Intel apr`s le 8086 pour assurer la compatibilit avec des circuits ee e e priphriques dj` existant, fabriqus pour les microprocesseurs 8 bits 8080 et 8085. e e ea e Dirences avec le 8086 : e les broches AD8 ` AD15 deviennent A8 a A15 (bus de donnes sur 8 bits) ; a ` e la broche BHE nexiste pas dans le 8088 car il ny a pas doctet de poids fort sur le bus de donnes ; e e la broche M/IO devient IO/M pour la compatibilit avec danciens circuits dE/S. Au niveau de larchitecture interne, pas de dirences avec le 8086 sauf que la le dattente e des instructions passe de 6 a 4 octets. `

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 5 La programmation en assembleur du microprocesseur 8086


5.1 Gnralits e e e

Chaque microprocesseur reconnait un ensemble dinstructions appel jeu dinstructions e (Instruction Set) x par le constructeur. Pour les microprocesseurs classiques, le nombre e dinstructions reconnues varie entre 75 et 150 (microprocesseurs CISC : Complex Instruction Set Computer). Il existe aussi des microprocesseurs dont le nombre dinstructions est tr`s rduit (microprocesseurs RISC : Reduced Instruction Set Computer) : entre 10 et e e 30 instructions, permettant damliorer le temps dexcution des programmes. e e Une instruction est dnie par son code opratoire, valeur numrique binaire dicile ` e e e a manipuler par ltre humain. On utilise donc une notation symbolique pour reprsenter e e les instructions : les mnmoniques. Un programme constitu de mnmoniques est appel e e e e programme en assembleur. Les instructions peuvent tre classes en groupes : e e instructions de transfert de donnes ; e instructions arithmtiques ; e instructions logiques ; instructions de branchement ...

5.2

Les instructions de transfert

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

34

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Syntaxe : MOV destination,source Remarque : MOV est labbrviation du verbe to move : dplacer. e e Il existe direntes faons de spcier ladresse dune case mmoire dans une instruction : e c e e ce sont les modes dadressage. Exemples de modes dadressage 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 donne est fournie e immdiatement avec linstruction : adressage immdiat. e e mov bl,[1200H] : transf`re le contenu de la case mmoire dadresse eective (oset) e e 1200H vers le registre BL. Linstruction comporte ladresse de la case mmoire o` e u se trouve la donne : adressage direct. Ladresse eective reprsente loset de la e e case mmoire dans le segment de donnes (segment dont ladresse est contenue dans e e le registre DS) : segment par dfaut. e
1 Mo FFFFFH mov bl, 1200H BL segment de donnes DS : 1200H offset = 1200H DS : 0000H

00000H

On peut changer le segment lors dun adressage direct en ajoutant un prxe de e segment, exemple : mov bl,es :[1200H]. On parle alors de forage de segment. c
1 Mo FFFFFH mov bl, es : 1200H BL extra segment ES : 1200H offset = 1200H ES : 0000H

00000H

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

5.2 - Les instructions de transfert

35

Remarque : dans le cas de ladressage immdiat de la mmoire, il faut indiquer le format e e de la donne : octet ou mot (2 octets) car le microprocesseur 8086 peut manipuler des e donnes sur 8 bits ou 16 bits. Pour cela, on doit utiliser un spcicateur de format : e e mov byte ptr [1100H],65H : transf`re la valeur 65H (sur 1 octet) dans la case e mmoire doset 1100H ; e mov word ptr [1100H],65H : transf`re la valeur 0065H (sur 2 octets) dans les cases e mmoire doset 1100H et 1101H. e
mov byte ptr 1100H , 65H mov word ptr 1100H , 65H

1100H

65H

1 octet

1101H 1100H

00H 65H

2 octets

Remarque : les microprocesseurs Intel rangent loctet de poids faible dune donne sur e plusieurs octets ` ladresse la plus basse (format Little Endian). a Modes dadressage volus : e e adressage bas : loset est contenu dans un registre de base BX ou BP. e Exemples : mov al,[bx] : transf`re la donne dont loset est contenu dans le registre de e e base BX vers le registre AL. Le segment associ par dfaut au registre BX est e e le segment de donnes : on dit que ladressage est bas sur DS ; e e mov al,[bp] : le segment par dfaut associ au registre de base BP est le e e segment de pile. Dans ce cas, ladressage est bas sur SS. e
1 Mo FFFFFH mov al, bx AL segment de donnes DS : BX offset = BX DS : 0000H segment de pile SS : BP offset = BP SS : 0000H 1 Mo FFFFFH mov al, bp AL

00000H

00000H

adressage index : semblable ` ladressage bas, sauf que loset est contenu dans e a e un registre dindex SI ou DI, associs par dfaut au segment de donnes. e e e Exemples : mov al,[si] : charge le registre AL avec le contenu de la case mmoire dont e loset est contenu dans SI ;
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

36

Chapitre 5 - La programmation en assembleur du microprocesseur 8086 mov [di],bx : charge les cases mmoire doset DI et DI + 1 avec le contenu e du registre BX.

Remarque : une valeur constante peut ventuellement tre ajoute aux registres de base e e e ou dindex pour obtenir loset. Exemple : mov [si+100H],ax qui peut aussi scrire e mov [si][100H],ax ou encore mov 100H[si],ax Les modes dadressage bass ou indexs permettent la manipulation de tableaux rangs e e e en mmoire. Exemple : e mov mov mov mov si,0 word ptr table[si],1234H si,2 word ptr table[si],5678H

Dans cet exemple, table reprsente loset du premier lment du tableau et le registre e ee SI joue le rle dindice de tableau : o

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

adressage bas et index : loset est obtenu en faisant la somme dun registre e e de base, dun registre dindex et dune valeur constante. Exemple : mov ah,[bx+si+100H] Ce mode dadressage permet ladressage de structures de donnes complexes : mae trices, enregistrements, ... Exemple : mov bx,10 mov si,15 mov byte ptr matrice[bx][si],12H Dans cet exemple, BX et SI jouent respectivement le rle dindices de ligne et de o colonne dans la matrice.
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

5.3 - Les instructions arithmtiques e

37

5.3

Les instructions arithmtiques e

Les instructions arithmtiques de base sont laddition, la soustraction, la multiplie cation et la division qui incluent diverses variantes. Plusieurs modes dadressage sont possibles. Addition : ADD oprande1,oprande2 e e Lopration eectue est : oprande1 oprande1 + oprande2. e e e e e Exemples : add ah,[1100H] : ajoute le contenu de la case mmoire doset 1100H a laccumue ` lateur AH (adressage direct) ; add ah,[bx] : ajoute le contenu de la case mmoire pointe par BX ` laccumulateur e e a AH (adressage bas) ; e add byte ptr [1200H],05H : ajoute la valeur 05H au contenu de la case mmoire e doset 1200H (adressage immdiat). e Soustraction : SUB oprande1,oprande2 e e Lopration eectue est : oprande1 oprande1 oprande2. e e e e e Multiplication : MUL oprande, o` oprande est un registre ou une case mmoire. e u e e Cette instruction eectue la multiplication du contenu de AL par un oprande sur 1 octet e ou du contenu de AX par un oprande sur 2 octets. Le rsultat est plac dans AX si les e e e donnes ` multiplier sont sur 1 octet (rsultat sur 16 bits), dans (DX,AX) si elles sont sur e a e 2 octets (rsultat sur 32 bits). e 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 Division : DIV oprande, o` oprande est un registre ou une case mmoire. e u e e Cette instruction eectue la division du contenu de AX par un oprande sur 1 octet ou le e contenu de (DX,AX) par un oprande sur 2 octets. Rsultat : si loprande est sur 1 octet, e e e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

38

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

alors AL = quotient et AH = reste ; si loprande est sur 2 octets, alors AX = quotient e 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 arithmtiques : e ADC : addition avec retenue ; SBB : soustraction avec retenue ; INC : incrmentation dune unit ; e e DEC : dcrmentation dune unit ; e e e IMUL : multiplication signe ; e IDIV : division signe. e

5.4

Les instructions logiques

Ce sont des instructions qui permettent de manipuler des donnes au niveau des bits. Les e oprations logiques de base sont : e ET ; OU ; OU exclusif ; complment ` 1 ; e a complment ` 2 ; e a dcalages et rotations. e Les dirents modes dadressage sont disponibles. e ET logique : AND oprande1,oprande2 e e Lopration eectue est : oprande1 oprande1 ET oprande2. e e e e e Exemple : mov al,10010110B mov bl,11001101B and al, bl
ISET Rad`s e

AL = 1 0 0 1 0 1 1 0 BL = 1 1 0 0 1 1 0 1 AL = 1 0 0 0 0 1 0 0
` HAGGEGE, 2003

cours de microprocesseur

5.4 - Les instructions logiques Application : masquage de bits pour mettre a zro certains bits dans un mot. ` e Exemple : masquage des bits 0, 1, 6 et 7 dans un octet :
7 6 5 4 3 2 1 0

39

0 1 0 1 0 1 1 1 0 0 1 1 1 1 0 0 masque 0 0 0 1 0 1 0 0 OU logique : OR oprande1,oprande2 e e Lopration eectue est : oprande1 oprande1 OU oprande2. e e e e e Application : mise ` 1 dun ou plusieurs bits dans un mot. a Exemple : dans le mot 10110001B on veut mettre a 1 les bits 1 et 3 sans modier les ` autres bits.
7 6 5 4 3 2 1 0

1 0 1

0 0 0

1 0 1

1 0 0 0 1 0 1 0 1 0 masque 1 1 0 1 1

Les instructions correspondantes peuvent scrire : e mov ah,10110001B or ah,00001010B Complment ` 1 : NOT oprande e a e Lopration eectue est : oprande oprande. e e e e Exemple : mov al,10010001B AL = 10010001B = 01101110B not al Complment ` 2 : NEG oprande e a e Lopration eectue est : oprande oprande + 1. e e e e Exemple : mov al,25 mov bl,12 AL = 25 + (12) = 13 neg bl add al,bl OU exclusif : XOR oprande1,oprande2 e e Lopration eectue est : oprande1 oprande1 oprande2. e e e e e Exemple : mise ` zro dun registre : a e mov al,25 AL = 0 xor al,al Instructions de dcalages et de rotations : ces instructions dplacent dun certain e e 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 e e e e e dcalages logiques (oprations non signes) et les dcalages arithmtiques (oprations e e e e e e signes). e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

40

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Dans les rotations, les bits dplacs dans un sens sont rinjects de lautre ct du mot. e e e e oe Dcalage logique vers la droite (Shift Right) : SHR oprande,n e e Cette instruction dcale loprande de n positions vers la droite. e e Exemple : mov al,11001011B shr al,1
avant 1 1 0 0 1 0 1 1 CF 1

aprs 0 1 1 0 0 1 0 1

entre dun 0 a la place du bit de poids fort ; le bit sortant passe a travers lindicateur e ` ` de retenue CF. Remarque : si le nombre de bits ` dcaler est suprieur a 1, ce nombre doit tre plac a e e ` e e dans le registre CL ou CX. Exemple : dcalage de AL de trois positions vers la droite : e mov cl,3 shr al,cl Dcalage logique vers la gauche (Shift Left) : SHL oprande,n e e Cette instruction dcale loprande de n positions vers la droite. e e Exemple : mov al,11001011B shl al,1
avant 1 CF 1 1 0 0 1 0 1 1

aprs 1 0 0 1 0 1 1 0

entre dun 0 ` la place du bit de poids faible ; le bit sortant passe a travers lindicateur e a ` de retenue CF. Mme remarque que prcdemment si le nombre de positions a dcaler est suprieur a 1. e e e ` e e ` Dcalage arithmtique vers la droite : SAR oprande,n e e e Ce dcalage conserve le bit de signe bien que celui-ci soit dcal. e e e Exemple : mov al,11001011B sar al,1
avant 1 1 0 0 1 0 1 1 CF 1

aprs 1 1 1 0 0 1 0 1

le bit de signe est rinject. e e


ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

5.4 - Les instructions logiques Dcalage arithmtique vers la gauche : SAR oprande,n e e e Identique au dcalage logique vers la gauche. e Applications des instructions de dcalage : e cadrage a droite dun groupe de bits. ` Exemple : on veut avoir la valeur du quartet de poids fort du registre AL : mov al,11001011B mov cl,4 shr al,cl AL = 00001100B

41

test de ltat dun bit dans un mot. e Exemple : on veut dterminer ltat du bit 5 de AL : e e mov cl,6 shr al,cl ou mov cl,3 shl al,cl

avec un dcalage de 6 positions vers la droite ou 4 positions vers la gauche, le e bit 5 de AL est transfr dans lindicateur de retenue CF. Il sut donc de tester cet ee indicateur. multiplication ou division par une puissance de 2 : un dcalage a droite revient a e ` ` faire une division par 2 et un dcalage a gauche, une multiplication par 2. e ` Exemple : mov al,48 mov cl,3 shr al,cl AL = 48/23 = 6

Rotation ` droite (Rotate Right) : ROR oprande,n a e Cette instruction dcale loprande de n positions vers la droite et rinjecte par la gauche e e e les bits sortant. Exemple : mov al,11001011B ror al,1
avant 1 1 0 0 1 0 1 1 CF 1

aprs 1 1 1 0 0 1 0 1

rinjection du bit sortant qui est copi dans lindicateur de retenue CF. e e Rotation ` gauche (Rotate Left) : ROL oprande,n a e Cette instruction dcale loprande de n positions vers la gauche et rinjecte par la droite e e e les bits sortant. Exemple : mov al,11001011B rol al,1
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

42

Chapitre 5 - La programmation en assembleur du microprocesseur 8086


avant 1 CF 1 1 0 0 1 0 1 1

aprs 1 0 0 1 0 1 1 1

rinjection du bit sortant qui est copi dans lindicateur de retenue CF. e e Rotation ` droite avec passage par lindicateur de retenue (Rotate Right through a Carry) : RCR oprande,n e Cette instruction dcale loprande de n positions vers la droite en passant par lindicateur e e de retenue CF. Exemple : mov al,11001011B rcr al,1
avant valeur prcdente de CF 1 1 0 0 1 0 1 1 CF 1

aprs x 1 1 0 0 1 0 1

le bit sortant par la droite est copi dans lindicateur de retenue CF et la valeur e prcdente de CF est rinjecte par la gauche. e e e e Rotation ` gauche avec passage par lindicateur de retenue (Rotate Left through a Carry) : RCL oprande,n e Cette instruction dcale loprande de n positions vers la gauche en passant par lindicateur e e de retenue CF. Exemple : mov al,11001011B rcl al,1
avant 1 CF 1 1 0 0 1 0 1 1 valeur prcdente de CF

aprs 1 0 0 1 0 1 1 x

le bit sortant par la gauche est copi dans lindicateur de retenue CF et la valeur e prcdente de CF est rinjecte par la droite. e e e e

5.5

Les instructions de branchement

Les instructions de branchement (ou saut) permettent de modier lordre dexcution des e instructions du programme en fonction de certaines conditions. Il existe 3 types de saut : saut inconditionnel ; sauts conditionnels ; appel de sous-programmes.
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

5.5 - Les instructions de branchement

43

Instruction de saut inconditionnel : JMP label Cette instruction eectue un saut (jump) vers le label spci. Un label (ou tiquette) e e e est une reprsentation symbolique dune instruction en mmoire : e e . . instructions prcdant le saut e e . jmp suite . . . instructions suivant le saut (jamais excutes) e e suite : Exemple : boucle : inc ax dec bx jmp boucle boucle innie ... instruction excute apr`s le saut e e e

Remarque : linstruction JMP ajoute au registre IP (pointeur dinstruction) le nombre doctets (distance) qui spare linstruction de saut de sa destination. Pour un saut en e arri`re, la distance est ngative (code en complment ` 2). e e e e a Instructions de sauts conditionnels : Jcondition label Un saut conditionnel nest excut que si une certaine condition est satisfaite, sinon e e lexcution se poursuit squentiellement ` linstruction suivante. e e a La condition du saut porte sur ltat de lun (ou plusieurs) des indicateurs dtat (ags) e e 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 Overow saut si OF = 1 JNO label Jump if Not Overow 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 positionns en fonction du rsultat de la derni`re e e e opration. e Exemple : . . instructions prcdant le saut conditionnel e e . jnz suite . . . instructions excutes si la condition ZF = 0 est vrie e e e e suite :
` HAGGEGE, 2003

...

instruction excute ` la suite du saut e e a


cours de microprocesseur ISET Rad`s e

44

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Remarque : il existe un autre type de saut conditionnel, les sauts arithmtiques. Ils e suivent en gnral linstruction de comparaison : CMP oprande1,oprande2 e e e e condition = > < = Exemple : cmp ax,bx jg superieur jl inferieur ... . . . ... nombres signs e JEQ label JG label JL label JNE label nombres non signs e JEQ label JA label JB label JNE label

superieur : inferieur :

Exemple dapplication des instructions de sauts conditionnels : on veut additionner deux nombres signs N1 et N2 se trouvant respectivement aux osets 1100H et 1101H. Le e rsultat est rang ` loset 1102H sil est positif, a loset 1103H sil est ngatif et ` e e a ` e a loset 1104H sil est nul : Organigramme :
dbut

Programme :

N1 + N2

rsultat >0 non

oui

rsultat =0 non ranger le rsultat l'offset 1102H

oui ranger le rsultat l'offset 1104H

ranger le rsultat l'offset 1103H

negatif : nul : fin :

mov add js jz mov jmp mov jmp mov hlt

al,[1100H] al,[1101H] negatif nul [1102H],al fin [1103H],al fin [1104H],al

fin

Appel de sous-programmes : pour viter la rptition dune mme squence dinse e e e e tructions plusieurs fois dans un programme, on rdige la squence une seule fois en lui e e attribuant un nom (au choix) et on lappelle lorsquon en a besoin. Le programme apISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

5.5 - Les instructions de branchement

45

pelant est le programme principal. La squence appele est un sous-programme ou e e procdure. e Ecriture dun sous-programme : nom sp PROC . . . ret ENDP instructions du sous-programme instruction de retour au programme principal

nom sp

Remarque : une procdure peut tre de type NEAR si elle se trouve dans le mme segment e e e ou de type FAR si elle se trouve dans un autre segment. PROC NEAR Exemple : ss prog1 PROC FAR ss prog2 Appel dun sous-programme par le programme principal : CALL procdure e . . . instructions prcdant lappel au sous-programme e e call nom sp . . . appel au sous-programme instructions excutes apr`s le retour au programme principal e e e

Lors de lexcution de linstruction CALL, le pointeur dinstruction IP est charg avec e e ladresse de la premi`re instruction du sous-programme. Lors du retour au programme e appelant, linstruction suivant le CALL doit tre excute, cest-`-dire que IP doit tre e e e a e recharg avec ladresse de cette instruction. e
programme principal valeur de IP avant l'appel au sous-programme valeur de IP au retour du sous-programme 1000H 1002H
RE T

sousprogramme 2000H
CA LL

valeur de IP aprs l'appel au sous-programme

2100H

valeur de IP la fin du sous-programme

Avant de charger IP avec ladresse du sous-programme, ladresse de retour au programme principal, cest-`-dire le contenu de IP, est sauvegarde dans une zone mmoire particuli`re a e e e appele pile. Lors de lexcution de linstruction RET, cette adresse est rcupre ` partir e e e ee a de la pile et recharge dans IP, ainsi le programme appelant peut se poursuivre. e Fonctionnement de la pile : la pile est une zone mmoire fonctionnant en mode LIFO e (Last In First Out : dernier entr, premier sorti). Deux oprations sont possibles sur la e e pile : empiler une donne : placer la donne au sommet de la pile ; e e dpiler une donne : lire la donne se trouvant au sommet de la pile. e e e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

46

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Le sommet de la pile est repr par un registre appel pointeur de pile (SP : Stack ee e Pointer) qui contient ladresse de la derni`re donne empile. e e e La pile est dnie dans le segment de pile dont ladresse de dpart est contenue dans e e le registre SS.
1 Mo sens de croissance de la pile FFFFFH sommet de la pile SS : SP SS : 0000H

segment de pile

sens de croissance du programme 0

segment de code CS : 0000H 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 o` celle-ci est place dans le mme segment u e e que le code (SS = CS). Lors de lappel a un sous-programme, ladresse de retour au programme appelant (contenu ` de IP) est empile et le pointeur de pile SP est automatiquement dcrment. Au retour e e e e du sous-programme, le pointeur dinstruction IP est recharg avec la valeur contenue e sommet de la pile et SP est incrment. e e
1 Mo adresse de retour au sous-programme (2 octets) FFFFFH SS : FFFFH segment de pile SS : SP SS : SP dcrmentation de SP de 2 units SS : 0000H

00000H

La pile peut galement galement servir a sauvegarder le contenu de registres qui ne sont e e ` pas automatiquement sauvegards lors de lappel a un sous programme : e ` instruction dempilage : PUSH oprande e instruction de dpilage : POP oprande e e o` oprande est un registre ou une donne sur 2 octets (on ne peut empiler que des mots u e e de 16 bits). Exemple :
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

5.5 - Les instructions de branchement push ax push bx push [1100H] . . . pop [1100H] pop bx pop ax ; empilage du registre AX ... ; ... du registre BX ... ; ... et de la case mmoire 1100H-1101H e ; dpilage dans lordre inverse de lempilage e

47

Remarque : la valeur de SP doit tre initialise par le programme principal avant de e e pouvoir utiliser la pile. Utilisation de la pile pour le passage de param`tres : pour transmettre des pae ram`tres ` une procdure, on peut les placer sur la pile avant lappel de la procdure, puis e a e e celle-ci les rcup`re en eectuant un adressage bas de la pile en utilisant le registre BP. e e e Exemple : soit une procdure eectuant la somme de deux nombres et retournant le e rsultat dans le registre AX : e programme principal : mov ax,200 push ax mov ax,300 push ax call somme

; empilage du premier param`tre e ; empilage du deuxi`me param`tre e e ; appel de la procdure somme e

procdure somme : e somme proc push bp ; mov bp,sp ; mov ax,[bp+4] ; add ax,[bp+6] ; pop bp ; ret 4 ; somme endp

sauvegarde de BP faire pointer BP sur le sommet de la pile rcupration du deuxi`me param`tre e e e e addition au premier param`tre e restauration de lancienne valeur de BP retour et dpilage des param`tres e e

Linstruction ret 4 permet de retourner au programme principal et dincrmenter le e pointeur de pile de 4 units pour dpiler les param`tres an de remettre la pile dans son e e e tat initial. e Etat de la pile :
avant CALL SS : FFFFH segment de pile 2 octets SS : SP (sommet de la pile) segment de pile aprs CALL SS : FFFFH segment de pile SS : SP SS : BP+6 SS : BP+4 SS : SP = SS : BP SS : 0000H retour de la pile son tat initial aprs POP BP et RET 4 SS : FFFFH

2 octets 2 octets 2 octets 2 octets

paramtre 1 (200) paramtre 2 (300) adresse de retour


ancienne valeur de BP

SS : 0000H

SS : 0000H

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

48

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

5.6

Mthodes de programmation e

Etapes de la ralisation dun programme : e Dnir le probl`me ` rsoudre : que faut-il faire exactement ? e e a e Dterminer des algorithmes, des organigrammes : comment faire ? Par quoi come mencer, puis poursuivre ? Rdiger le programme (code source) : e utilisation du jeu dinstructions (mnmoniques) ; e cration de documents explicatifs (documentation). e Tester le programme en rel ; e Corriger les erreurs (bugs) ventuelles : dboguer le programme puis refaire des e e tests jusqu` obtention dun programme fonctionnant de mani`re satisfaisante. a e Langage machine et assembleur : Langage machine : codes binaires correspondant aux instructions ; Assembleur : logiciel de traduction du code source crit en langage assembleur e (mnmoniques). e Ralisation pratique dun programme : e Rdaction du code source en assembleur a laide dun diteur (logiciel de traitement e ` e 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 excutable par le microprocesseur ; e Chargement en mmoire centrale et excution : rle du syst`me dexploitation (ore e o e dinateur) ou dun moniteur (carte de dveloppement ` base de microprocesseur). e a Pour la mise au point (dbogage) du programme, on peut utiliser un programme daide e ` la mise au point (comme DEBUG sous MS-DOS) permettant : a lexcution pas ` pas ; e a la visualisation du contenu des registres et de la mmoire ; e la pose de points darrt ... e Structure dun chier source en assembleur : pour faciliter la lisibilit du code e source en assembleur, on le rdige sous la forme suivante : e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

5.6 - Mthodes de programmation e labels label1 : . . . sous prog1 . . . sous prog1 . . . instructions mov ax,60H . . . proc near . . . endp . . . commentaires ; ceci est un commentaire ... . . . ; sous-programme . . .

49

. . . Directives pour lassembleur :

Origine du programme en mmoire : ORG offset e Exemple : org 1000H Dnitions de constantes : nom constante EQU valeur e Exemple : escape equ 1BH Rservation de cases mmoires : e e nom variable DB valeur initiale nom variable DW valeur initiale DB : Dene Byte, rservation dun octet ; e DW : Dene Word, rservation dun mot (2 octets). e Exemples : nombre1 db 25 nombre2 dw ? ; pas de valeur initiale buffer db 100 dup ( ?) ; rservation dune zone mmoire e e ; de 100 octets

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

50

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 6 Les interfaces dentres/sorties e


6.1 Dnitions e

Une interface dentres/sorties est un circuit intgr permettant au microprocesseur de e e e communiquer avec lenvironnement extrieur (priphriques) : clavier, cran, imprimante, e e e e modem, disques, processus industriel, ... Les interfaces dE/S sont connectes au microprocesseur a travers les bus dadresses, de e ` donnes et de commandes. e

environnement extrieur calculateur

priphrique 1 port 1

priphrique 2 port 2

microprocesseur

interface 1

interface 2

donnes adresses commandes

Les points dacc`s aux interfaces sont appels ports. e e Exemples : interface interface parall`le e interface srie e
` HAGGEGE, 2003

port port parall`le e port srie e

exemple de priphrique e e imprimante modem


ISET Rad`s e

cours de microprocesseur

52

Chapitre 6 - Les interfaces dentres/sorties e

Schma synoptique dun circuit dE/S : e


D0 - Dn lignes de donnes microprocesseur A0 - Ap lignes d'adresses (p = 1 ou 2, en gnral) commandes de lecture/ criture signal de selection de botier RD WR CS circuit d'E/S lignes d'E/S

6.2

Adressage des ports dE/S

Un circuit dE/S poss`de des registres pour grer les changes avec les priphriques : e e e e e registres de conguration ; registres de donnes. e A chaque registre est assign une adresse : le microprocesseur acc`de ` un port dE/S en e e a spciant ladresse de lun de ses registres. e Le microprocesseur peut voir les adresses des ports dE/S de deux mani`res : e adressage cartographique : les adresses des ports dE/S appartiennent au mme e espace mmoire que les circuits mmoire (on dit que les E/S sont mappes en e e e mmoire) : e
circuits d'E/S espace mmoire total adressable FFFFFH

circuits mmoire

00000H

Consquences : e lespace dadressage des mmoires diminue ; e ladressage des ports dE/S se fait avec une adresse de mme longueur (mme e e nombre de bits) que pour les cases mmoires ; e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

priphriques

6.3 - Gestion des ports dE/S par le 8086

53

toutes les instructions employes avec des cases mmoires peuvent tre ape e e pliques aux ports dE/S : les mmes instructions permettent de lire et crire e e e dans la mmoire et les ports dE/S, tous les modes dadressage tant valables e e pour les E/S. adressage indpendant : le microprocesseur consid`re deux espaces distincts : e e lespace dadressage des mmoires ; e lespace dadressage des ports dE/S. Cest le cas du microprocesseur 8086 :
FFFFFH

1 Mo

circuits mmoire FFFFH 64 Ko 00000H espace mmoire espace E/S circuits d'E/S 0000H

Consquences : e contrairement a ladressage cartographique, lespace mmoire total adressable ` e nest pas diminu ; e ladressage des port dE/S peut se faire avec une adresse plus courte (nombre de bits infrieur) que pour les circuits mmoires ; e e les instructions utilises pour lacc`s ` la mmoire ne sont plus utilisables pour e e a e lacc`s aux ports dE/S : ceux-ci disposent dinstructions spciques ; e e une mme adresse peut dsigner soit une case mmoire, soit un port dE/S : le e e e microprocesseur doit donc fournir un signal permettant de direncier ladrese sage de la mmoire de ladressage des ports dE/S. e Remarque : ladressage indpendant des ports dE/S nest possible que pour les microe processeurs possdant un signal permettant de direncier ladressage de la mmoire de e e e ladressage des ports dE/S ainsi que les instructions spciques pour lacc`s aux ports e e dE/S. Par contre, ladressage cartographique est possible pour tous les microprocesseurs.

6.3

Gestion des ports dE/S par le 8086

Le 8086 dispose dun espace mmoire de 1 Mo (adresse dune case mmoire sur 20 bits) e e et dun espace dE/S de 64 Ko (adresse dun port dE/S sur 16 bits). Le signal permettant de direncier ladressage de la mmoire de ladressage des ports e e dE/S est la ligne M/IO : pour un acc`s ` la mmoire, M/IO = 1 ; e a e pour un acc`s aux ports dE/S, M/IO = 0. e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

54

Chapitre 6 - Les interfaces dentres/sorties e

Ce signal est utilis pour valider le dcodage dadresse dans les deux espaces : e e
dcodeur 3 vers 8 A Y0 Y1 B Y2 C 74138 Y3 Y4 validation G2B G2A G1 bus d'adresses A B C Y5 Y6 Y7 Y0 Y1 Y2 74138 Y3 Y4 validation G2B G2A +5 V G1 Y5 Y6 Y7 bus d'adresses

signaux de validation des circuits mmoire

M/IO

signaux de validation des circuits d'E/S

Les instructions de lecture et dcriture dun port dE/S sont respectivement les instruce a tions IN et OUT. Elles placent la ligne M/IO ` 0 alors que linstruction MOV place celle-ci ` 1. a Lecture dun port dE/S : si ladresse du port dE/S est sur un octet : IN AL,adresse : lecture dun port sur 8 bits ; IN AX,adresse : lecture dun port sur 16 bits. si ladresse du port dE/S est sur deux octets : IN AL,DX : lecture dun port sur 8 bits ; IN AX,DX : lecture dun port sur 16 bits. o` le registre DX contient ladresse du port dE/S a lire. u ` Ecriture dun port dE/S : si ladresse du port dE/S est sur un octet : OUT adresse,AL : criture dun port sur 8 bits ; e OUT adresse,AX : criture dun port sur 16 bits. e si ladresse du port dE/S est sur deux octets : OUT DX,AL : criture dun port sur 8 bits ; e OUT DX,AX : criture dun port sur 16 bits. e o` le registre DX contient ladresse du port dE/S a crire. u `e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

6.4 - Linterface parall`le 8255 e Exemples : lecture dun port dE/S sur 8 bits a ladresse 300H : ` mov dx,300H in al,dx criture de la valeur 1234H dans le port dE/S sur 16 bits a ladresse 49H : e ` mov ax,1234H out 49H,ax

55

6.4

Linterface parall`le 8255 e

Le rle dune interface parall`le est de transfrer des donnes du microprocesseur vers o e e e des priphriques et inversement, tous les bits de donnes tant envoys ou reus simule e e e e c tanment. e
microprocesseur interface parallle sortie de donnes en parallle

entre de donnes en parallle

donnes adresses commandes

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

8255

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

56 Schma fonctionnel : e

Chapitre 6 - Les interfaces dentres/sorties e

alimentation VCC RD lignes de contrle WR A0 A1 RESET CS 4 D0 - D7 bus de donnes 8 8255 4 GND 8 port A (PA0 - PA7) port C haut (PC4 - PC7) port C bas (PC0 - PC3) port B (PB0 - PB7)

Le 8255 contient 4 registres : trois registres contenant les donnes prsentes sur les ports A, B et C ; e e un registre de commande pour la conguration des port A, B et C en entres et/ou e en sorties. Acc`s aux registres du 8255 : les lignes dadresses A0 et A1 dnissent les adresses e e des registres du 8255 : A1 A0 RD WR CS opration e 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 criture du port A e 0 1 1 0 0 criture du port B e 1 0 1 0 0 criture du port C e 1 1 1 0 0 criture du registre de commande e X X X X 1 pas de transaction 1 1 0 1 0 illgal e X X 1 1 0 pas de transaction Remarque : le registre de commande est accessible uniquement en criture, la lecture de e ce registre nest pas autorise. e Conguration du 8255 : les ports peuvent tre congurs en entres ou en sorties selon e e e 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 congurs en entres/sorties de base. Les e e donnes crites dans les registres correspondants sont mmorises sur les lignes de sore e e e ties ; ltat des lignes dentres est recopi dans les registres correspondants et nest pas e e e mmoris. e e Les modes 1 et 2 sont plus complexes. Ils sont utiliss pour le dialogue avec des priphriques e e e ncessitant un asservissement. e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

groupe B

groupe A

6.4 - Linterface parall`le 8255 e Structure du registre de commande :


D7 D6 D5 D4 D3 D2 D1 D0 drapeau 1 = actif Groupe A slection de mode : 00 = mode 0 01 = mode 1 1x = mode 2 port A 1 = entre 0 = sortie port C haut 1 = entre 0 = sortie Groupe B port C bas 1 = entre 0 = sortie port B 1 = entre 0 = sortie slection de mode : 0 = mode 0 1 = mode 1

57

Connexion du 8255 sur les bus du 8086 : le bus de donnes du 8255 est sur 8 bits e alors que celui du microprocesseur 8086 est sur 16 bits. On peut donc connecter le bus de donnes du 8255 sur les lignes de donnes de poids faible du 8086 (D0 - D7) ou sur celles e e de poids fort (D8 - D15). Une donne est envoye (ou reue) par le microprocesseur 8086 : e e c sur la partie faible du bus de donnes lorsque ladresse ` crire (ou a lire) est paire : e ae ` validation par A0 ; sur la partie haute lorsque ladresse est impaire : validation par BHE. e e e Ainsi lun de ces deux signaux A0 ou BHE doit tre utilis pour slectionner le 8255 :

D0 - D7 ou D8 - D15 M/IO A3 - A15 validation dcodeur d'adresses A0 ou BHE A1 A2 RD WR

D0 . . 8255 . D7 RD WR CS A0 A1

Consquence : les adresses des registres du 8255 se trouvent a des adresses paires (validae ` tion par A0) ou impaires (validation par BHE).
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

58

Chapitre 6 - Les interfaces dentres/sorties e

Le dcodeur dadresses dtermine ladresse de base du 8255 ; les lignes A1 et A2 e e dterminent les adresses des registres du 8255. e Exemple : connexion du 8255 sur la partie faible du bus de donnes du 8086, avec dcodage e e dadresses incomplet (les lignes dadresses A3 - A15 ne sont pas toutes utilises) : e
D0 . . 8255 . D7 RD WR RD WR CS A1 A2 A0 A1

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

Dtermination de ladresse du 8255 : e


A15 X A14 X A13 X A12 X A11 X A10 0 A9 1 A8 1 A7 X A6 X A5 X A4 X A3 X A2 A1 A1 A0 A0 0
CS =0

adresse de base = 300H

slection e de registre

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 dcodage dadresses tant incomplet, le 8255 appara dans plusieurs e e t plages dadresses selon les valeurs des bits dadresses non dcods (A7 - A13 et A12 e e A15). Dans cet exemple, ladresse de base 300H correspond a la premi`re adresse possible ` e (bits dadresses non dcods tous gaux a 0). e e e ` Remarque : si on veut que le 8255 poss`de des adresses conscutives (par exemple 300H, e e 301H, 302H et 303H), on peut utiliser le schma suivant qui exploite tout le bus de donnes e e (D0 - D15) du 8086 :
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

6.4 - Linterface parall`le 8255 e


transmetteur bidirectionnel A 8286 DIR EN 8 D8 - D15 A 8286 DIR EN B B 8 D0 . . . D7 8255

59

8 D0 - D7 DT/R

PA

BHE

PB M/IO A2- A15 validation dcodeur d'adresses CS A1 A0 RD WR A1 A0 RD WR PC

Exemple de programmation : soit le montage suivant :

PA0 8086 D0 . D0 - D7 . 8255 . D7 adresse de base = 300H PA1 PA2 PB0

K0 K1 K2

0 1 0 1 0 1

LED

On veut que la led sallume lorsquon a la combinaison : K0 = 1 et K1 = 0 et K2 = 1. Programme :


` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

60 portA portB portC controle equ equ equ equ mov mov out boucle : mov in and cmp jne mov jmp mov mov out jmp 300H 302H 304H 306H dx,controle al,90H dx,al dx,portA al,dx al,00000111B al,00000101B faux al,00000001B suite al,00000000B dx,portB dx,al boucle

Chapitre 6 - Les interfaces dentres/sorties e ; adresses des registres du 8255

; initialisation du port A en entre e ; et du port B en sortie (mode 0) : ; controle = 10010000B = 90H ; lecture du port A ; ; ; ; ; ; ; masquage PA0, PA1 et PA2 test PA0 = 1, PA1 = 0 et PA2 = 1 non -> aller au label faux ... oui -> mettre PB0 a 1 ` et continuer au label suite ... mettre PB0 a 0 ` ecriture du port B

faux : suite :

; retourner lire le port A

6.5

Linterface srie 8250 e


TxD : mission microprocesseur interface srie RxD : rception

Une interface srie permet dchanger des donnes entre le microprocesseur et un priphrique e e e e e bit par bit.

donnes adresses commandes

Avantage : diminution du nombre de connexions (1 l pour lmission, 1 l pour la e rception). e Inconvnient : vitesse de transmission plus faible que pour une interface parall`le. e e Il existe deux types de transmissions sries : e asynchrone : chaque octet peut tre mis ou reu sans dure dtermine entre un e e c e e e octet et le suivant ; synchrone : les octets successifs sont transmis par blocs spars par des octets de e e synchronisation. La transmission asynchrone la plus utilise est celle qui est dnie par la norme RS232. e e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface srie 8250 e

61

Exemple : transmission du caract`re E (code ASCII 45H = 01000101B) sous forme srie e e selon la norme RS232 :
bit de start +9 +15 V LSB -9 -15 V 1 0 1 0 0 0 1 0 MSB bit de bits de parit stop

bits de donnes

dure d'un bit = T

ltat 1 correspond a une tension ngative comprise entre 9 et 15 V, ltat 0 a e ` e e ` une tension positive comprise entre +9 et +15 V. Au repos, la ligne est a ltat 1 ` e (tension ngative) ; e le bit de start marque le dbut de la transmission du caract`re ; e e les bits de donnes sont transmis lun apr`s lautre en commenant par le bit de e e c poids faible. Ils peuvent tre au nombre de 5, 6, 7 ou 8. Chaque bit est maintenu sur la e ligne pendant une dure dtermine T. Linverse de cette dure dnit la frquence e e e e e e de bit = nombre de bits par secondes = vitesse de transmission. Les vitesses normalises sont : 50, 75, 110, 134.5, 150, 300, 600, 1200, 2400, 4800, 9600 bits/s ; e le bit de parit (facultatif) est un bit supplmentaire dont la valeur dpend du e e e nombre de bits de donnes gaux a 1. Il est utilis pour la dtection derreurs de e e ` e e transmission ; les bits de stop (1, 1.5 ou 2) marquent la n de la transmission du caract`re. e Principe dune interface srie : e

8 D0 - D7

registre de donnes mission

registre dcalage mission

TxD

registre de donnes rception bus de donnes interne registres de configuration et d'tat

registre dcalage rception

RxD

logique de synchronisation + contrle de parit

. . .

signaux de controle

horloge
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

62

Chapitre 6 - Les interfaces dentres/sorties e

Un circuit intgr dinterface srie asynchrone sappelle un UART : Universal Asynchroe e e nous Receiver Transmitter) ; une interface srie synchrone/asynchrone est un USART. e Exemples dinterfaces sries : e 8251 (Intel) ; 8250 (National Semiconductor) ; 6850 (Motorola). Connexion de deux quipements par une liaison srie RS232 : les quipements e e e qui peuvent tre connects ` travers une liaison srie RS232 sont de deux types : e e a e les quipements terminaux de donnes (DTE : Data Terminal Equipment) qui e e gn`rent les donnes ` transmettre, exemple : un ordinateur ; e e e a les quipements de communication de donnes (DCE : Data Communication e e Equipment) qui transmettent les donnes sur les lignes de communication, exemple : e un modem. Pour connecter ces quipements, on utilise des connecteurs normaliss DB9 ou DB25 : e e
1 6 2 7 3 8 4 9 5 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13

DB9 mle

DB25 mle

Dirents signaux sont transports par ces connecteurs : e e signal no broche DB9 TxD 3 RxD 2 RTS 7 CTS 8 DTR 4 DSR 6 DCD 1 RI 9 GND 5 no broche DB25 2 3 4 5 20 6 8 22 7 sens DTE DCE Transmit Data sortie entre e Receive Data entre sortie e Request To Send sortie entre e Clear To Send entre sortie e Data Terminal Ready sortie entre e Data Set Ready entre sortie e Data Carrier Detect entre sortie e Ring Indicator entre sortie e Ground description

Seuls les 2 signaux TxD et RxD servent a transmettre les donnes. Les autres signaux ` e sont des signaux de contrle de lchange de donnes. o e e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface srie 8250 e Connexion entre DTE et DCE :


TxD RxD RTS CTS (ordinateur) DTR DSR DTE DCD RI GND TxD RxD RTS CTS DTR DSR DCD RI GND DCE (modem)

63

Dialogue entre DTE et DCE :


DTR

RTS

DTE
donne

TxD

DSR

DCD

DCE

CTS

(les signaux de contrle sont actifs a ltat bas = tension positive) o ` e quand le DTE veut transmettre des donnes, il active le signal DTR. Si le DCE e est prt ` recevoir les donnes, il active le signal DSR puis le signal DCD : la e a e communication peut dbuter ; e lorsque le DTE a une donne ` mettre, il active le signal RTS. Si le DCE peut e a e recevoir la donne, il active CTS : le DTE envoie la donne sur la ligne TxD ; e e si le DCE veut demander une pause dans la transmission, il dsactive CTS : le DTE e arrte la transmission jusqu` ce que CTS soit ractiv. Cest un contrle matriel e a e e o e du ux de donnes ; e Lorsque la transmission est termine, les signaux RTS, CTS, DTR, DCD et DSR e sont successivement dsactivs. e e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

64 Applications des liaisons sries : e

Chapitre 6 - Les interfaces dentres/sorties e

transmission de donnes ` travers une ligne tlphonique : e a ee


DTE microprocesseur microprocesseur
` HAGGEGE, 2003

DTE interface srie interface srie

DCE modem

ligne tlphonique

DCE modem

Le modem transforme les signaux numriques produits par linterface srie en sie e gnaux analogiques accepts par la ligne tlphonique et inversement (modulations e ee numriques FSK, PSK, ...) e liaison srie directe entre deux DTE : e liaison simple a 3 ls : rebouclage (strapping) des signaux de contrle : ` o
TxD RxD RTS CTS DTR DSR DCD RI GND TxD RxD RTS CTS DTR DSR DCD RI GND

DTE 1

DTE 2

Ce cblage ne permet pas le contrle matriel du ux entre les deux DTE. a o e liaison compl`te : cble Null Modem : e a
TxD RxD RTS CTS DTR DSR DCD DTE 1 RI GND TxD RxD RTS CTS DTR DSR DCD RI GND

DTE 2

Ce cblage simule la prsence dun modem (DCE) en croisant les signaux de a e contrle et permet le contrle matriel du ux. o o e
ISET Rad`s e cours de microprocesseur

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

65

Schma fonctionnel : e
D0 - D7 ou D8 - D15 RESET RD WR interface microprocesseur D0 - D7 MR DISTR DOSTR DISTR DOSTR CS0 CS1 CS2 A3 A2 A1 A2 A1 A0 ADS INTRPT DDIS CSOUT VCC 8250 tat modem CTS DSR DCD RI GND 1489 1489 1489 1489 CTS DSR DCD RI GND UART XTAL1 diviseur d'horloge et XTAL2 gnrateur de baud RCLK contrle et tat de BAUDOUT ligne rcepteur SIN metteur SOUT 1.8432 MHz ou 2.4576 MHz ou 3.072 MHz

M/IO A4 - A15

validation dcodeur d'adresses +5 V

adaptateur RS232/TTL 1489 1488 adaptateur TTL/RS232 1488 1488

RxD TxD modem RTS DTR ligne tlphonique

A0 ou BHE

interface modem RTS DTR OUT1 OUT2

contrle modem

demande d'interruption commandes d'amplificateurs de bus +5 V

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

66

Chapitre 6 - Les interfaces dentres/sorties e

Acc`s aux registres du 8250 : le 8250 poss`de 11 registres. Comme il ny a que 3 bits e e dadresses (A0, A1 et A2), plusieurs registres doivent se partager la mme adresse : e DLAB 0 0 1 1 0 X X X X X X A2 A1 A0 registre 0 0 0 RBR : Receiver Buer Register, registre de rception e (accessible seulement en lecture) 0 0 0 THR : Transmitter Holding Register, registre dmission (accessible seulement en criture) e e 0 0 0 DLL : Divisor Latch LSB, octet de poids faible du diviseur dhorloge 0 0 1 DLM : Divisor Latch MSB, octet de poids fort du diviseur dhorloge 0 0 1 IER : Interrupt Enable Register, registre dautorisation des interruptions 0 1 0 IIR : Interrupt Identication Register, registre didentication des interruptions 0 1 1 LCR : Line Control Register, registre de contrle de o ligne 1 0 0 MCR : Modem Control Register, registre de contrle o modem 1 0 1 LSR : Line Status Register, registre dtat de la ligne e 1 1 0 MSR : Modem Status Register, registre dtat du moe dem 1 1 1 SCR : Scratch Register, registre a usage gnral ` e e

En fonction de ltat de DLAB (Divisor Latch Access Bit = bit de poids fort du registre e LCR), on a acc`s soit au registre dmission/rception, soit au diviseur dhorloge, soit au e e e masque dinterruptions. Structure des registres : Line Control Register (LCR) : bits 0 et 1 : longueur du mot transmis, bit 1 bit 0 0 0 5 bits 1 6 bits 0 0 7 bits 1 1 8 bits 1 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 ; e e bit 3 : autorisation de parit, 0 pas de parit, 1 parit gnre et vrie ; e e ee e e bit 4 : slection de parit, 0 parit impaire, e e e 1 parit paire ; e bit 5 : forage de parit, 0 parit non force c e e e 1 parit xe ; e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface srie 8250 e

67

bit 6 : contrle de ltat de la ligne TxD, 0 ligne en fonctionnement normal, o e 1 forage de TxD a ltat 0 (break) ; c ` e bit 7 : DLAB (Divisor Latch Access bit), 0 acc`s aux registres dmission, e e de rception et IER, e 1 acc`s au diviseur dhorloge. e Line Status Register (LSR) : e c bit 0 : 1 donne reue ; e e bit 1 : 1 erreur dcrasement de caract`re ; e bit 2 : 1 erreur de parit ; bit 3 : 1 erreur de cadrage (bit de stop non valide) ; e e bit 4 : 1 dtection dun tat logique 0 sur RxD pendant une dure suprieure ` la dure dun mot ; e e a e bit 5 : 1 registre de transmission vide ; ` e bit 6 : 1 registre a dcalage vide ; e ` bit 7 : non utilis, toujours a 0. Modem Control Register (MCR) : bit 0 : DTR bit 1 : RTS activation (mise a 0) des lignes correspondantes en ` bit 2 : OUT1 mettant a 1 ces bits ; ` bit 3 : OUT2 bit 4 : 1 fonctionnement en boucle : TxD connecte ` RxD (mode test) ; e a bit 5 bit 6 : inutiliss, toujours a 0. e ` bit 7 Modem Status Register (MSR) : bit 0 : 1 changement de CTS depuis la derni`re lecture : delta CTS ; e bit 1 : 1 delta DSR ; bit 2 : 1 delta RI (uniquement front montant sur RI) ; bit 3 : 1 delta DCD ; bit 4 : CTS bit 5 : DSR ces bits indiquent ltat des lignes correspondantes. e bit 6 : RI bit 7 : DCD Diviseur dhorloge (DLM,DLL) : la vitesse de transmission est xe par la e valeur du diviseur dhorloge : vitesse (bit/s) = frquence d horloge(quartz) e 16 (DLM, DLL)

Exemple de calcul : vitesse de transmission dsire = 1200 bit/s, frquence dhorloge e e e = 1.8432 MHz, dtermination de la valeur du diviseur dhorloge : e frquence d horloge e 1.8432 106 diviseur = = = 96 DLM = 0 et DLL = 96. 16 vitesse 16 1200
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

68

Chapitre 6 - Les interfaces dentres/sorties e Receiver Buer Register (RBR) : contient la donne reue. e c Transmitter Holding Register (THR) : contient la donne ` transmettre. e a Interrupt Identication Register (IIR) : bit 0 : 0 interruption en cours, 1 pas dinterruption en cours ; bits 1 et 2 : source dinterruption, bit 2 bit 1 1 1 erreur 0 donne reue e c 1 1 registre dmission vide e 0 0 changement dtat modem e 0 (ordre de priorit dcroissant) ; e e bit bit bit bit bit 3 4 5 6 7

: inutiliss, toujours a 0. e `

Interrupt Enable Register (IER) : autorisation des interruptions e c bit 0 : 1 donne reue ; e bit 1 : 1 registre dmission vide ; bit 2 : 1 erreur ; e bit 3 : 1 changement dtat modem ; bit 4 bit 5 : inutiliss, toujours a 0. e ` bit 6 bit 7 Scratch Register (SCR) : registre a usage gnral pouvant contenir des donnes ` e e e temporaires. Exemple de programmation : soit un UART 8250 dont le bus de donnes est connect sur e e la partie faible du bus de donnes du microprocesseur 8086. Ladresse de base du 8250 est e xe ` la valeur 200H par un dcodeur dadresses. La frquence dhorloge du 8250 est de e a e e 1.8432 MHz. On veut : crire une procdure init qui initialise le 8250 avec les param`tres suivants : 2400 e e e bits/s, 8 bits par caract`re, parit paire, 1 bit de stop (2400, 8, P, 1) ; e e crire une procdure envoi qui met un message contenu dans la zone de donnes e e e e msg. Lmission sarrte lorsque le caract`re EOT (End Of Text, code ASCII = 03H) e e e est rencontr ; e crire une procdure reception qui reoit une ligne de 80 caract`res et la range e e c e dans une zone de donnes appele ligne. En cas derreur de rception, envoyer le e e e caract`re NAK (No Acknowledge, code ASCII = 15H) sinon envoyer le caract`re ACK e e (Acknowledge, code ASCII = 06H). Programme :
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface srie 8250 e RBR THR DLL DLM IER IIR LCR MCR LSR MSR SCR EOT ACK NAK LIGNE MSG INIT equ equ equ equ equ equ equ equ equ equ equ equ equ equ db db PROC mov mov out mov mov out mov mov out mov mov out ret ENDP 200H 200H 200H 202H 202H 204H 206H 208H 20AH 20CH 20EH 03H 06H 15H 80 dup( ?) Test 8250, EOT NEAR dx,LCR al,80H dx,al dx,DLL al,48 dx,al dx,DLM al,0 dx,al dx,LCR al,00011011B dx,al ; adresses des registres du 8250

69

; ; ; ; ;

caract`re End Of Text e caract`re Acknowledge e caract`re No Acknowledge e zone de rangement des caract`res reus e c message a envoyer `

; procdure dinitialisation du 8250 e ; DLAB = 1 pour accder au diviseur e ; dhorloge ; vitesse de transmission = 2400 bit/s ; => DLL = 48 ... ; ... et DLM = 0

; DLAB = 0 , 8 bits de donnes, e ; parit paire, 1 bit de stop e

INIT

ENVOI CARACTERE PROC NEAR mov dx,LSR attente envoi : in al,dx and al,20H jz attente envoi mov dx,THR mov al,ah out dx,al ret ENVOI CARACTERE ENDP
` HAGGEGE, 2003

; procdure dmission du contenu de AH e e ; lecture du registre dtat de la ligne e ; attente registre de transmission vide ; ; ; ; masquage bit 5 de LSR si bit 5 de LSR = 0 => attente ... ... sinon envoyer le caract`re e contenu dans le registre AH

cours de microprocesseur

ISET Rad`s e

70 PROC mov boucle : mov cmp jz call inc jmp fin envoi : ret ENVOI ENDP ENVOI NEAR si,offset MSG ah,[si] AH,EOT fin envoi ENVOI CARACTERE si boucle

Chapitre 6 - Les interfaces dentres/sorties e ; ; ; ; ; ; ; procdure dmission du message e e pointer vers le dbut du message e AH <- caract`re a envoyer e ` fin du message ? oui => fin procdure e non => envoyer caract`re ... e ... et passer au caract`re suivant e

RECEPTION PROC NEAR mov di,offset LIGNE mov cx,80 attente reception : mov dx,LSR in al,dx test al,01H jz attente reception test al,00001110B jz suite mov ah,NAK call ENVOI CARACTERE jmp attente reception suite : mov dx,RBR in al,dx mov [di],al mov ah,ACK call ENVOI CARACTERE dec cx jz fin reception inc di jmp attente reception fin reception : ret RECEPTION ENDP

; procdure de rception dune ligne e e ; pointer vers dbut zone de rception e e ; compteur de caract`res reus e c ; lecture du registre dtat de la ligne e ; ; ; ; ; test de ltat du bit 0 de LSR e pas de caract`re reu => attente e c sinon test erreurs : bits 1,2,3 de LSR pas derreurs => continuer erreurs => envoyer NAK ...

; ... et retourner attendre un caract`re e ; lire caract`re reu ... e c ; ... et le ranger dans LIGNE ; puis envoyer ACK ; ; ; ; dcrmenter compteur de caract`res e e e si compteur = 0 => fin rception e sinon incrmenter DI e et aller attendre caract`re suivant e

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 7 Les interruptions


7.1 Dnition dune interruption e
priphrique

Soit un microprocesseur qui doit changer des informations avec un priphrique : e e e

microprocesseur

interface

Il y a deux mthodes possibles pour recevoir les donnes provenant des priphriques : e e e e scrutation priodique (ou polling) : le programme principal contient des inse tructions qui lisent cycliquement ltat des ports dE/S. e Avantage : facilit de programmation. e Inconvnients : e perte de temps sil y a de nombreux priphriques ` interroger ; e e a de nouvelles donnes ne sont pas toujours prsentes ; e e des donnes peuvent tre perdues si elles changent rapidement. e e interruption : lorsquune donne appara sur un priphrique, le circuit dE/S le e t e e signale au microprocesseur pour que celui-ci eectue la lecture de la donne : cest e une demande dinterruption (IRQ : Interrupt Request) :
priphrique demande d'interruption interface

microprocesseur

Avantage : le microprocesseur eectue une lecture des ports dE/S seulement lorsquune donne est disponible, ce qui permet de gagner du temps et dviter de perdre e e des donnes. e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

72 Exemples de priphriques utilisant les interruptions : e e

Chapitre 7 - Les interruptions

clavier : demande dinterruption lorsquune touche est enfonce ; e port srie : demande dinterruption lors de larrive dun caract`re sur la ligne de e e e transmission. Remarque : les interruptions peuvent tre gnres par le microprocesseur lui-mme en e e ee e cas de probl`mes tels quune erreur dalimentation, une division par zro ou un circuit e e mmoire dfectueux (erreurs fatales). Dans ce cas, la demande dinterruption conduit a e e ` larrt du microprocesseur. e

7.2

Prise en charge dune interruption par le microprocesseur

A la suite dune demande dinterruption par un priphrique : e e le microprocesseur termine lexcution de linstruction en cours ; e il range le contenu des principaux registres sur la pile de sauvegarde : pointeur dinstruction, ags, ... il met un accus de rception de demande dinterruption (Interrupt Acknowe e e ledge) indiquant au circuit dE/S que la demande dinterruption est accepte : e
priphrique demande d'interruption microprocesseur interruption accepte interface

Remarque : le microprocesseur peut refuser la demande dinterruption : celle-ci est alors masque. Le masquage dune interruption se fait gnralement en poe e e sitionnant un ag dans le registre des indicateurs dtat. Il existe cependant des e interruptions non masquables qui sont toujours prises en compte par le microprocesseur. il abandonne lexcution du programme en cours et va excuter un sous-programme e e de service de linterruption (ISR : Interrupt Service Routine) ; apr`s lexcution de lISR, les registres sont restaurs ` partir de la pile et le microe e e a proceseur reprend lexcution du programme quil avait abandonn : e e
ISET Rad`s e cours de microprocesseur ` HAGGEGE, 2003

7.3 - Adresses des sous-programmes dinterruptions


programme principal sous-programme de service de l'interruption

73

arrive de la demande d'interruption

e ice d serv uption err l'int reto ur a prin u prog ra cipa l (IR mme ET )

Remarque : la derni`re instruction dun sous-programme de service dinterruption doit e tre linstruction IRET : retour dinterruption. e Si plusieurs interruptions peuvent se produire en mme temps, on doit leur aecter une e priorit pour que le microprocesseur sache dans quel ordre il doit servir chacune dentre e elle.

7.3

Adresses des sous-programmes dinterruptions

Lorsquune interruption survient, le microprocesseur a besoin de conna ladresse du tre sous-programme de service de cette interruption. Pour cela, la source dinterruption place sur le bus de donnes un code numrique indiquant la nature de linterruption. Le microe e processeur utilise ce code pour rechercher dans une table en mmoire centrale ladresse e du sous-programme dinterruption a excuter. Chaque lment de cette table sappelle un ` e ee vecteur dinterruption :

sous-programme d'interruption no j

sous-programme d'interruption no i

adresse int. no j code (ou no) de l'interruption adresse int. no i

table des vecteurs d'interruptions

mmoire centrale

Lorsque les adresses des sous-programmes dinterruptions sont gres de cette mani`re, ee e on dit que les interruptions sont vectorises. e Avantage de la vectorisation des interruptions : lemplacement dune ISR peut tre nime porte o` dans la mmoire, il sut de spcier le vecteur dinterruption correspondant. u e e
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

74

Chapitre 7 - Les interruptions

7.4

Les interruptions du 8086

Le microprocesseur 8086 peut grer jusqu` 256 interruptions. Chaque interruption reoit e a c un numro compris entre 0 et 255 appel type de linterruption. e e Trois sortes dinterruptions sont reconnues par le 8086 : interruptions matrielles produites par lactivation des lignes INTR et NMI du e microprocesseur ; interruptions logicielles produites par linstruction INT n, o` n est le type de linu terruption ; interruptions processeur gnres par le microprocesseur en cas de dpassement, e ee e de division par zro ou lors de lexcution pas ` pas dun programme. e e a Les interruptions du 8086 sont vectorises. La table des vecteurs dinterruptions doit e obligatoirement commencer a ladresse physique 00000H dans la mmoire centrale. ` e Chaque vecteur dinterruption est constitu de 4 octets reprsentant une adresse logique e e du type CS : IP.
adresses des vecteurs d'interruption 3FFH 3FCH type FFH : libre interruptions libres : disponibles pour l'utilisateur 103H 100H FCH FFH type 40H : libre type 3FH : rserv par Microsoft interruptions rserves par Microsoft dans un PC : utilises par MS-DOS, Windows, ...

83H 80H 7FH 7CH

type 20H : rserv par Microsoft type 1FH : rserv par Intel

interruptions rserves par Intel type 05H : 17H rserv par Intel 14H type 04H : 13H overflow 10H type 03H : 0FH 0CH instruction int sur 1 octet 0BH type 02H : 08H NMI type 01H : 07H pas pas 04H type 00H : 03H division par zro 00H

CS IP

2 octets 2 octets

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

7.5 - Le contrleur programmable dinterruptions 8259 o

75

Remarque : correspondance entre le type de linterruption et ladresse du vecteur correspondant : adresse vecteur dinterruption = 4 type de linterruption Exemple : interruption 20H, adresse du vecteur = 4 20H = 80H. La table des vecteurs dinterruptions est charge par le programme principal (carte a mie ` croprocesseur) ou par le syst`me dexploitation (ordinateur) au dmarrage du syst`me. e e e Elle peut tre modie en cours de fonctionnement (dtournement des vecteurs dintere e e ruptions).

7.5

Le contrleur programmable dinterruptions 8259 o

Le microprocesseur 8086 ne dispose que de deux lignes de demandes dinterruptions matrielles (NMI et INTR). Pour pouvoir connecter plusieurs pripriques utilisant des e e e interruptions, on peut utiliser le contrleur programmable dinterruptions 8259 dont le o rle est de : o reevoir des demandes dinterruptions des priphriques ; c e e rsoudre les priorits des interruptions ; e e gnrer le signal INTR pour le 8086 ; e e mettre le numro de linterruption sur le bus de donnes. e e e Un 8259 peut grer jusqu` 8 demandes dinterruptions matrielles. e a e Brochage du 8259 :
CS WR RD D7 D6 D5 D4 D3 D2 D1 D0 CAS0 CAS1 GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 8259 24 23 22 21 20 19 18 17 16 15 VCC A0 INTA IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP/EN CAS2

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

76 Schma fonctionnel : e
D0 - D7 ou D8 - D15 M/IO A2 - A15 validation dcodeur d'adresses A0 ou BHE INTR INTA CS A1 A0 INT RD WR

Chapitre 7 - Les interruptions

+5 V VCC D0 - D7 RD WR 8259 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7

entres de demandes d'interruptions

CAS0 CAS1 INTA CAS2 SP/EN GND

mise en cascade de plusieurs 8259

Remarque : si le nombre de demandes dinterruptions est suprieur a 8, on peut placer e ` plusieurs 8259 en cascade :
8259 esclave INT 8259 matre INTR INTA INT INTA IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7

SP/EN

entres de demandes d'interruptions

8259 esclave INT

CAS0, CAS1, CAS2 SP/EN

IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

Annexe Jeu dinstructions du 8086


Transfert de donnes : e Gnral e e MOV Dplacement dun octet ou dun mot e PUSH Ecriture dun mot au sommet de la pile POP Lecture dun mot au sommet de la pile XCHG Echange doctets ou de mots XLAT ou Traduction dun octet a laide dune table ` XLATB Entres/Sorties e IN Lecture dun port dE/S OUT Ecriture dun port dE/S Transfert dadresses LEA Chargement dune adresse eective LDS Chargement dun pointeur utilisant DS LES Chargement dun pointeur utilisant ES Transfert des ags LAHF Transfert des 5 ags bas dans AH SAHF Transfert de AH dans les 5 ags bas PUSHF Sauvegarde des ags sur la pile POPF Restauration des ags a partir de la pile ` Instructions arithmtiques : e Addition Addition doctets ou de mots Addition doctets ou de mots avec retenue Incrmentation de 1 dun octet ou dun mot e Ajustement ASCII de laddition Ajustement dcimal de laddition e

ADD ADC INC AAA DAA


` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

78

Annexe - Jeu dinstructions du 8086 Soustraction Soustraction doctets ou de mots Soustraction doctets ou de mots avec retenue Dcrmentation de 1 dun octet ou dun mot e e Complmentation a 2 dun octet ou dun mot (changee ` ment de signe) Comparaison doctets ou de mots Ajustement ASCII de la soustraction Ajustement dcimal de la soustraction e Multiplication Multiplication non signe doctets ou de mots e Multiplication signe doctets ou de mots e Ajustement ASCII de la multiplication Division Division non signe doctets ou de mots e Division signe doctets ou de mots e Ajustement ASCII de la division Conversion doctet en mot Conversion de mot en double mot

SUB SBB DEC NEG CMP AAS DAS MUL IMUL AAM DIV IDIV AAD CBW CWD

Instructions logiques :

Logique Complment ` 1 dun octet ou dun mot e a ET logique de deux octets ou de deux mots OU logique de deux octets ou de deux mots OU exclusif logique de deux octets ou de deux mots Comparaison, a laide dun ET, doctets ou de mots ` Dcalages e SHL/SAL Dcalage a gauche arithmtique ou logique (octet ou e ` e mot) SHR Dcalage logique a droite dun octet ou dun mot e ` SAR Dcalage arithmtique a droite dun octet ou dun mot e e ` Rotations ROL Rotation a gauche dun octet ou dun mot) ` ROR Rotation a droite dun octet ou dun mot ` RCL Rotation a gauche incluant CF (octet ou mot) ` RCR Rotation a droite incluant CF (octet ou mot) ` NOT AND OR XOR TEST

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003

79 Instructions sur les cha nes de caract`res : e

REP REPE ou REPZ REPNE ou REPNZ MOVS ou MOVSB/MOVSW CMPS ou CMPSB/CMPSW SCAS ou SCASB/SCASW LODS ou LODSB/LODSW STOS ou STOSB/STOSW

Prxes e Rptition tant que CX nest pas nul e e Rptition tant quil y a galit et que CX nest pas nul e e e e Rptition tant quil ny a pas galit et que CX nest e e e e pas nul Instructions Dplacement de blocs doctets ou de mots e Comparaison de blocs doctets ou de mots Exploration dun bloc doctets ou de mots Tranfert dun octet ou dun mot dans AL ou AX Chargement dun bloc doctets ou de mots par AL ou AX

Instructions de branchements :

CALL RET JMP LOOP LOOPE ou LOOPZ LOOPNE ou LOOPNZ JCXZ INT INTO IRET

Branchements inconditionnels Appel de procdure e Retour dune procdure e Saut inconditionnel Contrles ditrations o e Bouclage tant que CX = 0 Bouclage tant que CX = 0 et ZF = 1 (galit) e e Bouclage tant que CX = 0 et ZF = 0 (ingalit) e e Saut si CX est nul Interruptions Interruption logicielle Interruption si OF = 1 (overow) Retour dune interruption

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad`s e

80

Annexe - Jeu dinstructions du 8086

Instructions de branchements conditionnels : Sauts conditionnels si suprieur (si CF + ZF = 0) e si suprieur ou gal (si CF = 0) e e si infrieur (si CF = 1) e si infrieur ou gal (si CF + ZF = 1) e e en cas de retenue (si CF = 1) si gal ou nul (si ZF = 1) e si plus grand (si (SF OF) + ZF = 0) si plus grand ou gal (si SF OF = 0) e si plus petit (si SF OF = 1) si plus petit ou gal (si (SF OF) + ZF = 1) e si pas de retenue (si CF = 0) si non gal ou non nul (si (ZF = 0) e si pas de dpassement (si OF = 0) e si parit impaire (si PF = 0) e si signe positif (si SF = 0) si dpassement (si OF = 1) e si parit paire (si PF = 1) e si signe ngatif (si SF = 1) e

JA ou JNBE (1) JAE ou JNB (1) JB ou JNAE (1) JBE ou JNA (1) JC JE ou JZ JG ou JNLE (2) JGE ou JNL (2) JL ou JNGE (2) JLE ou JNG (2) JNC JNE ou JNZ JNO JNP ou JPO JNS JO JP ou JPE JS
(1) (2)

Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut Saut

concerne des nombres non signs. e concerne des nombres signs. e

Instructions de contrle du 8086 : o Oprations sur les ags e Met le ag de retenue ` 1 a Eace le ag de retenue Inverse ltat du ag de retenue e Met le ag de direction a 1 (dcrmentation) ` e e Met le ag de direction a 0 (incrmentation) ` e Autorise les interruptions sur INTR Interdit les interruptions sur INTR Synchronisation avec lextrieur e Arrt du microprocesseur (sortie de cet tat par intere e ruption ou reset) Attente tant que TEST nest pas ` 0 a Prxe = instruction destine ` un coprocesseur e e a Prxe = rservation du bus pour linstruction e e Pas dopration e Pas dopration e

STC CLC CMC STD CLD STI CLI HLT WAIT ESC LOCK NOP

ISET Rad`s e

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. Linterface 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 Matriel, logiciel, syst`me e e dexploitation. 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 micro` ordinateur. Editions Radio, Paris, 1982. [10] H. Lilen. 8088 et ses priphriques Les circuits cls des IBM PC et compatibles. e e e 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 lassembleur I80x86 Cours et exercices. Herm`s, Paris, e 1994. [22] H. Schakel. Programmer en assembleur sur PC. Micro Application, Paris, 1995.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad`s e

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

Bibliographie

[24] M. Tischer et B. Jennrich. La bible PC Programmation syst`me. Micro Applie cation, Paris, 1997. [25] R. Tourki. Lordinateur 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`me Introduction aux microprocese seurs. Sybex, Paris, 1988.

ISET Rad`s e

cours de microprocesseur

` HAGGEGE, 2003