Vous êtes sur la page 1sur 86

Institut Sup erieur des Etudes Technologiques de Rad` es D epartement de G enie Electrique

MICROPROCESSEUR Support de cours

eme niveau G enie Electrique 4`

`ge Dr J.Y. Hagge


Ing enieur ENIT Agr eg e de G enie Electrique Technologue a ` lISET de Rad` es

2003

ii

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Table des mati` eres


1 Historique et evolution des ordinateurs 1.1 Pr ehistoire des ordinateurs . . . . . 1.2 Machines electrom ecaniques . . . . . . 1.3 Machines electroniques . . . . . . . . . 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 m emoire centrale . . . . . . . . . . . . 2.3 Circulation de linformation dans un calculateur . . . . . 2.4 Description mat erielle dun microprocesseur . . . . . . . 2.5 Fonctionnement dun microprocesseur . . . . . . . . . . . 3 Les 3.1 3.2 3.3 3.4 3.5 3.6 3.7 m emoires M emoires ROM et RAM . . . . . . . . . . . . . Sch ema fonctionnel dune m emoire . . . . . . . Interfa cage microprocesseur/m emoire . . . . . . Chronogrammes de lecture/ ecriture en m emoire Connection de plusieurs bo tiers m emoire . . . . D ecodage dadresses . . . . . . . . . . . . . . . Classication des m emoires . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

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

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

5 La programmation en assembleur du microprocesseur 8086 5.1 G en eralit es . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Les instructions de transfert . . . . . . . . . . . . . . . . . . . 5.3 Les instructions arithm etiques . . . . . . . . . . . . . . . . . . 5.4 Les instructions logiques . . . . . . . . . . . . . . . . . . . . .
` HAGGEGE, 2003 cours de microprocesseur

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

ISET Rad` es

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` eres Les instructions de branchement . . . . . . . . . . . . . . . . . . . . . . . . 42 M ethodes de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . 48 interfaces dentr ees/sorties D enitions . . . . . . . . . . . Adressage des ports dE/S . . Gestion des ports dE/S par le Linterface parall` ele 8255 . . . Linterface s erie 8250 . . . . . . . . . . . 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 53 55 60 71 71 72 73 74 75 77 81

interruptions D enition dune interruption . . . . . . . . . . . . . . . . Prise en charge dune interruption par le microprocesseur Adresses des sous-programmes dinterruptions . . . . . . Les interruptions du 8086 . . . . . . . . . . . . . . . . . Le contr oleur programmable dinterruptions 8259 . . . .

Annexe - Jeu dinstructions du 8086 Bibliographie

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 1 Historique et evolution des ordinateurs


1.1 Pr ehistoire des ordinateurs

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

1.2

Machines electrom ecaniques

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

1.3

Machines electroniques

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

Chapitre 1 - Historique et evolution des ordinateurs

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

1.4

Machines actuelles

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

ISET Rad` es

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

L el ement de base dun calculateur est constitu e par lunit e centrale de traitement (UCT, CPU : Central Processing Unit). LUCT est constitu ee : dune unit e arithm etique et logique (UAL, ALU : Arithmetic and Logic Unit) : cest lorgane de calcul du calculateur ; de registres : zones de stockage des donn ees de travail de lUAL (op erandes, r esultats interm ediaires) ; dune unit e de contr ole (UC, CU : Control Unit) : elle envoie les ordres (ou commandes) ` a tous les autres el ements du calculateur an dex ecuter un programme. La m emoire centrale contient : le programme a ` ex ecuter : suite dinstructions el ementaires ; les donn ees ` a traiter.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

Lunit e dentr ees/sorties (E/S) est un interm ediaire entre le calculateur et le monde ext erieur. Lunit e de transfert est le support mat eriel de la circulation des donn ees. Les echanges dordres et de donn ees dans le calculateur sont synchronis es par une horloge qui d elivre des impulsions (signal dhorloge) a ` des intervalles de temps xes. D enition : un microprocesseur consiste en une unit e centrale de traitement (UAL + registres + unit e de contr ole) enti` erement contenue dans un seul circuit int egr e. Un calculateur construit autour dun microprocesseur est un microcalculateur ou un microordinateur. Remarque : un circuit int egr e qui inclut une UCT, de la m emoire et des p eriph eriques est un microcontr oleur.

2.2

Organisation de la m emoire centrale

La m emoire peut etre vue comme un ensemble de cellules ou cases contenant chacune une information : une instruction ou une donn ee. Chaque case m emoire est rep er ee par un num ero dordre unique : son adresse. Repr esentation :
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 m emoire peut etre lue ou ecrite par le microprocesseur (cas des m emoires vives) ou bien seulement lue (cas des m emoires mortes).
ISET Rad` es 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 echange des informations avec la m emoire et lunit e dE/S, sous forme de mots binaires, au moyen dun ensemble de connexions appel e bus. Un bus permet de transf erer des donn ees sous forme parall` elle, cest-` a-dire en faisant circuler n bits simultan ement. Les microprocesseurs peuvent etre class es selon la longueur maximale des mots binaires quils peuvent echanger avec la m emoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ... Le bus peut etre d ecompos e en trois bus distincts : le bus dadresses permet au microprocesseur de sp ecier ladresse de la case m emoire ` a lire ou a ` ecrire ; le bus de donn ees permet les transferts entre le microprocesseur et la m emoire ou les E/S ; le bus de commande transmet les ordres de lecture et d ecriture de la m emoire et des E/S.
priphriques bus de donnes 16 bus d'adresses bus de commande
ISET Rad` es

largeur du bus (nombre de bits en parallle) 8

microprocesseur

mmoire

E/S

Remarque : les bus de donn ees et de commande sont bidirectionnels, le bus dadresse est unidirectionnel : seul le microprocesseur peut d elivrer des adresses (il existe une d erogation pour les circuits dacc` es direct ` a la m emoire, DMA).
` HAGGEGE, 2003 cours de microprocesseur

priphriques

La r ealisation mat erielle des ordinateurs est g en eralement bas ee sur larchitecture de Von Neumann :

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

2.4

Description mat erielle dun microprocesseur

Un microprocesseur se pr esente sous la forme dun circuit int egr e muni dun nombre g en eralement important de broches. Exemples : Intel 8085, 8086, Zilog Z80 : 40 broches, DIP (Dual In-line Package) ; Motorola 68000 : 64 broches, DIP ; Intel 80386 : 196 broches, PGA (Pin Grid Array). Technologies de fabrication : NMOS, PMOS, CMOS. On peut repr esenter un microprocesseur par son sch ema fonctionnel :

alimentation 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 ex ecute un programme. Le programme est une suite dinstructions stock ees dans la m emoire. Une instruction peut etre cod ee sur un ou plusieurs octets. Format dune instruction :

opration effectuer

oprande 1

oprande 2

donnes traites par l'opration


Exemple : emoire 1, case m emoire 2 ADDITIONNER case m
op eration op erandes cours de microprocesseur ` HAGGEGE, 2003

ISET Rad` es

2.5 - Fonctionnement dun microprocesseur Rangement en m emoire :

oprande p instruction n

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

0002H 0001H 0000H

Pour ex ecuter les instructions dans lordre etabli par le programme, le microprocesseur doit savoir a ` chaque instant ladresse de la prochaine instruction a ` ex ecuter. Le microprocesseur utilise un registre contenant cette information. Ce registre est appel e pointeur 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 x ee par le constructeur du microprocesseur. Elle vaut une valeur bien d enie ` a chaque mise sous tension du microprocesseur ou bien lors dune remise a ` z ero (reset). Pour savoir quel type dop eration doit etre ex ecut e (addition, soustraction, ...), le microprocesseur lit le premier octet de linstruction point ee par le pointeur dinstruction (code op eratoire) et le range dans un registre appel e registre dinstruction. Le code op eratoire est d ecod e par des circuits de d ecodage contenus dans le microprocesseur. Des signaux de commande pour lUAL sont produits en fonction de lop eration demand ee qui est alors ex ecut ee. Remarque : pour ex ecuter une instruction, lUAL utilise des registres de travail, exemple : laccumulateur, registre temporaire recevant des donn ees interm ediaires.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

Pendant que linstruction est d ecod ee, le pointeur dinstruction est incr ement e de fa con ` 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 d ecodage des instructions recommence. A la suite de chaque instruction, un registre du microprocesseur est actualis e en fonction du dernier r esultat : cest le registre d etat du microprocesseur. Chacun des bits du registre d etat est un indicateur d etat ou ag (drapeau). Exemple : registre d etat du microprocesseur Z80 :
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 d etat sont activ es lorsquune certaine condition est remplie, exemple : le ag Z est mis a ` 1 lorsque la derni` ere op eration a donn e un r esultat nul, le ag C est mis ` a un lorsque le r esultat dune addition poss` ede une retenue, ... Les indicateurs d etat sont utilis es par les instructions de saut conditionnels : en fonction de l etat dun (ou plusieurs) ags, le programme se poursuit de mani` ere di erente. Toutes ces etapes (lecture de linstruction, d ecodage, ex ecution) sont synchronis ees par un s equenceur qui assure le bon d eroulement des op erations :
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` es

cours de microprocesseur

2.5 - Fonctionnement dun microprocesseur

Pour ex ecuter le programme contenu dans la m emoire centrale, le s equenceur du microprocesseur ex ecute lui-m eme un programme appel e micro-code, contenu dans une m emoire morte a ` lint erieur du microprocesseur. Le s equenceur est dirig e par une horloge qui d elivre un signal de fr equence donn ee permettant dencha ner les di erentes etapes de lex ecution dune instruction :
cycle d'instruction priode d'horloge (microcycle)

T1 recherche de l'instruction

T2 dcodage

T3 excution instruction suivante

Chaque instruction est caract eris ee par le nombre de p eriodes dhorloge (ou microcycles) quelle utilise (donn ee fournie par le fabricant du microprocesseur). Exemple : horloge a ` 5 MHz, p eriode T = 1/f = 0, 2 s. Si linstruction sex ecute en 3 microcycles, la dur ee dex ecution de linstruction est : 3 0, 2 = 0, 6 s. Lhorloge est constitu ee par un oscillateur a ` quartz dont les circuits peuvent etre internes ou externes au microprocesseur. Structure compl` ete dun microprocesseur simple : pour fonctionner, un microprocesseur n ecessite donc au minimum les el ements suivants :
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` es

10

Chapitre 2 - Architecture et fonctionnement dun microprocesseur

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 3 Les m emoires


3.1 M emoires ROM et RAM

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

3.2

Sch ema fonctionnel dune m emoire


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 d epend de la capacit e de la m emoire : n lignes dadresses n emoire : 8 bits dadresses permettent dadresser 256 ocpermettent dadresser 2 cases m
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

12

Chapitre 3 - Les m emoires

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

3.3

Interfa cage microprocesseur/m emoire


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

Repr esentation condens ee (plus pratique) :


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` es

cours de microprocesseur

` HAGGEGE, 2003

3.4 - Chronogrammes de lecture/ ecriture en m emoire

13

3.4

Chronogrammes de lecture/ ecriture en m emoire

Une caract eristique importante des m emoires est leur temps dacc` es : cest le temps qui s ecoule entre linstant o` u ladresse de la case m emoire est pr esent ee sur le bus dadresses et celui o` u la m emoire place la donn ee demand ee sur le bus de donn ees. Ce temps varie entre 50 ns (m emoires rapides) et 300 ns (m emoires lentes). Chronogramme de lecture en m emoire :

une 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` es dune m emoire est sup erieur a ` une p eriode dhorloge (m emoire lente), le microprocesseur peut accorder a ` la m emoire un temps suppl ementaire (une ou plusieurs p eriodes dhorloge), a ` la demande de celle-ci. Ce temps suppl ementaire est appel e temps dattente (wait time : TW ) :
signal de lecture microprocesseur demande de temps d'attente
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

mmoire

14 Chronogramme d ecriture en m emoire :

Chapitre 3 - Les m emoires

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 m emoire sur le bus dun microprocesseur

Les bo tiers m emoire poss` edent une broche not ee CS : Chip Select. Lorsque cette broche est active ( etat bas), le circuit peut etre lu ou ecrit. Lorsquelle est inactive( etat haut), le circuit est exclu du service : ses broches de donn ees D0 ` a D7 passent a ` l etat de haute imp edance : tout se passe comme si la m emoire etait d econnect ee du bus de donn ees du microprocesseur, do` u la possibilit e de connecter plusieurs bo tiers m emoire sur un m eme etre actif a ` un instant donn e pour eviter les conits entre les bus : un seul signal CS doit di erents bo tiers. Exemple : connexion de trois bo tiers m emoire dune capacit e de 8 Ko chacun (13 lignes dadresses) sur un bus dadresse de 16 bits :
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

3.5 - Connection de plusieurs bo tiers m emoire


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 m eme bo tier, une case m emoire est d esign ee par les bits dadresses A0 ` a A12 : A12 0 A11 0 ... ... 0000H A1 0 A0 0 ` a A12 1 A11 1 ... ... 1FFFH A1 1 A0 1

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

De m eme, pour la m emoire no 2, on doit avoir A13 = 0, A14 = 1 et A15 = 0 do` u la plage dadresses occup ee cette m emoire : 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 m emoire no 3, on doit avoir A13 = 0, A14 = 0 et A15 = 1 do` u la plage dadresses occup ee cette m emoire : 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 d eduit la cartographie ou mapping de la m emoire visible par le microprocesseur :


` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

16
FFFFH

Chapitre 3 - Les m emoires

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

D ecodage dadresses

Les trois bits A13, A14 et A15 utilis es pr ec edemment fournissent en fait 8 combinaisons, de 000 a ` 111, do` u la possibilit e de connecter jusqu` a 8 bo tiers m emoire de 8 Ko sur le bus. La m emoire totale implant ee devient donc de 8 8 Ko = 64 Ko : valeur maximale possible avec 16 bits dadresses. Pour cela, il faut utiliser un circuit de d ecodage dadresses, dans ce cas : un d ecodeur 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` es cours de microprocesseur ` HAGGEGE, 2003

3.7 - Classication des m emoires Table de v erit e du d ecodeur dadresses : 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 m emoire devient ainsi :


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 m emoires

Jusqu` a la n des ann ees 1970, on utilisait des m emoires ` a tores magn etiques, lentes et de faibles capacit es. Actuellement, on nutilise plus que des m emoires ` a semiconducteurs.
mmoires semiconducteurs mmoires mortes ROM
` HAGGEGE, 2003

mmoires vives DRAM SRAM


ISET Rad` es

PROM EPROM EEPROM


cours de microprocesseur

18 M emoires mortes :

Chapitre 3 - Les m emoires

ROM : Read Only Memory. M emoire ` a lecture seule, sans ecriture. Son contenu est programm e une fois pour toutes par le constructeur. Avantage : faible co ut. Inconv enient : n ecessite une production en tr` es grande quantit e. PROM : Programmable Read Only Memory. ROM programmable une seule fois par lutilisateur (ROM OTP : One Time Programming) en faisant sauter des fusibles. N ecessite un programmateur sp ecialis e : application dune tension de programmation (21 ou 25 V) pendant 20 ms. EPROM : Erasable PROM, appel ee aussi UVPROM. ROM programmable electriquement avec un programmateur et ea cable par exposition a ` un rayonnement ultraviolet pendant 30 minutes. Famille 27nnn, exemple : 2764 (8 Ko), 27256 (32 Ko). Avantage : reprogrammable par lutilisateur. EEPROM : Electrically Erasable PROM. ROM programmable et ea cable electriquement. Lecture ` a vitesse normale ( 100 ns). Ecriture (= eacement) tr` es lente ( 10 ms). Application : les EEPROM contiennent des donn ees qui peuvent etre modi ees de temps en temps, exemple : param` etres de conguration des ordinateurs. Avantage : programmation sans extraction de la carte et sans programmateur. Inconv enient : co ut elev e. M emoires vives : SRAM : Static Random Access Memory. M emoire statique a ` acc` es al eatoire, a ` base de bascules ` a semiconducteurs ` a deux etats (bascules RS). Famille 62nnn, exemple : 62128 (16 Ko). Avantage : tr` es rapide, simple dutilisation. Inconv enient : compliqu e ` a r ealiser. DRAM : Dynamic RAM. Bas ee sur la charge de condensateurs : condensateur charg e = 1, condensateur d echarg e = 0. Avantage : int egration elev ee, faible co ut. Inconv enient : n ecessite un rafra chissement p eriodique ` a cause du courant de fuite des condensateurs. Application : r ealisation de la m emoire vive des ordinateurs (barettes m emoire SIMM : Single In-line Memory module).

ISET Rad` es

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 pr esente sous la forme dun bo 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` es

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

Sch ema fonctionnel du 8086


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 : entr ee du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce signal provient dun g en erateur dhorloge : le 8284.
4,77 MHz quartz 14,318 MHz 8284 CLK READY 8086 RESET gnrateur d'horloge
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

4.3 - Description et utilisation des signaux du 8086

21

RESET : entr ee de remise ` a z ero du microprocesseur. Lorsque cette entr ee est mise ` a l etat haut pendant au moins 4 p eriodes dhorloge, le microprocesseur est r einitialis e : il va ex ecuter linstruction se trouvant a ` ladresse FFFF0H (adresse de bootstrap). Le signal de RESET est fourni par le g en erateur dhorloge. READY : entr ee de synchronisation avec la m emoire. Ce signal provient egalement du g en erateur dhorloge. TEST : entr ee de mise en attente du microprocesseur dun ev enement ext erieur. MN/MX : entr ee de choix du mode de fonctionnement du microprocesseur : mode minimum (MN/MX = 1) : le 8086 fonctionne de mani` ere autonome, il g en` ere lui-m eme le bus de commande (RD, WR, ...) ; mode maximum (MN/MX = 0) : ces signaux de commande sont produits par un contr oleur de bus, le 8288. Ce mode permet de r ealiser des syst` emes multiprocesseurs.

NMI et INTR : entr ees de demande dinterruption. INTR : interruption normale, NMI (Non Maskable Interrupt) : interruption prioritaire. INTA : Interrupt Acknowledge, indique que le microprocesseur accepte linterruption. HOLD et HLDA : signaux de demande daccord dacc` es direct ` a la m emoire (DMA). S0 ` a S7 : signaux d etat indiquant le type dop eration en cours sur le bus. A16/S3 ` a A19/S6 : 4 bits de poids fort du bus dadresses, multiplex es avec 4 bits d etat. AD0 ` a AD15 : 16 bits de poids faible du bus dadresses, multiplex es avec 16 bits de donn ees. Le bus A/D est multiplex e (multiplexage temporel) do` u la n ecessit e dun d emultiplexage pour obtenir s epar ement les bus dadresses et de donn ees : 16 bits de donn ees (microprocesseur 16 bits) ; emoire adressable par le 8086. 20 bits dadresses, do` u 220 = 1 Mo despace m

Chronogramme du bus A/D :


` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

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 d emultiplexage des signaux AD0 a ` AD15 (ou A16/S3 a ` A19/S6) se fait en m emorisant ladresse lorsque celle-ci est pr esente sur le bus A/D, ` a laide dun verrou (latch), ensemble de bascules D. La commande de m emorisation de ladresse est g en er ee par le microprocesseur : cest le signal ALE, Address Latch Enable. Circuit de d emultiplexage A/D :
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, m emorisation de la derni` ere valeur de D sur les sorties Q ; les signaux de lecture (RD) ou d ecriture (WR) ne sont g en er es par le microprocesseur que lorsque les donn ees sont pr esentes sur le bus A/D.
ISET Rad` es 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 donn ee. WR : Write, signal d ecriture dune donn ee. emoire (M/IO = 1) ou les M/IO : Memory/Input-Output, indique si le 8086 adresse la m entr ees/sorties (M/IO = 0). DEN : Data Enable, indique que des donn ees sont en train de circuler sur le bus A/D ( equivalent de ALE pour les donn ees). ees : DT/R : Data Transmit/Receive, indique le sens de transfert des donn ees emises par le microprocesseur ( ecriture) ; DT/R = 1 : donn DT/R = 0 : donn ees re cues par le microprocesseur (lecture).
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 utilis es pour la commande de tampons de bus (buers) permettant damplier le courant fourni par le microprocesseur sur le bus de donn ees.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

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 donn ees. Le 8086 poss` ede un bus dadresses sur 20 bits, do` u la capacit e dadressage de 1 Mo ou 512 Kmots de 16 bits (bus de donn ees sur 16 bits). Le m ega-octet adressable est divis e en deux banques de 512 Ko chacune : la banque inf erieure (ou paire) et la banque sup erieure (ou impaire). Ces deux banques sont s electionn ees par : A0 pour la banque paire qui contient les octets de poids faible ; 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` es cours de microprocesseur ` HAGGEGE, 2003

CS

4.3 - Description et utilisation des signaux du 8086

25

Seuls les bits A1 ` a A19 servent a ` d esigner une case m emoire dans chaque banque de 512 Ko. Le microprocesseur peut ainsi lire et ecrire des donn ees sur 8 bits ou sur 16 bits : BHE A0 0 0 0 1 1 0 1 1 octets transf er es les deux octets (mot complet) octet fort (adresse impaire) octet faible (adresse paire) aucun octet

Remarque : le 8086 ne peut lire une donn ee sur 16 bits en une seule fois, uniquement si loctet de poids fort de cette donn ee est rang e` a une adresse impaire et loctet de poids faible a ` une adresse paire (alignement sur les adresses paires), sinon la lecture de cette donn ee doit se faire en deux op erations successives, do` u une augmentation du temps dex ecution du transfert d u` a un mauvais alignement des donn ees. R ealisation des deux banques avec plusieurs bo tiers m emoire :
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` es

26 Cr eation du bus syst` eme du 8086 :

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 e de deux unit es fonctionnant en parall` ele : lunit e dex ecution (EU : Execution Unit) ; lunit e dinterface de bus (BIU : Bus Interface Unit).
ISET Rad` es 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)

R ole des deux unit es : lunit e dinterface de bus (BIU) recherche les instructions en m emoire et les range dans une le dattente ; lunit e dex ecution (EU) ex ecute les instructions contenues dans la le dattente. Les deux unit es fonctionnent simultan ement, do` u une acc el eration du processus dex ecution dun programme (fonctionnement selon le principe du pipe-line). Le microprocesseur 8086 contient 14 registres r epartis en 4 groupes : Registres g en eraux : 4 registres sur 16 bits.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

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

Chapitre 4 - Le microprocesseur Intel 8086

Ils peuvent etre egalement consid er es comme 8 registres sur 8 bits. Ils servent a ` contenir temporairement des donn ees. Ce sont des registres g en eraux mais ils peuvent etre utilis es pour des op erations particuli` eres. Exemple : AX = accumulateur, CX = compteur. Registres de pointeurs et dindex : 4 registres sur 16 bits. Pointeurs : SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde de donn ees en cours dex ecution dun programme) ; BP : Base Pointer, pointeur de base, utilis e pour adresser des donn ees sur la pile. Index : SI : Source Index ; DI : Destination Index. Ils sont utilis es pour les transferts de cha nes doctets entre deux zones m emoire. Les pointeurs et les index contiennent des adresses de cases m emoire. Pointeur dinstruction et indicateurs (ags) : 2 registres sur 16 bits. Pointeur dinstruction : IP, contient ladresse de la prochaine instruction a ` ex ecuter. 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 z ero ; SF : indicateur de signe ; TF : indicateur dex ecution pas ` a pas (trap) ; IF : indicateur dautorisation dinterruption ; DF : indicateur de d ecr ementation ; OF : indicateur de d epassement (overow). Registres de segments : 4 registres sur 16 bits. CS : Code Segment, registre de segment de code ;
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

4.5 - Gestion de la m emoire par le 8086

29

DS : Data Segment, registre de segment de donn ees ; SS : Stack Segment, registre de segment de pile ; ES : Extra Segment, registre de segment suppl ementaire pour les donn ees ; Les registres de segments, associ es aux pointeurs et aux index, permettent au microprocesseur 8086 dadresser lensemble de la m emoire.

4.5

Gestion de la m emoire par le 8086

Lespace m emoire adressable par le 8086 est de 220 = 1 048 576 octets = 1 Mo (20 bits dadresses). Cet espace est divis e en segments. Un segment est une zone m emoire de 64 Ko (65 536 octets) d enie par son adresse de d epart qui doit etre un multiple de 16. Dans une telle adresse, les 4 bits de poids faible sont a ` z ero. On peut donc repr esenter ladresse dun segment avec seulement ses 16 bits de poids fort, les 4 bits de poids faible etant implicitement ` a 0. Pour d esigner une case m emoire parmi les 216 = 65 536 contenues dans un segment, il sut dune valeur sur 16 bits. Ainsi, une case m emoire est rep er ee par le 8086 au moyen de deux quantit es sur 16 bits : ladresse dun segment ; un d eplacement ou oset (appel e aussi adresse eective) dans ce segment. Cette m ethode de gestion de la m emoire est appel ee segmentation de la m emoire.

1 Mo

FFFFFH

un segment (64 Ko)

case mmoire offset adresse multiple de 16

00000H

La donn ee dun couple (segment,oset) d enit une adresse logique, not ee sous la forme segment : oset. Ladresse dune case m emoire donn ee sous la forme dune quantit e sur 20 bits (5 digits hexa) est appel ee adresse physique car elle correspond a ` la valeur envoy ee r eellement sur le bus dadresses A0 - A19.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

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 z eros en poids faible du segment revient a ` eectuer un d ecalage de 4 positions vers la gauche, cest a ` dire une multiplication par 24 = 16. A un instant donn e, le 8086 a acc` es ` a 4 segments dont les adresses se trouvent dans les registres de segment CS, DS, SS et ES. Le segment de code contient les instructions du programme, le segment de donn ees contient les donn ees manipul ees par le programme, le segment de pile contient la pile de sauvegarde et le segment suppl ementaire peut aussi contenir des donn ees. Le registre CS est associ e au pointeur dinstruction IP, ainsi la prochaine instruction a ` ex ecuter se trouve a ` ladresse logique CS : IP.

1 Mo

FFFFFH

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

0
ISET Rad` es

00000H
cours de microprocesseur ` HAGGEGE, 2003

4.5 - Gestion de la m emoire par le 8086

31

De m eme, les registres de segments DS et ES peuvent etre associ es ` a un registre dindex. Exemple : DS : SI, ES : DI. Le registre de segment de pile peut etre associ e aux registres de pointeurs : SS : SP ou SS : BP. M emoire accessible par le 8086 a ` un instant donn e:

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 n ecessairement distincts les uns des autres, ils peuvent se chevaucher ou se recouvrir compl` etement.
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 e d enit le mod` ele m emoire du programme.


` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

32

Chapitre 4 - Le microprocesseur Intel 8086

Contenu des registres apr` es un RESET du microprocesseur : IP = 0000H CS = FFFFH DS = 0000H ES = 0000H SS = 0000H Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la premi` ere instruction ex ecut ee par le 8086 se trouve donc a ` ladresse logique FFFFH : 0000H, correspondant a ` ladresse physique FFFF0H (bootstrap). Cette instruction est g en eralement un saut vers le programme principal qui initialise ensuite les autres registres de segment.

4.6

Le microprocesseur 8088

Le microprocesseur 8088 est identique au 8086 sauf que son bus de donn ees externe est sur 8 bits au lieu de 16 bits, le bus de donn ees interne restant sur 16 bits. Le 8088 a et e produit par Intel apr` es le 8086 pour assurer la compatibilit e avec des circuits p eriph eriques d ej` a existant, fabriqu es pour les microprocesseurs 8 bits 8080 et 8085. Di erences avec le 8086 : les broches AD8 ` a AD15 deviennent A8 a ` A15 (bus de donn ees sur 8 bits) ; la broche BHE nexiste pas dans le 8088 car il ny a pas doctet de poids fort sur le bus de donn ees ; e avec danciens circuits dE/S. la broche M/IO devient IO/M pour la compatibilit Au niveau de larchitecture interne, pas de di erences avec le 8086 sauf que la le dattente des instructions passe de 6 a ` 4 octets.

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 5 La programmation en assembleur du microprocesseur 8086


5.1 G en eralit es

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

5.2

Les instructions de transfert

Elles permettent de d eplacer des donn ees dune source vers une destination : registre vers m emoire ; registre vers registre ; m emoire vers registre. Remarque : le microprocesseur 8086 nautorise pas les transferts de m emoire vers m emoire (pour ce faire, il faut passer par un registre interm ediaire).
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

34

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Syntaxe : MOV destination,source Remarque : MOV est labbr eviation du verbe to move : d eplacer. Il existe di erentes fa cons de sp ecier ladresse dune case m emoire dans une instruction : 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 donn ee est fournie imm ediatement avec linstruction : adressage imm ediat. mov bl,[1200H] : transf` ere le contenu de la case m emoire dadresse eective (oset) 1200H vers le registre BL. Linstruction comporte ladresse de la case m emoire o` u se trouve la donn ee : adressage direct. Ladresse eective repr esente loset de la case m emoire dans le segment de donn ees (segment dont ladresse est contenue dans le registre DS) : segment par d efaut.
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 pr exe de segment, exemple : mov bl,es :[1200H]. On parle alors de for cage de segment.
1 Mo FFFFFH mov bl, es : 1200H BL extra segment ES : 1200H offset = 1200H ES : 0000H

00000H

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

5.2 - Les instructions de transfert

35

Remarque : dans le cas de ladressage imm ediat de la m emoire, il faut indiquer le format de la donn ee : octet ou mot (2 octets) car le microprocesseur 8086 peut manipuler des donn ees sur 8 bits ou 16 bits. Pour cela, on doit utiliser un sp ecicateur de format : mov byte ptr [1100H],65H : transf` ere la valeur 65H (sur 1 octet) dans la case m emoire doset 1100H ; mov word ptr [1100H],65H : transf` ere la valeur 0065H (sur 2 octets) dans les cases m emoire doset 1100H et 1101H.
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 donn ee sur plusieurs octets ` a ladresse la plus basse (format Little Endian). Modes dadressage evolu es : adressage bas e : loset est contenu dans un registre de base BX ou BP. Exemples : mov al,[bx] : transf` ere la donn ee dont loset est contenu dans le registre de base BX vers le registre AL. Le segment associ e par d efaut au registre BX est le segment de donn ees : on dit que ladressage est bas e sur DS ; mov al,[bp] : le segment par d efaut associ e au registre de base BP est le segment de pile. Dans ce cas, ladressage est bas e sur SS.
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 e : semblable ` a ladressage bas e, sauf que loset est contenu dans un registre dindex SI ou DI, associ es par d efaut au segment de donn ees. Exemples : mov al,[si] : charge le registre AL avec le contenu de la case m emoire dont loset est contenu dans SI ;
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

36

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

Remarque : une valeur constante peut eventuellement etre ajout ee aux registres de base ou dindex pour obtenir loset. Exemple : mov [si+100H],ax qui peut aussi s ecrire mov [si][100H],ax ou encore mov 100H[si],ax Les modes dadressage bas es ou index es permettent la manipulation de tableaux rang es en m emoire. Exemple : mov mov mov mov si,0 word ptr table[si],1234H si,2 word ptr table[si],5678H

Dans cet exemple, table repr esente loset du premier el ement du tableau et le registre SI joue le r ole dindice de tableau :

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

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

5.3 - Les instructions arithm etiques

37

5.3

Les instructions arithm etiques

Les instructions arithm etiques de base sont laddition, la soustraction, la multiplication et la division qui incluent diverses variantes. Plusieurs modes dadressage sont possibles. Addition : ADD op erande1,op erande2 Lop eration eectu ee est : op erande1 op erande1 + op erande2. Exemples : add ah,[1100H] : ajoute le contenu de la case m emoire doset 1100H a ` laccumulateur AH (adressage direct) ; add ah,[bx] : ajoute le contenu de la case m emoire point ee par BX ` a laccumulateur AH (adressage bas e) ; add byte ptr [1200H],05H : ajoute la valeur 05H au contenu de la case m emoire doset 1200H (adressage imm ediat). Soustraction : SUB op erande1,op erande2 Lop eration eectu ee est : op erande1 op erande1 op erande2. Multiplication : MUL op erande, o` u op erande est un registre ou une case m emoire. Cette instruction eectue la multiplication du contenu de AL par un op erande sur 1 octet ou du contenu de AX par un op erande sur 2 octets. Le r esultat est plac e dans AX si les donn ees ` a multiplier sont sur 1 octet (r esultat sur 16 bits), dans (DX,AX) si elles sont sur 2 octets (r esultat sur 32 bits). Exemples : mov al,51 mov bl,32 mul bl AX = 51 32 mov ax,4253 mov bx,1689 mul bx (DX, AX) = 4253 1689 mov al,43 mov byte ptr [1200H],28 mul byte ptr [1200H] AX = 43 28 mov ax,1234 mov word ptr [1200H],5678 mul word ptr [1200H] (DX, AX) = 1234 5678 Division : DIV op erande, o` u op erande est un registre ou une case m emoire. Cette instruction eectue la division du contenu de AX par un op erande sur 1 octet ou le contenu de (DX,AX) par un op erande sur 2 octets. R esultat : si lop erande est sur 1 octet,
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

38

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

alors AL = quotient et AH = reste ; si lop erande est sur 2 octets, alors AX = quotient et DX = reste. Exemples : mov ax,35 mov bl,10 div bl AL = 3 (quotient) et AH = 5 (reste) mov dx,0 mov ax,1234 mov bx,10 div bx AX = 123 (quotient) et DX = 4 (reste) Autres instructions arithm etiques : ADC : addition avec retenue ; SBB : soustraction avec retenue ; INC : incr ementation dune unit e; DEC : d ecr ementation dune unit e; IMUL : multiplication sign ee ; IDIV : division sign ee.

5.4

Les instructions logiques

Ce sont des instructions qui permettent de manipuler des donn ees au niveau des bits. Les op erations logiques de base sont : ET ; OU ; OU exclusif ; compl ement ` a 1; compl ement ` a 2; d ecalages et rotations. Les di erents modes dadressage sont disponibles. ET logique : AND op erande1,op erande2 Lop eration eectu ee est : op erande1 op erande1 ET op erande2. Exemple : mov al,10010110B mov bl,11001101B and al, bl
ISET Rad` es

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 ` z ero certains bits dans un mot. 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 op erande1,op erande2 Lop eration eectu ee est : op erande1 op erande1 OU op erande2. Application : mise ` a 1 dun ou plusieurs bits dans un mot. 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 s ecrire : mov ah,10110001B or ah,00001010B Compl ement ` a 1 : NOT op erande Lop eration eectu ee est : op erande op erande. Exemple : mov al,10010001B AL = 10010001B = 01101110B not al Compl ement ` a 2 : NEG op erande Lop eration eectu ee est : op erande op erande + 1. Exemple : mov al,25 mov bl,12 AL = 25 + (12) = 13 neg bl add al,bl OU exclusif : XOR op erande1,op erande2 Lop eration eectu ee est : op erande1 op erande1 op erande2. Exemple : mise ` a z ero dun registre : mov al,25 AL = 0 xor al,al Instructions de d ecalages et de rotations : ces instructions d eplacent dun certain nombre de positions les bits dun mot vers la gauche ou vers la droite. Dans les d ecalages, les bits qui sont d eplac es sont remplac es par des z eros. Il y a les d ecalages logiques (op erations non sign ees) et les d ecalages arithm etiques (op erations sign ees).
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

40

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Dans les rotations, les bits d eplac es dans un sens sont r einject es de lautre c ot e du mot. D ecalage logique vers la droite (Shift Right) : SHR op erande,n Cette instruction d ecale lop erande de n positions vers la droite. 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

entr ee dun 0 a ` la place du bit de poids fort ; le bit sortant passe a ` travers lindicateur de retenue CF. Remarque : si le nombre de bits ` a d ecaler est sup erieur a ` 1, ce nombre doit etre plac e dans le registre CL ou CX. Exemple : d ecalage de AL de trois positions vers la droite : mov cl,3 shr al,cl D ecalage logique vers la gauche (Shift Left) : SHL op erande,n Cette instruction d ecale lop erande de n positions vers la droite. 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

entr ee dun 0 ` a la place du bit de poids faible ; le bit sortant passe a ` travers lindicateur de retenue CF. M eme remarque que pr ec edemment si le nombre de positions a ` d ecaler est sup erieur a ` 1. D ecalage arithm etique vers la droite : SAR op erande,n Ce d ecalage conserve le bit de signe bien que celui-ci soit d ecal e. Exemple : mov al,11001011B sar al,1
avant 1 1 0 0 1 0 1 1 CF 1

aprs 1 1 1 0 0 1 0 1

le bit de signe est r einject e.


ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

5.4 - Les instructions logiques D ecalage arithm etique vers la gauche : SAR op erande,n Identique au d ecalage logique vers la gauche. Applications des instructions de d ecalage : 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 l etat dun bit dans un mot. Exemple : on veut d eterminer l etat du bit 5 de AL : mov cl,6 shr al,cl ou mov cl,3 shl al,cl

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

Rotation ` a droite (Rotate Right) : ROR op erande,n Cette instruction d ecale lop erande de n positions vers la droite et r einjecte par la gauche les bits sortant. Exemple : mov al,11001011B ror al,1
avant 1 1 0 0 1 0 1 1 CF 1

aprs 1 1 1 0 0 1 0 1

r einjection du bit sortant qui est copi e dans lindicateur de retenue CF. Rotation ` a gauche (Rotate Left) : ROL op erande,n Cette instruction d ecale lop erande de n positions vers la gauche et r einjecte par la droite les bits sortant. Exemple : mov al,11001011B rol al,1
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

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

r einjection du bit sortant qui est copi e dans lindicateur de retenue CF. Rotation ` a droite avec passage par lindicateur de retenue (Rotate Right through Carry) : RCR op erande,n Cette instruction d ecale lop erande de n positions vers la droite en passant par lindicateur 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 e dans lindicateur de retenue CF et la valeur pr ec edente de CF est r einject ee par la gauche. Rotation ` a gauche avec passage par lindicateur de retenue (Rotate Left through Carry) : RCL op erande,n Cette instruction d ecale lop erande de n positions vers la gauche en passant par lindicateur 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 e dans lindicateur de retenue CF et la valeur pr ec edente de CF est r einject ee par la droite.

5.5

Les instructions de branchement

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

5.5 - Les instructions de branchement

43

Instruction de saut inconditionnel : JMP label Cette instruction eectue un saut (jump) vers le label sp eci e. Un label (ou etiquette) est une repr esentation symbolique dune instruction en m emoire : . . instructions pr ec edant le saut . jmp suite . . . instructions suivant le saut (jamais ex ecut ees) suite : Exemple : boucle : inc ax dec bx jmp boucle boucle innie ... instruction ex ecut ee apr` es le saut

Remarque : linstruction JMP ajoute au registre IP (pointeur dinstruction) le nombre doctets (distance) qui s epare linstruction de saut de sa destination. Pour un saut en arri` ere, la distance est n egative (cod ee en compl ement ` a 2). Instructions de sauts conditionnels : Jcondition label Un saut conditionnel nest ex ecut e que si une certaine condition est satisfaite, sinon lex ecution se poursuit s equentiellement ` a linstruction suivante. La condition du saut porte sur l etat de lun (ou plusieurs) des indicateurs d etat (ags) 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 positionn es en fonction du r esultat de la derni` ere op eration. Exemple : . . instructions pr ec edant le saut conditionnel . jnz suite . . . instructions ex ecut ees si la condition ZF = 0 est v eri ee suite :
` HAGGEGE, 2003

...

instruction ex ecut ee ` a la suite du saut


cours de microprocesseur ISET Rad` es

44

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Remarque : il existe un autre type de saut conditionnel, les sauts arithm etiques. Ils suivent en g en eral linstruction de comparaison : CMP op erande1,op erande2 condition = > < = Exemple : cmp ax,bx jg superieur jl inferieur ... . . . ... nombres sign es JEQ label JG label JL label JNE label nombres non sign es JEQ label JA label JB label JNE label

superieur : inferieur :

Exemple dapplication des instructions de sauts conditionnels : on veut additionner deux nombres sign es N1 et N2 se trouvant respectivement aux osets 1100H et 1101H. Le r esultat est rang e ` a loset 1102H sil est positif, a ` loset 1103H sil est n egatif et ` 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 eviter la r ep etition dune m eme s equence dinstructions plusieurs fois dans un programme, on r edige la s equence une seule fois en lui attribuant un nom (au choix) et on lappelle lorsquon en a besoin. Le programme apISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

5.5 - Les instructions de branchement

45

pelant est le programme principal. La s equence appel ee est un sous-programme ou proc edure. Ecriture dun sous-programme : nom sp PROC . . . ret ENDP instructions du sous-programme instruction de retour au programme principal

nom sp

Remarque : une proc edure peut etre de type NEAR si elle se trouve dans le m eme segment ou de type FAR si elle se trouve dans un autre segment. PROC NEAR Exemple : ss prog1 PROC FAR ss prog2 Appel dun sous-programme par le programme principal : CALL proc edure . . . instructions pr ec edant lappel au sous-programme call nom sp . . . appel au sous-programme instructions ex ecut ees apr` es le retour au programme principal

Lors de lex ecution de linstruction CALL, le pointeur dinstruction IP est charg e avec ladresse de la premi` ere instruction du sous-programme. Lors du retour au programme appelant, linstruction suivant le CALL doit etre ex ecut ee, cest-` a-dire que IP doit etre recharg e avec ladresse de cette instruction.
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-` a-dire le contenu de IP, est sauvegard ee dans une zone m emoire particuli` ere appel ee pile. Lors de lex ecution de linstruction RET, cette adresse est r ecup er ee ` a partir de la pile et recharg ee dans IP, ainsi le programme appelant peut se poursuivre. Fonctionnement de la pile : la pile est une zone m emoire fonctionnant en mode LIFO (Last In First Out : dernier entr e, premier sorti). Deux op erations sont possibles sur la pile : empiler une donn ee : placer la donn ee au sommet de la pile ; d epiler une donn ee : lire la donn ee se trouvant au sommet de la pile.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

46

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

Le sommet de la pile est rep er e par un registre appel e pointeur de pile (SP : Stack Pointer) qui contient ladresse de la derni` ere donn ee empil ee. La pile est d enie dans le segment de pile dont ladresse de d epart est contenue dans 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` u celle-ci est plac ee dans le m eme segment que le code (SS = CS). Lors de lappel a ` un sous-programme, ladresse de retour au programme appelant (contenu de IP) est empil ee et le pointeur de pile SP est automatiquement d ecr ement e. Au retour du sous-programme, le pointeur dinstruction IP est recharg e avec la valeur contenue sommet de la pile et SP est incr ement 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 egalement egalement servir a ` sauvegarder le contenu de registres qui ne sont pas automatiquement sauvegard es lors de lappel a ` un sous programme : instruction dempilage : PUSH op erande instruction de d epilage : POP op erande o` u op erande est un registre ou une donn ee sur 2 octets (on ne peut empiler que des mots de 16 bits). Exemple :
ISET Rad` es 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 m emoire 1100H-1101H ; d epilage dans lordre inverse de lempilage

47

Remarque : la valeur de SP doit etre initialis ee par le programme principal avant de pouvoir utiliser la pile. Utilisation de la pile pour le passage de param` etres : pour transmettre des param` etres ` a une proc edure, on peut les placer sur la pile avant lappel de la proc edure, puis celle-ci les r ecup` ere en eectuant un adressage bas e de la pile en utilisant le registre BP. Exemple : soit une proc edure eectuant la somme de deux nombres et retournant le r esultat dans le registre AX : programme principal : mov ax,200 push ax mov ax,300 push ax call somme

; empilage du premier param` etre ; empilage du deuxi` eme param` etre ; appel de la proc edure somme

proc edure somme : 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 r ecup eration du deuxi` eme param` etre addition au premier param` etre restauration de lancienne valeur de BP retour et d epilage des param` etres

Linstruction ret 4 permet de retourner au programme principal et dincr ementer le pointeur de pile de 4 unit es pour d epiler les param` etres an de remettre la pile dans son etat initial. 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` es

48

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

5.6

M ethodes de programmation

Etapes de la r ealisation dun programme : D enir le probl` eme ` a r esoudre : que faut-il faire exactement ? D eterminer des algorithmes, des organigrammes : comment faire ? Par quoi commencer, puis poursuivre ? R ediger le programme (code source) : utilisation du jeu dinstructions (mn emoniques) ; cr eation de documents explicatifs (documentation). Tester le programme en r eel ; Corriger les erreurs (bugs) eventuelles : d eboguer le programme puis refaire des tests jusqu` a obtention dun programme fonctionnant de mani` ere satisfaisante. Langage machine et assembleur : Langage machine : codes binaires correspondant aux instructions ; Assembleur : logiciel de traduction du code source ecrit en langage assembleur (mn emoniques). R ealisation pratique dun programme : R edaction du code source en assembleur a ` laide dun editeur (logiciel de traitement de texte ASCII) : edit sous MS-DOS, notepad (bloc-note) sous Windows, Assemblage du code source (traduction des instructions en codes binaires) avec un assembleur : MASM de Microsoft, TASM de Borland, A86 disponible en shareware sur Internet, ... pour obtenir le code objet : code machine ex ecutable par le microprocesseur ; Chargement en m emoire centrale et ex ecution : r ole du syst` eme dexploitation (ordinateur) ou dun moniteur (carte de d eveloppement ` a base de microprocesseur). Pour la mise au point (d ebogage) du programme, on peut utiliser un programme daide ` a la mise au point (comme DEBUG sous MS-DOS) permettant : lex ecution pas ` a pas ; la visualisation du contenu des registres et de la m emoire ; la pose de points darr et ... Structure dun chier source en assembleur : pour faciliter la lisibilit e du code source en assembleur, on le r edige sous la forme suivante :
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

5.6 - M ethodes de programmation 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 m emoire : ORG offset Exemple : org 1000H D enitions de constantes : nom constante EQU valeur Exemple : escape equ 1BH R eservation de cases m emoires : nom variable DB valeur initiale nom variable DW valeur initiale DB : Dene Byte, r eservation dun octet ; DW : Dene Word, r eservation dun mot (2 octets). Exemples : nombre1 db 25 nombre2 dw ? ; pas de valeur initiale buffer db 100 dup ( ?) ; r eservation dune zone m emoire ; de 100 octets

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad` es

50

Chapitre 5 - La programmation en assembleur du microprocesseur 8086

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 6 Les interfaces dentr ees/sorties


6.1 D enitions

Une interface dentr ees/sorties est un circuit int egr e permettant au microprocesseur de communiquer avec lenvironnement ext erieur (p eriph eriques) : clavier, ecran, imprimante, modem, disques, processus industriel, ... Les interfaces dE/S sont connect ees au microprocesseur a ` travers les bus dadresses, de donn ees et de commandes.

environnement extrieur calculateur

priphrique 1 port 1

priphrique 2 port 2

microprocesseur

interface 1

interface 2

donnes adresses commandes

Les points dacc` es aux interfaces sont appel es ports. Exemples : interface interface parall` ele interface s erie
` HAGGEGE, 2003

port port parall` ele port s erie

exemple de p eriph erique imprimante modem


ISET Rad` es

cours de microprocesseur

52

Chapitre 6 - Les interfaces dentr ees/sorties

Sch ema synoptique dun circuit dE/S :


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` ede des registres pour g erer les echanges avec les p eriph eriques : registres de conguration ; registres de donn ees. A chaque registre est assign e une adresse : le microprocesseur acc` ede ` a un port dE/S en sp eciant ladresse de lun de ses registres. Le microprocesseur peut voir les adresses des ports dE/S de deux mani` eres : adressage cartographique : les adresses des ports dE/S appartiennent au m eme espace m emoire que les circuits m emoire (on dit que les E/S sont mapp ees en m emoire) :
circuits d'E/S espace mmoire total adressable FFFFFH

circuits mmoire

00000H

Cons equences : lespace dadressage des m emoires diminue ; ladressage des ports dE/S se fait avec une adresse de m eme longueur (m eme nombre de bits) que pour les cases m emoires ;
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

priphriques

6.3 - Gestion des ports dE/S par le 8086

53

toutes les instructions employ ees avec des cases m emoires peuvent etre appliqu ees aux ports dE/S : les m emes instructions permettent de lire et ecrire dans la m emoire et les ports dE/S, tous les modes dadressage etant valables pour les E/S. adressage ind ependant : le microprocesseur consid` ere deux espaces distincts : lespace dadressage des m emoires ; 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

Cons equences : contrairement a ` ladressage cartographique, lespace m emoire total adressable nest pas diminu e; ladressage des port dE/S peut se faire avec une adresse plus courte (nombre de bits inf erieur) que pour les circuits m emoires ; les instructions utilis ees pour lacc` es ` a la m emoire ne sont plus utilisables pour lacc` es aux ports dE/S : ceux-ci disposent dinstructions sp eciques ; une m eme adresse peut d esigner soit une case m emoire, soit un port dE/S : le microprocesseur doit donc fournir un signal permettant de di erencier ladressage de la m emoire de ladressage des ports dE/S. Remarque : ladressage ind ependant des ports dE/S nest possible que pour les microprocesseurs poss edant un signal permettant de di erencier ladressage de la m emoire de ladressage des ports dE/S ainsi que les instructions sp eciques pour lacc` es aux ports 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 m emoire de 1 Mo (adresse dune case m emoire sur 20 bits) et dun espace dE/S de 64 Ko (adresse dun port dE/S sur 16 bits). Le signal permettant de di erencier ladressage de la m emoire de ladressage des ports dE/S est la ligne M/IO : pour un acc` es ` a la m emoire, M/IO = 1 ; pour un acc` es aux ports dE/S, M/IO = 0.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

54

Chapitre 6 - Les interfaces dentr ees/sorties

Ce signal est utilis e pour valider le d ecodage dadresse dans les deux espaces :
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 d ecriture dun port dE/S sont respectivement les instruca 0 alors que linstruction MOV place tions IN et OUT. Elles placent la ligne M/IO ` celle-ci ` a 1. 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` u le registre DX contient ladresse du port dE/S a ` lire. Ecriture dun port dE/S : si ladresse du port dE/S est sur un octet : OUT adresse,AL : ecriture dun port sur 8 bits ; OUT adresse,AX : ecriture dun port sur 16 bits. si ladresse du port dE/S est sur deux octets : OUT DX,AL : ecriture dun port sur 8 bits ; OUT DX,AX : ecriture dun port sur 16 bits. o` u le registre DX contient ladresse du port dE/S a ` ecrire.
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

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

55

6.4

Linterface parall` ele 8255

Le r ole dune interface parall` ele est de transf erer des donn ees du microprocesseur vers des p eriph eriques et inversement, tous les bits de donn ees etant envoy es ou re cus simultan ement.
microprocesseur interface parallle sortie de donnes en parallle

entre de donnes en parallle

donnes adresses commandes

Le 8255 est une interface parall` ele programmable : elle peut etre congur ee en entr ee 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` es

56 Sch ema fonctionnel :

Chapitre 6 - Les interfaces dentr ees/sorties

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 donn ees pr esentes sur les ports A, B et C ; un registre de commande pour la conguration des port A, B et C en entr ees et/ou en sorties. Acc` es aux registres du 8255 : les lignes dadresses A0 et A1 d enissent les adresses des registres du 8255 : A1 A0 RD WR CS op eration 0 0 0 1 0 lecture du port A 0 1 0 1 0 lecture du port B 1 0 0 1 0 lecture du port C 0 0 1 0 0 ecriture du port A 0 1 1 0 0 ecriture du port B 1 0 1 0 0 ecriture du port C 1 1 1 0 0 ecriture du registre de commande X X X X 1 pas de transaction 1 1 0 1 0 ill egal X X 1 1 0 pas de transaction Remarque : le registre de commande est accessible uniquement en ecriture, la lecture de ce registre nest pas autoris ee. Conguration du 8255 : les ports peuvent etre congur es en entr ees ou en sorties selon le contenu du registre de commande. De plus le 8255 peut fonctionner selon 3 modes : mode 0, mode 1 ou mode 2. Le mode 0 est le plus simple : les ports sont congur es en entr ees/sorties de base. Les donn ees ecrites dans les registres correspondants sont m emoris ees sur les lignes de sorties ; l etat des lignes dentr ees est recopi e dans les registres correspondants et nest pas m emoris e. Les modes 1 et 2 sont plus complexes. Ils sont utilis es pour le dialogue avec des p eriph eriques n ecessitant un asservissement.
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

groupe B

groupe A

6.4 - Linterface parall` ele 8255 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 donn ees du 8255 est sur 8 bits alors que celui du microprocesseur 8086 est sur 16 bits. On peut donc connecter le bus de donn ees du 8255 sur les lignes de donn ees de poids faible du 8086 (D0 - D7) ou sur celles de poids fort (D8 - D15). Une donn ee est envoy ee (ou re cue) par le microprocesseur 8086 : sur la partie faible du bus de donn ees lorsque ladresse ` a ecrire (ou a ` lire) est paire : validation par A0 ; sur la partie haute lorsque ladresse est impaire : validation par BHE. etre utilis e pour s electionner le 8255 : Ainsi lun de ces deux signaux A0 ou BHE doit

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

Cons equence : les adresses des registres du 8255 se trouvent a ` des adresses paires (validation par A0) ou impaires (validation par BHE).
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

58

Chapitre 6 - Les interfaces dentr ees/sorties

Le d ecodeur dadresses d etermine ladresse de base du 8255 ; les lignes A1 et A2 d eterminent les adresses des registres du 8255. Exemple : connexion du 8255 sur la partie faible du bus de donn ees du 8086, avec d ecodage dadresses incomplet (les lignes dadresses A3 - A15 ne sont pas toutes utilis ees) :
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

D etermination de ladresse du 8255 :


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

s election 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 d ecodage dadresses etant incomplet, le 8255 appara t dans plusieurs plages dadresses selon les valeurs des bits dadresses non d ecod es (A7 - A13 et A12 A15). Dans cet exemple, ladresse de base 300H correspond a ` la premi` ere adresse possible (bits dadresses non d ecod es tous egaux a ` 0). Remarque : si on veut que le 8255 poss` ede des adresses cons ecutives (par exemple 300H, 301H, 302H et 303H), on peut utiliser le sch ema suivant qui exploite tout le bus de donn ees (D0 - D15) du 8086 :
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

6.4 - Linterface parall` ele 8255


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` es

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 dentr ees/sorties ; adresses des registres du 8255

; initialisation du port A en entr ee ; 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 e criture du port B

faux : suite :

; retourner lire le port A

6.5

Linterface s erie 8250


TxD : mission microprocesseur interface srie RxD : rception

Une interface s erie permet d echanger des donn ees entre le microprocesseur et un p eriph erique bit par bit.

donnes adresses commandes

Avantage : diminution du nombre de connexions (1 l pour l emission, 1 l pour la r eception). Inconv enient : vitesse de transmission plus faible que pour une interface parall` ele. Il existe deux types de transmissions s eries : asynchrone : chaque octet peut etre emis ou re cu sans dur ee d etermin ee entre un octet et le suivant ; synchrone : les octets successifs sont transmis par blocs s epar es par des octets de synchronisation. La transmission asynchrone la plus utilis ee est celle qui est d enie par la norme RS232.
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface s erie 8250

61

Exemple : transmission du caract` ere E (code ASCII 45H = 01000101B) sous forme s erie 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

l etat 1 correspond a ` une tension n egative comprise entre 9 et 15 V, l etat 0 a ` une tension positive comprise entre +9 et +15 V. Au repos, la ligne est a ` l etat 1 (tension n egative) ; le bit de start marque le d ebut de la transmission du caract` ere ; les bits de donn ees sont transmis lun apr` es lautre en commen cant par le bit de poids faible. Ils peuvent etre au nombre de 5, 6, 7 ou 8. Chaque bit est maintenu sur la ligne pendant une dur ee d etermin ee T. Linverse de cette dur ee d enit la fr equence de bit = nombre de bits par secondes = vitesse de transmission. Les vitesses normalis ees sont : 50, 75, 110, 134.5, 150, 300, 600, 1200, 2400, 4800, 9600 bits/s ; le bit de parit e (facultatif) est un bit suppl ementaire dont la valeur d epend du nombre de bits de donn ees egaux a ` 1. Il est utilis e pour la d etection derreurs de transmission ; les bits de stop (1, 1.5 ou 2) marquent la n de la transmission du caract` ere. Principe dune interface s erie :

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` es

62

Chapitre 6 - Les interfaces dentr ees/sorties

Un circuit int egr e dinterface s erie asynchrone sappelle un UART : Universal Asynchronous Receiver Transmitter) ; une interface s erie synchrone/asynchrone est un USART. Exemples dinterfaces s eries : 8251 (Intel) ; 8250 (National Semiconductor) ; 6850 (Motorola). Connexion de deux equipements par une liaison s erie RS232 : les equipements qui peuvent etre connect es ` a travers une liaison s erie RS232 sont de deux types : les equipements terminaux de donn ees (DTE : Data Terminal Equipment) qui g en` erent les donn ees ` a transmettre, exemple : un ordinateur ; les equipements de communication de donn ees (DCE : Data Communication Equipment) qui transmettent les donn ees sur les lignes de communication, exemple : un modem. Pour connecter ces equipements, on utilise des connecteurs normalis es DB9 ou DB25 :
1 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

Di erents signaux sont transport es par ces connecteurs : 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 entr ee Receive Data entr ee sortie Request To Send sortie entr ee Clear To Send entr ee sortie Data Terminal Ready sortie entr ee Data Set Ready entr ee sortie Data Carrier Detect entr ee sortie Ring Indicator entr ee sortie Ground description

Seuls les 2 signaux TxD et RxD servent a ` transmettre les donn ees. Les autres signaux sont des signaux de contr ole de l echange de donn ees.
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface s erie 8250 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 contr ole sont actifs a ` l etat bas = tension positive) quand le DTE veut transmettre des donn ees, il active le signal DTR. Si le DCE est pr et ` a recevoir les donn ees, il active le signal DSR puis le signal DCD : la communication peut d ebuter ; lorsque le DTE a une donn ee ` a emettre, il active le signal RTS. Si le DCE peut recevoir la donn ee, il active CTS : le DTE envoie la donn ee sur la ligne TxD ; si le DCE veut demander une pause dans la transmission, il d esactive CTS : le DTE arr ete la transmission jusqu` a ce que CTS soit r eactiv e. Cest un contr ole mat eriel du ux de donn ees ; Lorsque la transmission est termin ee, les signaux RTS, CTS, DTR, DCD et DSR sont successivement d esactiv es.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

64 Applications des liaisons s eries :

Chapitre 6 - Les interfaces dentr ees/sorties

transmission de donn ees ` a travers une ligne t el ephonique :


DTE microprocesseur microprocesseur
` HAGGEGE, 2003

DTE interface srie interface srie

DCE modem

ligne tlphonique

DCE modem

Le modem transforme les signaux num eriques produits par linterface s erie en signaux analogiques accept es par la ligne t el ephonique et inversement (modulations num eriques FSK, PSK, ...) liaison s erie directe entre deux DTE : liaison simple a ` 3 ls : rebouclage (strapping) des signaux de contr ole :
TxD RxD RTS CTS DTR DSR DCD RI GND TxD RxD RTS CTS DTR DSR DCD RI GND

DTE 1

DTE 2

Ce c ablage ne permet pas le contr ole mat eriel du ux entre les deux DTE. liaison compl` ete : c able Null Modem :
TxD RxD RTS CTS DTR DSR DCD DTE 1 RI GND TxD RxD RTS CTS DTR DSR DCD RI GND

DTE 2

Ce c ablage simule la pr esence dun modem (DCE) en croisant les signaux de contr ole et permet le contr ole mat eriel du ux.
ISET Rad` es cours de microprocesseur

6.5 - Linterface s erie 8250 Mise en uvre dune interface s erie, lUART 8250 : 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

Sch ema fonctionnel :


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` es

66

Chapitre 6 - Les interfaces dentr ees/sorties

Acc` es aux registres du 8250 : le 8250 poss` ede 11 registres. Comme il ny a que 3 bits dadresses (A0, A1 et A2), plusieurs registres doivent se partager la m eme adresse : 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 r eception (accessible seulement en lecture) 0 0 0 THR : Transmitter Holding Register, registre d emission (accessible seulement en ecriture) 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 contr ole de ligne 1 0 0 MCR : Modem Control Register, registre de contr ole modem 1 0 1 LSR : Line Status Register, registre d etat de la ligne 1 1 0 MSR : Modem Status Register, registre d etat du modem 1 1 1 SCR : Scratch Register, registre a ` usage g en eral

En fonction de l etat de DLAB (Divisor Latch Access Bit = bit de poids fort du registre LCR), on a acc` es soit au registre d emission/r eception, soit au diviseur dhorloge, soit au 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, 0 pas de parit e, bit 3 : autorisation de parit 1 parit e g en er ee et v eri ee ; bit 4 : s election de parit e, 0 parit e impaire, 1 parit e paire ; bit 5 : for cage de parit e, 0 parit e non forc ee 1 parit e xe ;
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface s erie 8250

67

bit 6 : contr ole de l etat de la ligne TxD, 0 ligne en fonctionnement normal, 1 for cage de TxD a ` l etat 0 (break) ; bit 7 : DLAB (Divisor Latch Access bit), 0 acc` es aux registres d emission, de r eception et IER, 1 acc` es au diviseur dhorloge. Line Status Register (LSR) : ee re cue ; bit 0 : 1 donn ecrasement de caract` ere ; bit 1 : 1 erreur d e; bit 2 : 1 erreur de parit bit 3 : 1 erreur de cadrage (bit de stop non valide) ; etection dun etat logique 0 sur RxD pendant bit 4 : 1 d une dur ee sup erieure ` a la dur ee dun mot ; bit 5 : 1 registre de transmission vide ; ` d ecalage vide ; bit 6 : 1 registre a e, toujours a ` 0. bit 7 : non utilis 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 connect ee ` a RxD (mode test) ; bit 5 bit 6 : inutilis es, toujours a ` 0. bit 7 Modem Status Register (MSR) : bit 0 : 1 changement de CTS depuis la derni` ere lecture : delta CTS ; bit 1 : 1 delta DSR ; bit 2 : 1 delta RI (uniquement front montant sur RI) ; DCD ; bit 3 : 1 delta bit 4 : CTS bit 5 : DSR ces bits indiquent l etat des lignes correspondantes. bit 6 : RI bit 7 : DCD Diviseur dhorloge (DLM,DLL) : la vitesse de transmission est x ee par la valeur du diviseur dhorloge : vitesse (bit/s) = fr equence d horloge(quartz) 16 (DLM, DLL)

Exemple de calcul : vitesse de transmission d esir ee = 1200 bit/s, fr equence dhorloge = 1.8432 MHz, d etermination de la valeur du diviseur dhorloge : fr equence d horloge 1.8432 106 diviseur = = = 96 DLM = 0 et DLL = 96. 16 vitesse 16 1200
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

68

Chapitre 6 - Les interfaces dentr ees/sorties Receiver Buer Register (RBR) : contient la donn ee re cue. Transmitter Holding Register (THR) : contient la donn ee ` a transmettre. 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 donn ee re cue 1 1 registre d emission vide 0 0 changement d etat modem 0 (ordre de priorit e d ecroissant) ; bit bit bit bit bit 3 4 5 6 7

: inutilis es, toujours a ` 0.

Interrupt Enable Register (IER) : autorisation des interruptions ee re cue ; bit 0 : 1 donn emission vide ; bit 1 : 1 registre d bit 2 : 1 erreur ; 1 changement d etat modem ; bit 3 : bit 4 bit 5 : inutilis es, toujours a ` 0. bit 6 bit 7 Scratch Register (SCR) : registre a ` usage g en eral pouvant contenir des donn ees temporaires. Exemple de programmation : soit un UART 8250 dont le bus de donn ees est connect e sur la partie faible du bus de donn ees du microprocesseur 8086. Ladresse de base du 8250 est x ee ` a la valeur 200H par un d ecodeur dadresses. La fr equence dhorloge du 8250 est de 1.8432 MHz. On veut : ecrire une proc edure init qui initialise le 8250 avec les param` etres suivants : 2400 bits/s, 8 bits par caract` ere, parit e paire, 1 bit de stop (2400, 8, P, 1) ; ecrire une proc edure envoi qui emet un message contenu dans la zone de donn ees msg. L emission sarr ete lorsque le caract` ere EOT (End Of Text, code ASCII = 03H) est rencontr e; ecrire une proc edure reception qui re coit une ligne de 80 caract` eres et la range dans une zone de donn ees appel ee ligne. En cas derreur de r eception, envoyer le caract` ere NAK (No Acknowledge, code ASCII = 15H) sinon envoyer le caract` ere ACK (Acknowledge, code ASCII = 06H). Programme :
ISET Rad` es cours de microprocesseur ` HAGGEGE, 2003

6.5 - Linterface s erie 8250 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` ere End Of Text caract` ere Acknowledge caract` ere No Acknowledge zone de rangement des caract` eres re cus message a ` envoyer

; proc edure dinitialisation du 8250 ; DLAB = 1 pour acc eder au diviseur ; dhorloge ; vitesse de transmission = 2400 bit/s ; => DLL = 48 ... ; ... et DLM = 0

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

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

; proc edure d emission du contenu de AH ; lecture du registre d etat de la ligne ; attente registre de transmission vide ; ; ; ; masquage bit 5 de LSR si bit 5 de LSR = 0 => attente ... ... sinon envoyer le caract` ere contenu dans le registre AH

cours de microprocesseur

ISET Rad` es

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 dentr ees/sorties ; ; ; ; ; ; ; proc edure d emission du message pointer vers le d ebut du message AH <- caract` ere a ` envoyer fin du message ? oui => fin proc edure non => envoyer caract` ere ... ... et passer au caract` ere suivant

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

; proc edure de r eception dune ligne ; pointer vers d ebut zone de r eception ; compteur de caract` eres re cus ; lecture du registre d etat de la ligne ; ; ; ; ; test de l etat du bit 0 de LSR pas de caract` ere re cu => attente sinon test erreurs : bits 1,2,3 de LSR pas derreurs => continuer erreurs => envoyer NAK ...

; ... et retourner attendre un caract` ere ; lire caract` ere re cu ... ; ... et le ranger dans LIGNE ; puis envoyer ACK ; ; ; ; d ecr ementer compteur de caract` eres si compteur = 0 => fin r eception sinon incr ementer DI et aller attendre caract` ere suivant

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Chapitre 7 Les interruptions


7.1 D enition dune interruption
priphrique

Soit un microprocesseur qui doit echanger des informations avec un p eriph erique :

microprocesseur

interface

Il y a deux m ethodes possibles pour recevoir les donn ees provenant des p eriph eriques : scrutation p eriodique (ou polling) : le programme principal contient des instructions qui lisent cycliquement l etat des ports dE/S. Avantage : facilit e de programmation. Inconv enients : perte de temps sil y a de nombreux p eriph eriques ` a interroger ; de nouvelles donn ees ne sont pas toujours pr esentes ; des donn ees peuvent etre perdues si elles changent rapidement. interruption : lorsquune donn ee appara t sur un p eriph erique, le circuit dE/S le signale au microprocesseur pour que celui-ci eectue la lecture de la donn ee : cest une demande dinterruption (IRQ : Interrupt Request) :
priphrique demande d'interruption interface

microprocesseur

Avantage : le microprocesseur eectue une lecture des ports dE/S seulement lorsquune donn ee est disponible, ce qui permet de gagner du temps et d eviter de perdre des donn ees.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

72 Exemples de p eriph eriques utilisant les interruptions :

Chapitre 7 - Les interruptions

clavier : demande dinterruption lorsquune touche est enfonc ee ; port s erie : demande dinterruption lors de larriv ee dun caract` ere sur la ligne de transmission. Remarque : les interruptions peuvent etre g en er ees par le microprocesseur lui-m eme en cas de probl` emes tels quune erreur dalimentation, une division par z ero ou un circuit m emoire d efectueux (erreurs fatales). Dans ce cas, la demande dinterruption conduit a ` larr et du microprocesseur.

7.2

Prise en charge dune interruption par le microprocesseur

A la suite dune demande dinterruption par un p eriph erique : le microprocesseur termine lex ecution de linstruction en cours ; il range le contenu des principaux registres sur la pile de sauvegarde : pointeur dinstruction, ags, ... il emet un accus e de r eception de demande dinterruption (Interrupt Acknowledge) indiquant au circuit dE/S que la demande dinterruption est accept ee :
priphrique demande d'interruption microprocesseur interruption accepte interface

Remarque : le microprocesseur peut refuser la demande dinterruption : celle-ci est alors masqu ee. Le masquage dune interruption se fait g en eralement en positionnant un ag dans le registre des indicateurs d etat. Il existe cependant des interruptions non masquables qui sont toujours prises en compte par le microprocesseur. il abandonne lex ecution du programme en cours et va ex ecuter un sous-programme de service de linterruption (ISR : Interrupt Service Routine) ; apr` es lex ecution de lISR, les registres sont restaur es ` a partir de la pile et le microproceseur reprend lex ecution du programme quil avait abandonn e:
ISET Rad` es 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` ere instruction dun sous-programme de service dinterruption doit etre linstruction IRET : retour dinterruption. Si plusieurs interruptions peuvent se produire en m eme temps, on doit leur aecter une priorit e pour que le microprocesseur sache dans quel ordre il doit servir chacune dentre elle.

7.3

Adresses des sous-programmes dinterruptions

Lorsquune interruption survient, le microprocesseur a besoin de conna tre ladresse du sous-programme de service de cette interruption. Pour cela, la source dinterruption place sur le bus de donn ees un code num erique indiquant la nature de linterruption. Le microprocesseur utilise ce code pour rechercher dans une table en m emoire centrale ladresse du sous-programme dinterruption a ` ex ecuter. Chaque el ement de cette table sappelle un 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 g er ees de cette mani` ere, on dit que les interruptions sont vectoris ees. Avantage de la vectorisation des interruptions : lemplacement dune ISR peut etre nimporte o` u dans la m emoire, il sut de sp ecier le vecteur dinterruption correspondant.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

74

Chapitre 7 - Les interruptions

7.4

Les interruptions du 8086

Le microprocesseur 8086 peut g erer jusqu` a 256 interruptions. Chaque interruption re coit un num ero compris entre 0 et 255 appel e type de linterruption. Trois sortes dinterruptions sont reconnues par le 8086 : interruptions mat erielles produites par lactivation des lignes INTR et NMI du microprocesseur ; interruptions logicielles produites par linstruction INT n, o` u n est le type de linterruption ; interruptions processeur g en er ees par le microprocesseur en cas de d epassement, de division par z ero ou lors de lex ecution pas ` a pas dun programme. Les interruptions du 8086 sont vectoris ees. La table des vecteurs dinterruptions doit obligatoirement commencer a ` ladresse physique 00000H dans la m emoire centrale. Chaque vecteur dinterruption est constitu e de 4 octets repr esentant une adresse logique 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` es

cours de microprocesseur

` HAGGEGE, 2003

7.5 - Le contr oleur programmable dinterruptions 8259

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 charg ee par le programme principal (carte a ` microprocesseur) ou par le syst` eme dexploitation (ordinateur) au d emarrage du syst` eme. Elle peut etre modi ee en cours de fonctionnement (d etournement des vecteurs dinterruptions).

7.5

Le contr oleur programmable dinterruptions 8259

Le microprocesseur 8086 ne dispose que de deux lignes de demandes dinterruptions mat erielles (NMI et INTR). Pour pouvoir connecter plusieurs p erip eriques utilisant des interruptions, on peut utiliser le contr oleur programmable dinterruptions 8259 dont le r ole est de : re cevoir des demandes dinterruptions des p eriph eriques ; r esoudre les priorit es des interruptions ; g en erer le signal INTR pour le 8086 ; emettre le num ero de linterruption sur le bus de donn ees. Un 8259 peut g erer jusqu` a 8 demandes dinterruptions mat erielles. 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` es

76 Sch ema fonctionnel :


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 sup erieur a ` 8, on peut placer 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` es

cours de microprocesseur

` HAGGEGE, 2003

Annexe Jeu dinstructions du 8086


Transfert de donn ees : G en eral MOV D eplacement dun octet ou dun mot 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 Entr ees/Sorties 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 arithm etiques : Addition Addition doctets ou de mots Addition doctets ou de mots avec retenue Incr ementation de 1 dun octet ou dun mot Ajustement ASCII de laddition Ajustement d ecimal de laddition

ADD ADC INC AAA DAA


` HAGGEGE, 2003

cours de microprocesseur

ISET Rad` es

78

Annexe - Jeu dinstructions du 8086 Soustraction Soustraction doctets ou de mots Soustraction doctets ou de mots avec retenue D ecr ementation de 1 dun octet ou dun mot Compl ementation a ` 2 dun octet ou dun mot (changement de signe) Comparaison doctets ou de mots Ajustement ASCII de la soustraction Ajustement d ecimal de la soustraction Multiplication Multiplication non sign ee doctets ou de mots Multiplication sign ee doctets ou de mots Ajustement ASCII de la multiplication Division Division non sign ee doctets ou de mots Division sign ee doctets ou de mots 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 Compl ement ` a 1 dun octet ou dun mot 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 D ecalages SHL/SAL D ecalage a ` gauche arithm etique ou logique (octet ou mot) SHR D ecalage logique a ` droite dun octet ou dun mot SAR D ecalage arithm etique a ` droite dun octet ou dun mot 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` es

cours de microprocesseur

` HAGGEGE, 2003

79 Instructions sur les cha nes de caract` eres :

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

Pr exes R ep etition tant que CX nest pas nul R ep etition tant quil y a egalit e et que CX nest pas nul R ep etition tant quil ny a pas egalit e et que CX nest pas nul Instructions D eplacement de blocs doctets ou de mots 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 proc edure Retour dune proc edure Saut inconditionnel Contr oles dit erations Bouclage tant que CX = 0 Bouclage tant que CX = 0 et ZF = 1 ( egalit e) Bouclage tant que CX = 0 et ZF = 0 (in egalit e) Saut si CX est nul Interruptions Interruption logicielle Interruption si OF = 1 (overow) Retour dune interruption

` HAGGEGE, 2003

cours de microprocesseur

ISET Rad` es

80

Annexe - Jeu dinstructions du 8086

Instructions de branchements conditionnels : Sauts conditionnels si sup erieur (si CF + ZF = 0) si sup erieur ou egal (si CF = 0) si inf erieur (si CF = 1) si inf erieur ou egal (si CF + ZF = 1) en cas de retenue (si CF = 1) si egal ou nul (si ZF = 1) si plus grand (si (SF OF) + ZF = 0) si plus grand ou egal (si SF OF = 0) si plus petit (si SF OF = 1) si plus petit ou egal (si (SF OF) + ZF = 1) si pas de retenue (si CF = 0) si non egal ou non nul (si (ZF = 0) si pas de d epassement (si OF = 0) si parit e impaire (si PF = 0) si signe positif (si SF = 0) si d epassement (si OF = 1) si parit e paire (si PF = 1) si signe n egatif (si SF = 1)

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 sign es. concerne des nombres sign es.

Instructions de contr ole du 8086 : Op erations sur les ags Met le ag de retenue ` a1 Eace le ag de retenue Inverse l etat du ag de retenue Met le ag de direction a ` 1 (d ecr ementation) Met le ag de direction a ` 0 (incr ementation) Autorise les interruptions sur INTR Interdit les interruptions sur INTR Synchronisation avec lext erieur Arr et du microprocesseur (sortie de cet etat par interruption ou reset) Attente tant que TEST nest pas ` a0 Pr exe = instruction destin ee ` a un coprocesseur Pr exe = r eservation du bus pour linstruction Pas dop eration Pas dop eration

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

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Bibliographie
. La liaison RS232. Dunod, Paris, 1998. [1] P. Andre [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 Mat eriel, logiciel, syst` eme 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 microordinateur. Editions Radio, Paris, 1982. [10] H. Lilen. 8088 et ses p eriph eriques Les circuits cl es des IBM PC et compatibles. Editions Radio, Paris, 1985. [11] H. Lilen. 8088 Assembleur IBM PC et compatibles. Editions Radio, Paris, 1986. [12] H. Lilen. Cours fondamental des microprocesseurs. Editions Radio, Paris, 1987. [13] H. Lilen. Microprocesseurs Du CISC au RISC. Dunod, Paris, 1995. [14] G.H. MacEwen. Introduction to Computer Systems. McGraw-Hill, Tokyo, 1981. [15] A. Mariatte. PC, modems et serveurs. P.S.I, Lagny, France, 1986. [16] P. Mercier. Assembleur facile. Marabout Informatique, Alleur, Belgique, 1989. [17] P. Mercier. La ma trise du MS-DOS et du BIOS Les interruptions Organisation interne. Marabout Informatique, Alleur, Belgique, 1989. [18] P. Mercier. Les interruptions du MS-DOS. Marabout Informatique, Alleur, Belgique, 1990. [19] A. Osborne. Initiation aux micro-ordinateurs Niveau 2. Editions Radio, Paris, 1981. [20] J.B. Peatman. Microcomputer Based Design. McGraw-Hill, Tokyo, 1981. [21] E. Pissaloux. Pratique de lassembleur I80x86 Cours et exercices. Herm` es, Paris, 1994. [22] H. Schakel. Programmer en assembleur sur PC. Micro Application, Paris, 1995.
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es

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

Bibliographie

[24] M. Tischer et B. Jennrich. La bible PC Programmation syst` eme. Micro Application, 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` eme Introduction aux microprocesseurs. Sybex, Paris, 1988.

ISET Rad` es

cours de microprocesseur

` HAGGEGE, 2003

Vous aimerez peut-être aussi