• Aucun résultat trouvé

Chaie 21 e ie i Ce

N/A
N/A
Protected

Academic year: 2022

Partager "Chaie 21 e ie i Ce "

Copied!
9
0
0

Texte intégral

(1)

Les interruptions

Comme leur nom l'indique, lesinterruptions (interrupt en anglais) viennent interrompre le

déroulementnormaldumiroproesseur.

Uneinterruptiondélenhel'exéutiond'unprogramme,appeléroutinede servieourou-

tinede traitementde l'interruption(enanglaisinterruptservieroutine,abrégéenISR,ou

interrupthandler),ensesouvenantqueroutineestunsynonymedesous-programme.

(2)

21.1 Interruptions de plusieurs types

21.1.1 Trois types d'interruption

On distingue trois types d'interruptions d'aprèsla façon dont elles sont appelées : en eet

une interruption peut être appelée par lemiroproesseur lui-même, parun logiielou parun

périphérique.Onparlequelquefoisd'exeptionspourlesdeuxpremierstypes.

Interruptionsappeléesparlemiroproesseur.- Les onepteurs du 8086 ont réservé les inter-

ruptions denuméro 00hà12h pourêtre appelées parlemiroproesseur. Onparlequelquefois

d'interruptionsinternes.Cesinterruptionssontappeléesparlemiroproesseurengénéralen

réponse àuneerreur,parexemplel'interruption00h estappeléelorsqu'onessaiedediviserpar

0.

Interruptionslogiielles.-Ces interruptionssontappelées parleprogramme.

Interruptionsexternes.- Les périphériques peuvent délenher une interruption grâe à deux

brohesdumiroproesseur8086:

Labrohe appelée NMI (pour NonMaskable Interrupt)en position haute délenhe une

interruptiondetype02h.Cetteinterruptionn'estpasmasquable,'est-à-direqu'ellepeut

interveniràtoutmoment(onnepeutpasnepasentenirompte).

LabroheappeléeINTR (pourl'anglais INTeRrupt)en position hautepermet d'ativer

n'importelaquelledes256interruptions.Ceisefaitenplaçantlenumérodel'interruption

désiréesurlebusdesdonnées.

Lorsquel'unedeesdeux brohespasseenposition haute,lemiroproesseurtermine l'ins-

trutionqu'ilestentraind'exéuteret passeàlaroutinedeserviedel'interruptionorrespon-

dante.

21.1.2 Les interruptions internes

Les inq premièresinterruptions, sur lesdouze réservées par Intel pour le miroproesseur,

onteetivementreçuuneimplémentationparIntel:

Interruption Adresses Fontion

0 00hà03h Division par0

1 04hà08h Pasàpas(TRAPouSingle-Step)

2 09hà0Bh Interruptionnonmasquable(NMI)

3 0Chà0Fh Interruptionlogiiellesur1otetINT3

4 10hà13h InterruptionsuroverowINTO

mais'estauonepteurdusystèmed'yplaerlesadressesqu'ildésireetdeonevoirlesroutines

deservieadéquates.

(3)

21.2 Les interruptions logiielles

Nousavonsrenontrélanotiondesous-programmeetnousavonsvuommentmettreenplae

untelsous-programme.Unsous-programmepeutêtreonçuparl'utilisateurmaisertainssous-

programmesimportantspeuventêtreonçus(avebeauoupdesoins)pourêtreréutilisésparun

grandnombred'utilisateurs.En généralilssontplaésdansdesbibliothèques;nousverronsplus

tard omment. Il est également prévu qu'un ertain nombre d'entre eux, les plus importants,

puissentêtreappelésparuneméthodequelquepeuspéique:esontlesroutinesde servie

assoiéesàdesinterruptionslogiielles.

21.2.1 Mise en plae

21.2.1.1 Appeldes interruptions

Syntaxe.-Lasyntaxede l'appeld'uneinterruptionlogiielleen langagesymboliquepourle mi-

roproesseur8086/8088esttout simplement:

INT onstante

oùonstanteest unentieromprisentre00hetFFh:ilya256interruptionspossiblespourle

miroproesseur8086.

Sémantique.-Cetteinstrutionestéquivalenteàunappellongdesous-programmepourlequelil

estinutiledepréiserlesvaleursdeCSetdeIPlorsdel'appel:ellessontstokéesàdesadresses

biendénies.

Cetteinstrutionprovoquelestokageduregistredesindiateursdanslapile,lamiseàzéro

desindiateursTFet IFet lasauvegardedesontenusde CSet IP. Lesnouveauxontenusde

CSet de IP sonthargésàpartirdesasesmémoire, leontenu deIP étanthargéendernier.

Lepointeurdepileestdérémenté de6.

Puisqu'ilya256interruptionspossibles,IntelaréservélepremierKiOdelamémoirevive,les

asesd'adresse000hà3FFh,pouryplaerlesadressesdesroutinesdeserviedesinterruptions,

à raison de quatre otetspar type. Ce premier KiO de mémoireviveest appelé tableau des

veteursd'interruption(enanglaisinterruptvetortable).L'adressedelapremièreinstrution

de la routinede servie de l'interruption setrouve àl'adresse

4 × n

pour letype

n

: les deux otetsdeIPsetrouventàl'adresse

4 × n

etlesdeuxotetsdeCSàl'adresse

4 × n + 2

.

Les256interruptionsnesontpasengénéraltoutesimplémentéessurunsystèmeinformatique

donné; leurnombre dépend dusystème d'exploitation et de e qui a été prévu parles grands

logiielsutilisateur.

Exemple.-Lesadressesdesroutinesdeservienesontpasimposéesparlesonepteursdu8086

maisparlesonepteursdesroutinesdeservieassoiées.Ellesdépendentdondelaversiondu

BIOS,delaversiondusystèmed'exploitationetdesprogrammesutilisateursuivanteluiquil'a

implémentée.

On peut se servir de debug pour obtenir les adresses de notre système. Par exemple pour

l'interruptionINT3,onobtientsurmonsystème:

C:>debug

-d 0000:000C L4

0000:0000 65 04 70 00 e.p.

-q

(4)

Langagemahine.-L'instrutiond'interruptionestodéesurunoudeuxotetspar:

| 1100 110v | type si

v = 1

|

ave

v = 0

pourINT 3.

21.2.1.2 Retour d'une interruption

Langagesymbolique.-Laroutinedeservied'uneinterruptiondoitseterminerparl'instrution:

IRET

pourInterrupt RETurn.

Sémantique.-Les ontenus deCS, deIP et du registredes indiateurssontrehargésdepuis la

pile.Lepointeurdepileest inrémenté de6.

Langagemahine.-Cetteinstrutionestodéesurunotetspar1100 11011,soitCFh.

(5)

21.2.2 Un exemple d'appel d'interruption logiielle

Introdution.- Nous avons vu le prinipe de mise en plae des entrées-sorties en utilisant les

instrutionsINet OUT.Nousnesommes pasalléstrès loinpourl'instant,vula déliatessede

lamiseen÷uvre.

Certaines fontionnalités sont réalisées par le BIOS et implémentées omme interruptions

logiielles.Nousn'allonspasérired'interruptionpourl'instant,maisenutiliseruneduBIOS.

LesinterruptionsduBIOS.-Puisqu'iln'yaque256interruptionspossiblesetquelesonepteurs

du BIOS et du système d'exploitation de l'IBM-PC avaient envie d'en implémenter plus, ils

ont assoiés plusieurs ations àune même interruption logiielle. Chaque ation s'appelle une

fontiondel'interruptionetsedistinguedesautresationsparlavaleurduregistreAH,appelée

numérode la fontion.

Parexemple,aveleBIOSdel'IBM-PC,onutiliselafontion0Ahdel'interruption10hpour

aherunaratère.Cettefontionadesparamètres:leregistreALdoitontenirlenumérodu

aratèreàaher,leregistreBHlenumérodepage(quinenousintéresserapaspourl'instant)

etleregistreCXlenombredefoisqu'ilfautl'aher.

Lenuméroduaratère estsonodeASCII saufpourles32premiersaratères,quisont

desaratèresditssemi-graphiquessuivantunodedéterminéparIBM.Une onséquenede

ehoixest quelesaratèresdeontrle(bip,retourhariot...)nesontpasatifs.

Lepremieraratèreestahéàlapositionduurseurpuisenontinuantenallantàlaligne

sibesoinest.

Exemple.-Érivonsunprogrammepermettantd'aher120`a'àpartirdelapositionduurseur.

Rappelons que le ode ASCII de `a' est 61h et que 120 = 78h.Érivons unsous-programme,

d'abordenlangagesymbolique:

MOV AH,0A

MOV AL,61

MOV BH,0

MOV CX,78

INT 10

RET

puisenlangagemahine:

B4 0A

B0 61

B7 00

B9 78 00

CD 10

C3

Codonseprogramme:

C:\COM>debug

-E CS:100 B4 0A

-E CS:102 B0 61

-E CS:104 B7 00

-E CS:106 B9 78 00

-E CS:109 CD 10

-E CS:10B C3

-R BX

(6)

:

-R CX

CX 0000

:C

-N AFFICHE.COM

-W

Eriture de 0000C otets

-Q

C:\COM>affihe.om

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaa aaaaa aaaaa aaaa a

C:\COM>

L'exéution peut peut-être sembler bizarre mais orrespond bien à e qui aété demandé :

120`a'sontahés,mais sansretourner àlaligne; unepartie deses`a'est dondétruitepar

l'ahagesuivant.

(7)

21.2.3 Un exemple de routine d'interruption logiielle

21.2.3.1 Trae d'un programmeave interruption

Introdution.-Nousavonsvuommenteetuerlatraed'unprogrammeavelelogiieldebug.

Il y a un problème lorsqu'un programme ontient des interruptions. En eet si on utilise la

ommandeT,lorsqu'onarriveàl'interruption,onvadériretouteslesinstrutionsdelaroutine

deelle-i.Cen'estpasequiestvouluengénéral:onsupposequeleonepteurdel'interruption

amisenplaelaroutinedeservieassoiéedefaçonorrete.Onpréféreraitdonuneommande

quiexéutelaroutinedeservieensonentieretnousmontre lerésultataprèselle-i.

LaommandeP .- Une telle ommande existe pour debug, il s'agit de la ommande P (pour

l'anglaistoProeed).

Exemple.-Déterminonslaapaitédelamémoirevivedenotreordinateur.

En e qui onerne lesompatibles PC, elle-i était déterminée au momentdu démarrage

de l'ordinateur et le résultat plaé à l'emplaement de la mémoire vive(réservé parle BIOS)

0040:0013h.

IlexisteuneinterruptionduBIOS,l'interruptionlogiielleint 12h,quipermetderéupérer

ette valeuretdelaplaerdansleregistreax.

Conevonsdonunprogrammepermettantdedéterminerlatailledelamémoire:

C:\>debug

-a

17A4:0100 int 12

17A4:0102 nop

17A4:0103

Exéutonsmaintenantlatraedeeprogramme:

C:\>debug

-a

17A4:0100 int 12

17A4:0102 nop

17A4:0103

-r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=17A4 IP=0100 NV UP EI PL NZ NA PO NC

17A4:0100 CD12 INT 12

-P

AX=0280 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=17A4 IP=0102 NV UP EI PL NZ NA PO NC

17A4:0102 90 NOP

-

quinousdonnelavaleur.Celle-idoitdenosjoursêtreinterprétéearnousdépassonslaapaité

mémoireprévuelorsdelaoneptionsdespremièresversions duBIOS.

(8)

21.2.3.2 La routine de servie

Si oneetuelatraedeeprogrammeenutilisantlaommandeTaulieu delaommande

P,onobtient:

C:\>debug

-a

17A4:0100 int 12

17A4:0102 nop

17A4:0103

-r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=17A4 IP=0100 NV UP EI PL NZ NA PONC

17A4:0100 CD12 INT 12

-t

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFE8 BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=F000 IP=F841 NV UP DI PL NZ NA PONC

F000:F841 1E PUSH DS

-t

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFE6 BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=F000 IP=F842 NV UP DI PL NZ NA PONC

F000:F842 B84000 MOV AX,0040

-t

AX=0040 BX=0000 CX=0000 DX=0000 SP=FFE6 BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=F000 IP=F845 NV UP DI PL NZ NA PONC

F000:F845 8ED8 MOV DS,AX

-t

AX=0040 BX=0000 CX=0000 DX=0000 SP=FFE6 BP=0000 SI=0000 DI=0000

DS=0040 ES=17A4 SS=17A4 CS=F000 IP=F847 NV UP DI PL NZ NA PONC

F000:F847 A11300 MOV AX,[0013℄ DS:0013=0280

-t

AX=0280 BX=0000 CX=0000 DX=0000 SP=FFE6 BP=0000 SI=0000 DI=0000

DS=0040 ES=17A4 SS=17A4 CS=F000 IP=F84A NV UP DI PL NZ NA PONC

F000:F84A 1F POP DS

-t

AX=0280 BX=0000 CX=0000 DX=0000 SP=FFE8 BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=F000 IP=F84B NV UP DI PL NZ NA PONC

F000:F84B CF IRET

-t

AX=0280 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17A4 ES=17A4 SS=17A4 CS=17A4 IP=0102 NV UP EI PL NZ NA PONC

17A4:0102 90 NOP

-

quientredansledétaildelaroutinedeserviedel'interruption.

Ii elle-iestsimple: elleonsisteàaller herherlerenseignementlàoùil estplaé.

(9)

21.3 Masquage des interruptions externes masquables

Il peut arriverque l'on ait besoin, lors de l'exéution d'une routine, que les interruptions

matérielles masquables ne soient prise en ompte, pour ne pas gêner le bon déroulement du

programme.

Langagesymbolique.-Onsesertpoureladel'instrution:

CLI

(pourl'anglaisClearInterruptFlag),quiapoureetdepositionnerà0l'indiateurIF.Cein'a

auun eet sur lesinterruptionsexternes non masquables(délenhéespar labroheNMI) ou

lesinterruptionslogiielles.

Pourpermettreànouveaul'exéutiondesinterruptionsmasquables,onutilisel'instrution:

STI

(pourl'anglaisSeT Interruptag),qui apoureetdepositionnerà1l'indiateurIF.

Langagemahine.-1

o

)L'instrutionCLIest odésurunotetpar1111 1010,soitFAh.

-2

o

)L'instrutionSTIest odésurunotetpar1111 1011,soitFBh.

Références

Documents relatifs

Comme pour les récréations, certaines écoles mettent à la disposition des jeunes, qui utilisent le service de surveillance du midi, du matériel leur permettant de jouer

le nez offre des arômes de petits fruits rouges avec des

Région administrative de livraison 1 Directeur général des élections

Cei doit être eetué à partir d'une page pour laquelle les adresses virtuelles sont. égales aux adresses physiques ( hh identity mapped ii

moins chaque année, du plan des réseaux pour les extensions, réhabilitations et renouvellements de réseaux (en l'absence de travaux, la mise à jour est considérée comme

CA AMIENS TJ SAINT QUENTIN MME BALDINI Laurie CA PARIS GTJ PARIS Réintégration.. CA ANGERS TJ ANGERS MME CASTELLI Claire CA NIMES

 Titres de participation : Les titres représentant des parts de capital dans les entreprises dont la possession durable est estimée utile à l’activité de

≻ la demande est instruite par un Technicien de l’Offre globale de service pour le service Prestations ou, pour le service Action sociale, par un Technicien des Aides