Aès aux périphériques
Nousavonsvu,pourl'instant,ommentlemiroproesseuraaès auxregistresetàlamé-
moirevive.Ilfautaussiavoiraèsauxpériphériques(d'entrée-sortie)defaçonàintroduiredes
données(vialalavier,lasouris,unleteurdedisquettes,undisquedur,unleteurdeCD-ROM,
unetabletteàdigitaliser,unsanner, unapteur...)et àommuniquer lesrésultats(vial'éran
dumoniteur,une imprimante...).Nousallonsvoirdansehapitreommentlemiroproesseur
aèdentàeux-i.
14.1 Prinipe de l'aès aux périphériques
Les périphériques peuvent être d'une très grande omplexité mais, du point de vue de la
programmationetdel'éhangedesdonnées,ilsreposentsurunprinipesimple.
Contrleurdepériphérique.- Un périphérique est omplexe, omprenant à la fois des parties
méaniqueset des parties életroniques.Laommuniationmiroproesseur/périphériqueet la
programmationdupériphériquesefaitgrâe àune partieéletroniqueappelée ontrleur(du
périphérique).
Adressedepériphérique.- Comme pour lemiroproesseur,lapartie essentielle d'un ontrleur
depériphériqueestuniruitintégré,quel'onpeutonsidérerommeuneboîtenoirepossédant
unertainnombredebrohes.Unensembleouplusieursensemblesdehuit brohespermettent
d'aéderauontrleur dupériphérique. Un telensemble estreliéau miroproesseurde façon
à orrespondre à une adresse donnée de périphérique. Celle-i n'est déterminée ni par le
onepteurdumiroproesseur,ni pareluiduiruitintégréduontrleur;'estleonepteur
del'ordinateurqui lahoisiradefaçonplusoumoins arbitraire.
Périphériquesmappéenmémoireouindépendant.-Ilexistedeuxfaçonsderelierunpériphérique
aumiroproesseur,leonepteurdumiroproesseurhoisissantl'une d'elle.L'adressedepéri-
phérique peutêtre une adresse demémoire vive (qui seradon dédiée àunpériphérique): on
parlealorsdepériphériquemappéenmémoire.Cetteadressepeutégalementêtrespéique
auxpériphériques,aveunjeud'adresseindépendantdujeu d'adressesmémoire:onparlealors
depériphérique indépendant.
Làenore,lefaitqu'unpériphériquedonnésoit,surunsystèmedonné,mappéenmémoireou
indépendantnedépendnidupériphérique,niréellementdumiroproesseur,maisduonepteur
dusystème.
Cependant,sitouslesmiroproesseurspermettentlemappageenmémoiredespériphériques,
seulsertainsmiroproesseursontunjeu d'adresses indépendantpourlespériphériques.C'est
le as des miroproesseurs Intel mais pas des miroproesseurs Motorola, qui équipaient les
premiersMaIntoshApple.
Notiondeport.- Lesmiroproesseursàentrée-sortieindépendante aèdent auxpériphériques
viaunertainnombrede ports,haun étantrepéréparuneadresse. Unport depériphérique
n'estriend'autrequ'uneliaisonphysiquepourunotet.
Un telmiroproesseurindique, viaune desbrohes,qu'ilveutaéder àunport(et non à
unélémentmémoire).Ilutiliselebusdesadressespourindiquerlenuméroduport.Ilutiliseles
brohesdesdonnéespourenvoyeroureevoirunedonnée.
Ilappartientauonepteurdel'arhiteturedel'ordinateurderelierommeilleveut,etdon
dedéterminerqueteloutelportorrespondàteloutelpériphérique(oupartiedepériphériques).
Bienentendu, pourunordinateurdonné,touslesportsnesontpasutilisés(reliés).
Registresinternes despériphériques.-Lesdonnéessontrarementtransmisesdiretement.Unpé-
riphériqueontientengénéralunouplusieursregistresinternes(toujoursentrèspetitnombre,
ommepourunmiroproesseur)etonommuniqueàtraverseux-i.
Unpériphériqueutiliseraengénéralplusieursports,souventunparregistreinternebienqu'on
puisseaussiindiquer,àl'aidedebrohesspéiques,àquelregistreonveutavoiraaire.
Programmeinterne.-Leontrleurontientunprogramme(éventuellementâblé)quidétermine
e qu'il doitfaire des donnéesdes registresinternes. On parlede rmware. Celui-i est indé-
14.2 Cas du 8088
14.2.1 Aspet matériel
Lemiroproesseur8088permet àlafoislemappage enmémoireetl'aèsindépendantvia
unport.
Nombredeports.-Dansleasdu8088,onpeututiliserdiretementhuitbrohespourdéterminer
l'adressed'unport:lesbrohesA0àA7dubusdesadresses.Ceipermetd'aéderdiretement
à256ports.
Onpeutégalementutiliser,enplus,lesbrohesA8àA15vialeontenuduregistreDX(pour
lesbrohesA0àA15);onpeutdonainsiaéder(indiretement)à65536ports.
Capaitéd'unport.- Dansleasdu8088, l'entréeoulasortieviaunportsefait soitotetpar
otet,soitmot(dedeuxotets)parmot,eteitoujoursvial'aumulateur(ALouAX suivant
laapaitédésirée).
14.2.2 Entrée dans l'aumulateur
Langagesymbolique.-L'instrutionpourl'entréeestIN(pourINput):
IN A, soure
oùAestl'undesdesaumulateursALouAX(déterminantainsilaapaitéduport)etsoure
soitune onstantesurhuit bits(aèsdiret),soitleregistreDX (aèsindiret).
Langagemahine.-L'instrutionINest odée:
surdeuxotetsdansleasd'uneentréeimmédiate,par:
| 1110 010w | port |
ave
w = 0
pourALetw = 1
pourAX, soitE4houE5hpourlepremierotet;surunotetdansleasd'uneentrée impliite,'est-à-direvialeregistreDX,par:
| 1110 110w |
ave
w = 0
pourALetw = 1
pourAX, soitEChouEDh.14.2.3 Sortie du ontenu de l'aumulateur
Langagesymbolique.-L'instrutionpourlasortieest OUT(pourOUTput):
OUT destination, A
où A est l'un des des aumulateurs AL ou AX (déterminant ainsi la apaité du port) et
destinationsoit uneonstante surhuitbits(aèsdiret),soit leregistreDX(aèsindiret).
Langagemahine.-L'instrutionOUTestodée:
surdeuxotetsdansleasd'unesortieimmédiate,par:
| 1110 011w | port |
ave
w = 0
pourALetw = 1
pourAX, soitE6houE7hpourlepremierotet;surunotetdansleasd'unesortie impliite,par:
| 1110 111w |
w = 0 w = 1
14.3 Un exemple : voyants lumineux du lavier MF II
Onaimeraitbienommenerparunexemplepermettantd'entrerunaratèrevialelavier.
Cependant, nous réservons un tel as à plus tard, au moment de l'étude du BIOS, ar nous
verrons que e n'est pas très simple. Nous allons don onsidérer un exemple beauoup plus
simple,àsavoirlamanipulationdesvoyantslumineuxdulavier.
Lesvoyantslumineux .-Sur lelavierditMF Il(et ultérieurs)del'IBMPC, ilyatroisvoyants
lumineux,situésenhautàdroitedulavier,dénommés
hh
NumLokii
,hh
CapsLokii
ethh
Sroll- Lokii
. Les deux premiers permettent de rappeler respetivement à l'utilisateur que le pavé numériquededroitesertàentrerdeshiresetnondesdéplaementset qu'onentredesmajus-ules(etnondesminusules).
Les voyantslumineux ne sont paspilotés parle ontrleur dulavier, lorsqu'onappuie sur
latouhedeverrouillagedupavénumériqueparexemple,maisvialemiroproesseurdel'unité
entraleet,danslapratique,parlesystèmed'exploitation.
Lesregistresdulavier.-Nousverronsplustardendétaillefontionnementdulavierdel'IBM
PCetsoninterfaçageavelemiroproesseur.Voyonspourl'instantuniquementqueequi est
intéressantpournotrepropos.
Le ontrleur d'un lavier pour ompatible PC possède quatre registres internes, appelés
tampond'entrée,tampon de sortie, registrede ontrleet registrede statut.Surun
ompatible PC, on utilise les deux ports d'adresses 60h et 64h pour aéder àes registres. Il
sut dedeuxportsarhaundeesregistresestseulementaessiblesoitenériture, soiten
leture.Pourletampond'entrée, leseulqui nousintéresseraii,onéritsurleport60h.
Lesommandesdulavier.-LeomportementdeslaviersATetMFIIpeutêtreprogrammégrâ-
eàunjeudeommandesquel'ontransmetauontrleurdelaviervialetampond'entrée.Nous
verronsplustard,lorsquenousétudieronslelavierendétail,ejeudeommandes.Contentons-
nousiidelaommandequipermet d'allumeretd'éteindrelesvoyantslumineuxdulavierMF
II.
Onpasselaommande:
EDh
autampond'entrée.LeontrleurdulavierrépondparunauséderéeptionACK,nes'oupe
plusdestouhesetattendunotetd'indiation,quiestégalementpassévialetampond'entrée.
Lastruturedel'otetd'indiationest lasuivante:
0 0 0 0 0 CPSL NUML SCRL
aveCPSLégalà1pourquelevoyantlumineuxde
hh
CapsLokii
soitallumé,NUMLégalà1pour que elui dehh
NumLokii
soit allumé et SCRLégal à1 pour que eluidehh
SrollLokii
soit allumé.Exemple.- Érivons unprogramme permettantd'allumer levoyantlumineux de
hh
NumLokii
(sansquelepavénumériquenesoitpourautantverrouillé).Enlangagesymbolique,nousavons:
MOV AL, ED
OUT 60, AL
MOV AL, 02
OUT 60, AL
RET
Traduisonse programme,éritenlangagesymbolique,enlangagemahine:
B0 ED
E6 60
B0 02
E6 60
C3
Utilisonsalorsdebugpourérireleprogrammemf2.omenlangagemahine:
C:\COM\>debug
-E CS:100 B0 ED E6 60 B0 02 E6 60 C
-R BX
BX 0000
:
-R CX
CX 0000
:09
-N mf2.COM
-W
Eriture de 00009 otets
-Q
Lorsqu'on appelle e programme en ligne de ommande, on s'aperçoît bien que le voyant
lumineuxest allumé.
Remarque.-Ilfaututiliserunvraisystèmed'exploitationMS-DOSpourlanereprogrammeet
nonune fenêtre MS-DOSde WindowsouuneémulationsousLinux. En eetes deuxderniers
systèmes d'exploitationfontionnenten deux modes: lemode noyau et lemode utilisateur.Le
mode noyaupermet delaner es systèmes d'exploitation mais n'estplus aessibleaprès ela
(yomprisparlesuperutilisateurroot).Seul lemodenoyauaaèsauxentrées-sorties('est-à-
direauxinstrutionsINetOUT);enmodeutilisateuronaèdeauxentrées-sortiesàtraversdes
appels système,uniquementpourequi estprévu parle systèmed'exploitation.C'est laraison
pourlaquelleil fautreompilerlenoyaudeLinuxlorsqu'onhangedepériphériqueetqu'ilfaut
redémarrerl'ordinateurpourWindows.
14.4 Historique
Le premier ordinateur (EDSAC, 1949) disposait d'un seul périphérique : un télesripteur.
L'utilisation de elui-i était âblée et son langage symbolique disposait de deux instrutions
pouryaéder.