Académique Documents
Professionnel Documents
Culture Documents
Microprocess Eur
Microprocess Eur
2003
ii
ISET Rad` es
cours de microprocesseur
` HAGGEGE, 2003
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
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 . . . .
ISET Rad` es
cours de microprocesseur
` HAGGEGE, 2003
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
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
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
unit de contrle
unit de transfert
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
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
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)
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
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
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 :
2.4
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 :
bus de commande
2.5
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
ISET Rad` es
oprande p instruction n
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 :
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
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
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
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
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
quartz
` HAGGEGE, 2003
cours de microprocesseur
ISET Rad` es
10
ISET Rad` es
cours de microprocesseur
` HAGGEGE, 2003
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
n lignes d'adresses
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
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
adresses
adresses
ISET Rad` es
cours de microprocesseur
` HAGGEGE, 2003
13
3.4
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 :
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
horloge
bus d'adresses
criture autorise
3.5
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
15
D0 D1 D7 RD WR
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
16
FFFFH
9FFFH mmoire no 3 8000H mmoire relle implante mmoire totale adressable par le microprocesseur
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
17
E000H DFFFH
3.7
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
18 M emoires mortes :
ROM : Read Only Memory. M emoire ` a lecture seule, sans ecriture. Son contenu est programm e une fois pour toutes par le constructeur. Avantage : faible 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
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
4.2
horloge
CLK RESET
contrle du microprocesseur
4.3
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
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
22
1 cycle de bus T1 CLK T2 T3
T4
T1
T2
T3
T4
ADi
adresse
donne
adresse
donne
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
D0 D1 8282 D7 STROBE OE
Q0 Q1
Q7
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
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
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
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
banque impaire
` HAGGEGE, 2003
cours de microprocesseur
ISET Rad` es
8282 D STR Q
A15 A8
WR RD M/IO
A0
A 8286 EN DIR
D15 D8
A 8286 EN DIR
4.4
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
27
16
registres temporaires
UAL
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
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
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
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
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
4 bits 0000
1 Mo
FFFFFH
0
ISET Rad` es
00000H
cours de microprocesseur ` HAGGEGE, 2003
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
segment de pile
SS : SP offset = SP SS : 0000H
segment de donnes
DS : SI offset = SI DS : 0000H
segment de code 0
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
00000H
32
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
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
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
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
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 :
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
37
5.3
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
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
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
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
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
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 (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
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
...
44
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
oui
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
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
2100H
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
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
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
SS : 0000H
SS : 0000H
` HAGGEGE, 2003
cours de microprocesseur
ISET Rad` es
48
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
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
ISET Rad` es
cours de microprocesseur
` HAGGEGE, 2003
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.
priphrique 1 port 1
priphrique 2 port 2
microprocesseur
interface 1
interface 2
Les points dacc` es aux interfaces sont appel es ports. Exemples : interface interface parall` ele interface s erie
` HAGGEGE, 2003
cours de microprocesseur
52
6.2
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
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
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
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
M/IO
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
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
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
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
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 . . 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
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
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
59
8 D0 - D7 DT/R
PA
BHE
K0 K1 K2
0 1 0 1 0 1
LED
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
; 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 :
6.5
Une interface s erie permet d echanger des donn ees entre le microprocesseur et un p eriph erique bit par bit.
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
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
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
TxD
RxD
. . .
signaux de controle
horloge
` HAGGEGE, 2003 cours de microprocesseur ISET Rad` es
62
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
63
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
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
M/IO A4 - A15
A0 ou BHE
contrle modem
` HAGGEGE, 2003
cours de microprocesseur
ISET Rad` es
66
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
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
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
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
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
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
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
73
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
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
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
7.4
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, ...
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
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 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
+5 V VCC D0 - D7 RD WR 8259 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
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
ISET Rad` es
cours de microprocesseur
` 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
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
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
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