Sei sulla pagina 1di 12

Ing.

Gabriele MONTI 1999 - 2011

Interrupt 8086

www.ingmonti.it

L'interrupt nell'8086 e nel PC

In que to !apitolo i tu"ia in "ettaglio il #un$ionamento "el i tema "%interru$ione "ell%8086& !'e ( un igni#i!ati)o e empio "i interrupt )ettori$$ato. *oi i piega il pi+ tipi!o !ontrollore "%interru$ione& !io( l%82,9& in#ine i illu tra l%ar!'itettura "el i tema "%interru$ione "el *-.

1.1

Il sistema d'interruzione dell'8086

-ome gi. a!!ennato nel !apitolo pre!e"ente la equen$a "%interru$ione "i una -*/ 8086 ( pi+ !ompli!ata "i quella "e!ritta in quel !apitolo. Interrupt e #lag 0bbiamo gi. anti!ipato !'e e i te un%i tru$ione pe!i#i!a per il ritorno "a una I12 e !'e il uo mnemoni!o ( IRET. 3a "oman"a !'e !i i "o)rebbe porre ora ( la eguente4 5per!'6 e i te la I27T& non ba terebbe una 27T8 927T #ar:;5. <opotutto il ritorno "all%interru$ione& !o = !ome "e !ritto nel !apitolo pre!e"ente& ( uguale a quello "i una pro!e"ura4 la -*/ tra #eri !e nel *rogram -ounter !i> !'e 5emerge5 "allo ta!?. 3a ragione "ell%e i ten$a "ella I27T ( !'e la equen$a "i interru$ione "i un 8086 al)a nello ta!? an!'e il )alore attuale "ei #lag. @e"iamo "i giu ti#i!are que ta opera$ione !'e& e non #o e in"i pen abile& arebbe piutto to !o to a& "ato !'e )iene #atta empre "alla -*/. *er aiutar!i u iamo la & !'e !ontiene una I12 "i e empio. In ono illu trate al!une rig'e "el programma interrotto. 2i!or"an"o !'e una I12 pu> !attare in ogni i tante& e non olo quan"o il programmatore lo )uole& la mo tra& al punto A1B& un%o!!a ione in !ui l%arri)o "i un interrupt arebbe "el tutto inopportuno e potrebbe !au are "anni& e la -*/ non al)a e i #lag.

8igura 14 e e!u$ione "i una pro!e"ura "%interru$ione In#atti l%i tru$ione A2B #a a##i"amento ui #lag pro"otti "all%i tru$ione A1B& la I12 per> li mo"i#i!a& l%ultima )olta nell%itru$ione ACB& o nella !'iamata ADB. <unque il programma !ritto in #un$iona regolarmente& ma olo per!'6 la -*/ al)a automati!amente nello ta!? tutti i #lag prima "i altare alla I12& e per!'6 l%i tru$ione I27T non ripri tina olo -1 e I* "ell%in"iri$$o "i ritorno ma an!'e tutti i #lag "ella -M* "ell%i tru$ione A1B. Nelle pi+ importanti -*/ a 16 e C2 bit& e non olo nell%8086& i #lag )engono al)ati automati!amente "alla -*/& ma e itono igni#i!ati)e e!!e$ioni in !ui que to non a!!a"e. 8lag "i interrupt *er ragioni !'e pieg'eremo nel pro imo que to !apitolo& e eguire una I12 a interrupt abilitati pu> e ere 5peri!olo o5. <unque l%8086 prima "i entrare in una I12 !an!ella il #lag "i interrupt& !io( e egue un%i tru$ione equi)alente a CLI 9Clear Interrupt #lag:.

22 Interrupt 8086.o"t

@er. 0.,.1 2011-0C-01

p. 1 "i 12

Ing. Gabriele MONTI 1999 - 200D

www.ingmonti.it

Eue ta opera$ione )iene e eguita "opo !'e il regi tro "ei #lag ( tato al)ato nello ta!?. *er que to quan"o l%i tru$ione I27T !on!lu"e la I12 e a ripri tina automati!amente il #lag "i interrupt a 1& !io( riabilita le interru$ioni. 3e I12 )engono e eguite "all%8086 a interrupt "i abilitati& a meno !'e il programmatore non li abiliti e pli!itamente !on l%i tru$ione 1TI 9Set Interrupt: e eguita entro la I12. Naturalmente que to impli!a il #atto !'e "urante l%e e!u$ione "elle interru$ioni il i tema ( !ie!o agli interrupt. 1i!!ome "urante la I12 potrebbe arri)are una ri!'ie ta "%interru$ione importante& "a er)ire ubito& le I12 "e)ono e ere molto )elo!i nell%e e!u$ione& ri ol)ere rapi"amente il problema "i IFO per !ui ono tate ri!'ie te e ritornare. In e##etti qua i tutte le I12 #anno olo "ue !o e4 e##ettuano l%opera$ione "i IFO ri!'ie ta e ne ri!opiano il ri ultato in un bu##er. 0" elaborare i "ati pre enti nel bu##er pen eranno i programmi 5normali5& !'e e eguono a" interrupt abilitati. 1e in)e!e la I12 "e)e e eguire per molto tempo 9in"i!ati)amente per pi+ "i un m : allora ( ne!e ario abilitare gli interrupt& e ponen"o i a !erti 5ri !'i5. Nella I12 "i ( mo trato proprio que to !a o. Euan"o il te t ull%opera$ione "i IFO ". ri ultato 0 9punto A,B "i : ( ne!e ario e eguire la pro!e"ura 5/n*o3unga5 9G:. *er non la !iare il i tema "%interru$ione "i abilitato per troppo tempo& prima "ella !'iamata a" 5/n*o3unga5 i e egue un%i tru$ione 1TI& !'e abilita le interru$ioni. *oi al ritorno i riabilitano !on -3I 9an!'e e nel !a o pe!i#i!o non !e ne arebbe bi ogno& "ato !'e i ritorna ubito e quin"i !i pen a la I27T:. -ome )e"remo an!'e la !'iamata a pro!e"ure "e)e e ere e##ettuata !on !autela nelle I12& la pro!e"ura "i ( quin"i un e empio "i I12 piutto to 5"i##i!ile5. Interrupt e regi tri -ome gi. "etto nel !apitolo pre!e"ente& il ritorno "a una I12 "e)e la !iare T/TTI i regi tri nelle te e !on"i$ioni in !ui erano al momento "ell%interru$ione& altrimenti il programma interrotto non )iene "anneggiato. 0ll%ini$io "elle I12 i "e)ono per!i> al)are i )alori "i tutti i regi tri !'e )engono mo"i#i!ati "alla I12 te a& e ripri tinare il loro )alore prima "i ritornare. 3%8086 non #a al!un al)ataggio "i regi tri automati!o all%ingre o "elle I12& per !ui !i "e)e pen are il programmatore& !ome in"i!ato ai punti A6B e AHB "ella . 0l!une -*/& !ompre e quelle "ella #amiglia I86 "al 286 in poi& 'anno parti!olari i tru$ioni !'e al)ano tutti i regi tri nello ta!? e" altre !'e li ripri tinano tutti. Eue ta olu$ione ". la !erte$$a !'e non !i aranno problemi nel ritornare al programma interrotto& an!'e e pu> ren"ere il programma meno e##i!iente& per!'6 i regi tri !'e non )engono mo"i#i!ati "alla I12 )engono !omunque al)ati e ripri tinati. JJJJ 1ome -*/ 'a)e a pe!ial et o# regi ter t'at onlK eLi t in interrupt mo"e& an" t'e interrupt !o"e !an u e t'e e regi ter to "o mo t o# t'e !onteLt a)ing it nee" to "o.

Interrupt vettorizzato 8086

3%8086 "i pone "i un o#i ti!ato i tema per l%interrupt )ettori$$ato& e" ( in gra"o "i altare automati!amente a" una qual ia i "i 2,6 po ibili "i)er e I12. -i> igni#i!a !'e& almeno poten$ialmente& l%8086 ( in gra"o "i ri!ono !ere 2,6 "i)er i "i po iti)i e "i ini$iare la relati)a I12 en$a l%e e!u$ione e pli!ita "i al!una i tru$ione "i programma. I"enti#i!a$ione "el "i po iti)o Il me!!ani mo !on !ui la -*/ !eglie quale "i que te 2,6 I12 "ebba e ere e eguita ( ba ato ull%i"enti#i!a$ione "el "ipo iti)o& e##ettuata "al "i po iti)o te o& !on la !rittura "i un numero ul "ata bu . Naturalmente que to numero non pu> e ere !ritto "al "i po iti)o in ogni momento& in#atti il "ata bu )iene normalmente u ato "alla -*/ per ben altri !opiJ 7rgo per que ta opera$ione "e)e e ere ri!'ie ta l%autori$$a$ione "ella -*/. *er "are que ta autori$$a$ione er)e un nuo)o pie"ino "i !ontrol 5bu 5& !'iamato& nell%8086& INTAck 95Interrupt Acknowle"ge5 9!on#erma "i interru$ione:: 9G:. Euan"o INT0!? ( alto il "i po iti)o pu> !ri)ere il uo numero "i i"enti#i!a$ione ul bu .
(*) Questo segnale viene alzato per ogni richiesta d'interruzione, proveniente da qualsiasi dispositivo, per cui non pu giungere ad un solo dispositivo specifico e non utile per segnalare ad un dispositivo che la sua richiesta stata servita. Ci significa che non pu essere usato per risolvere il pro le!a del riconosci!ento dell'interruzione, che a ia!o trattato nel capitolo precedente.

<unque in un 8086 al lan!io "i un interrupt a!!a"e que to4 - Il "i po iti)o al$a la linea INT2 9l%8086 "i pone olo "i que to pie"ino per tutte le ri!'ie ta "%interru$ione 5normali5:

p. 2 "i 12

2011-0C-01

22 Interrupt 8086.o"t

Ing. Gabriele MONTI 1999 - 2011

Interrupt 8086

www.ingmonti.it

- 3a -*/ al$a il egnale INT0!? e I8 M 1& e in)e!e I8 M 0 e a non ". ne un a!?nowle"ge e l%interrupt rimane 5pen"ente5 95pen"ing interrupt5:& poi pro egue nel #et!' "ell%i tru$ione u!!e i)a& ignoran"o la ri!'ie ta "%interru$ione - Il "i po iti)o !ri)e il uo numero "i i"enti#i!a$ione& !'e "%ora in poi !'iameremo INT# 9G:& nei primi otto bit "el "ata bu 9il numero ( minore "i 2,6: - 3a -*/ legge l%INTN "al "ata bu e lo u a per l%a!!e o alla I12 "el "i po iti)o. 9G: Il imbolo "i "ie i 9N:& !'iamato 5poun"5 o 5 'arp5 "agli 0meri!ani& )iene "a loro pe o u ato al po to "ella parola 5number5 o" al po to "i un numero. Euin"i leggeremo INTN !ome 5INT number5. *er empli#i!are l%elettroni!a "ei "i po iti)i "i IFO "i olito )iene interpo to #ra il "i po iti)o "i IFO e" il i tema "%interru$ione "ella -*/ un parti!olare !ir!uito integrato !'e #a "a inter#a!!ia #ra i "ue& reali$$an"o il . Eue to "i po iti)o )iene "etto 5interrupt controller5& quello pi+ !omune !on l%8086 ( l%82,9& u ato nel primo *- IOMP e o )err. trattato in "ettaglio nel eguito. Generalmente un interrupt !ontroller ( in gra"o "i raggruppare "i)er e linee "%interru$ione e "i pa are le loro ri!'ie te a" un uni!o pie"ino "%interru$ione "ella -*/& !ome in"i!ato in 8igura 2 "a I2E 1& I2E 2& .. . 3a igla I2E igni#i!a Interrupt Reque t. /n altro !ompito "el !ontrollore "%interru$ione ( regolare la priorit. "egli interrupt !'e ge ti !e& #a!en"o in mo"o !'e& in !a o "i I2E !on!omitanti& )enga lan!iato per primo l%interrupt pi+ importante. 3%ultima importante #un$ione "ell%interrupt !ontroller ( quella "i 5ma !'erare5 al!une orgenti "%interru$ione. Manipolan"o opportunamente i bit "i un regi tro "el !ontrollore i ( in gra"o "i abilitare o "i abilitare al!uni pe!i#i!i interrupt& per i quali il !ontrollore non pa er. alla -*/ le e)entuali ri!'ie te "i interru$ione.

Figura 2: richiesta e confer a !i interrupt Tabella "ei )ettori "%interru$ione 3a #a e u!!e i)a ( il alto alla I12 "el "i po iti)o !'e 'a ri!'ie to l%interru$ione. Il alto ( e eguito in mo"o in"iretto& leggen"o in memoria l%in"iri$$o "ella I12. <ato !'e le I12 po ono e ere 2,6 "e)ono e i tere in memoria 2,6 lo!a$ioni 5#i e5 nelle quali i pu> !ri)ere l%in"iri$$o "i !ia !una "elle I12. Gli in"iri$$i "elle I12 ono !ontenuti nella 5ta"ella !ei #ettori !$interru%ione5. Il primo !'ilobKte "ella memoria "i un 8086 ( "e tinato a que ta tabella& !'e !ontiene 2,6 in"iri$$i egmentati. 9C2 bit per ogni in"iri$$o& 2,6 G C2 bit M 1 QbKte:. -ia !uno "i que ti in"iri$$i punta alla prima i tru$ione "i una I12 e )iene "etto #ettore !$interru%ione. Il )ettore "%interru$ione "ell%INT 1 ta all%in"iri$$o $ero e pren"e D bKte& il )ettore "ell%INT 2 ta all%in"iri$$o D& in generale il )ettore "ell%INT n i tro)a all%in"iri$$o 9nG D:. 3a equen$a "%interru$ione i pu> ora !ompletare !on il alto alla I12. 3a -*/ 'a gi. letto l%INTN& o lo u a per !al!olare l%in"iri$$o nella tabella "ei )ettori al quale i tro)a l%in"iri$$o "ella I12. Il !al!olo ( empli!e4 all%in"iri$$o INTN G D i tro)a l%o## et "ell%in"iri$$o& "a !opiare in I*& a RINTN G D S 2T il egmento& "a !opiare in -1.

22 Interrupt 8086.o"t

@er. 0.,.1 2011-0C-01

p. C "i 12

Ing. Gabriele MONTI 1999 - 200D

www.ingmonti.it

Figura &: ta"ella !ei #ettori !$interru%ione

Sequenza di interrupt dell'8086

*er !ompletare la equen$a "i interrupt man!a il al)ataggio "el 5*rogram -ounter5& !'e #ino a qui abbiamo tra !urato. & In un 8086 e o !on i te nella !rittura nello ta!? "i -1 e "i I*& nell%or"ine& in mo"o !'e il )alore !'e 5emerge5 "allo ta!? ia la 5parte ba a5 "ell%in"iri$$o 9-*/ little en"ian:. 0 que to punto abbiamo tutti gli elementi per elen!are nel "ettaglio tutti i pa i "i una equen$a "%interru$ione "ell%8086. A8I37B 1equINT.8U, AF8I37B Figura ': sequen%a !i interrupt !i un ()(* 91: +ispositi#o. *er ri!'ie"ere er)i$io "a parte "ella -*/ al$a il uo egnale "i ri!'ie ta "%interru$ione& !'e ( !ollegato all%interrupt !ontroller 92: Interrupt controller. 0l$a il egnale "i ri!'ie ta "%interru$ione "ella -*/ 9INT2: 9C: C,-. -ompleta la #a e "i eLe!ute "ell%i tru$ione !orrente 9D: C,-. @eri#i!a e !%( una ri!'ie ta "i interru$ione u INT2. 1e I8 M 0 oppure INT2 M 0 pa a al #et!' "ell%i tru$ione u!!e i)a "el programma !orrentemente in e e!u$ione& non e eguen"o al!una I12 9,: C,-. 1e I8 M 1 e 9an": INT2 M 1 al)a nello ta!? i #lag 9equi)alente a 5*/1U85: 96: C,-. Mette a $ero l%interrupt #lag 9equi)alente a 5-3I5: 9H: C,-. 1al)a nello ta!? -1 9equi)alente a 5*/1U -15: 98: C,-. 1al)a nello ta!? I* 9equi)alente a 5*/1U I*5: 99: C,-. <. la !on#erma "%interru$ione all%interrupt !ontroller& al$an"o la linea INTa!? p. D "i 12 2011-0C-01 22 Interrupt 8086.o"t

Ing. Gabriele MONTI 1999 - 2011

Interrupt 8086

www.ingmonti.it

910: Interrupt controller. Mette ul "ata bu il numero "i )ettore "el "i po iti)o !'e ta interrompen"o 9INTN: 911: C,-. 3egge l%INTN "alle linee 0-H "el "ata bu 912: C,-. 1!ri)e in I* il )alore 9a wor": letto in memoria all%in"iri$$o INTN G D 9!ome 5MO@ -1 & 04 RINTN G DT5: 91C: C,-. 1!ri)e in -1 il )alore letto in memoria all%in"iri$$o INTN G D S 2 9!ome 5MO@ -1 & 04 RINTN G D S 2T5: que to !on!lu"e la equen$a "i interrupt. 3a pro ima #a e "i #et!' )iene e eguita all%in"iri$$o -14I*& per !ui i alta alla prima i tru$ione "ella giu ta I12.

Figura .: istru%ioni equi#alenti !i una sequen%a !i interrupt e !i IRET

1.1.1

Uso "software" delle sequenze di interrupt

I !ir!uiti "ella -*/ 8086 !'e er)ono per reali$$are la equen$a "i interrupt ono u ati an!'e per gli interrupt o#tware e per le 5e!!e$ioni5.

Interrupt software

3%interrupt o#tware ( un mo"o per reali$$are !'iamate in"irette a pro!e"ure& in mo"o pi+ #le ibile ri petto all%i tru$ione -033. *er !'iamare un interrupt o#tware i u a l%i tru$ione INT& !'e 'a la eguente inta i4 INT <Numero di vettore> 7 empio4
INT 21h ; esegue la routine di risposta all'interruzione dell'INT 21h

Il #un$ionamento "i INT ( molto empli!e4 )iene e eguita una equen$a "i interru$ione& !'e !ompren"e molti "ei pa i "i quella "ell%interrupt 'ar"ware& "e !ritta nel paragra#o pre!e"ente. <ue ole& ma #on"amentali& le "i##eren$e ri petto all%interrupt 'ar"ware4 1. il numero "i )ettore non )iene prele)ato "al "ata bu & ma "al !o"i!e te o "el programma 9( ANumero "i )ettoreB:. Eue to impli!a !'e non !%( lo !ambio INT2 V INT0!? e" il !ontrollore "%interru$ione non ( intere ato "alla equen$a 2. Il #lag "i interrupt )iene ignorato e la equen$a e eguita !omunque 9 arebbe a ur"o pen are !'e la -*/ non e egua l%i tru$ione INT e I8 M 0P e !o = #o e !o a "o)rebbe #are; 1i "o)rebbe blo!!are per empre& ignorare l%i tru$ione o !o%altro;: <al punto "i )i ta #un$ionale un interrupt o#tware non ( un interrupt& per!'6 non 5interrompe5 nulla& ma ( piutto to una pro!e"ura !on !'iamata in"iretta. Il #atto per> !'e e egua una equen$a qua i i"enti!a a" un interrupt igni#i!a !'e )engono al)ati nello ta!? -1& I* e" il regi tro "el #lag& per !ui per tornare al programma prin!ipale "a un interrupt o#tware bi ogna u are I27T. Il me!!ani mo "ell%interrupt o#tware ( #le ibile e" e##i!ienteP per que to moti)o )iene u ato !ome meto"o per e##ettuare le !'iamate al 1i tema Operati)o& non olo in M1-<O1 9INT 21':& ma an!'e in Win"ow e 3inuL. Naturalmente un )ettore "%interru$ione u ato per un interrupt o#tware non potr. e ere u ato an!'e per un interrupt 'ar"ware. <unque "ei 2,6 po ibili )ettori "%interru$ione olo al!uni ono "e tinati a interrupt 'ar"ware 9nel *- ono olo 16:. Gli altri )ettori po ono e ere u ati "al o#tware "i i tema 91i tema Operati)o:& "alle e!!e$ioni "ella -*/ e" e)entualmente& i rimanenti& an!'e "ai programmi "%utente.

Eccezioni della CP

In o!!a ione "i parti!olari e)enti& !'e ri!'ie"ono un trattamento imme"iato "a parte "el 1i tema Operati)o eFo "ai programmi appli!ati)i& la -*/ ini$ia autonomamente un pro!e o "i interru$ione. 0l!uni )ettori "el i tema "i interru$ione ono per!i> ri er)ati alla -*/& !'e li u a per lan!iare le I12 relati)e a que ti e)enti. Nell%ar!'itettura "egli I86 i primi C2 )ettori "%interru$ione ono ri er)ati alle e!!e$ioni "ella -*/. Eue ti 5interrupt5& !'e non )engono lan!iati n6 "all%'ar"ware& n6 "al o#tware& ma autonomamente "alla -*/& )engono "etti ecce%ioni 9eL!eption : e !attano quan"o la -*/ i tro)a in al!une !on"i$ioni anomale& !'e il progetti ta "ella -*/ 'a tabilito "i egnalare in que to mo"o. 3e "ue "i##eren$e "elle e!!e$ioni ri petto all%interrupt 'ar"ware ono4

22 Interrupt 8086.o"t

@er. 0.,.1 2011-0C-01

p. , "i 12

Ing. Gabriele MONTI 1999 - 200D

www.ingmonti.it

1. Il numero "i )ettore non i pu> !ambiare e" ( tabilito "al progetti ta "ella -*/. Ogni !on"i$ione !'e genera un%e!!e$ione 'a il uo )ettore "%interru$ione& !'e )iene pubbli!ato nel manuale "ella -*/. 2. 3%interrupt #lag )iene ignorato 1egue una tabella !on le e!!e$ioni "ell%80864 INT N -ommento INT 0 7rrori nella "i)i ione intera 9o)er#low& "i)i ione per $ero: INT 1 INT 2 INT C INT D 1ingle tep4 interrompe lXe e!u$ione temporaneamente& quan"o il #lag T 9trap: ( a 1 9u ato "ai "ebugger: NMI 9not ma ?able interrupt:4 )iene generata "a una tran i$ione ul pie"ino NMI "ella -*/ 3an!iata "all%i tru$ione INTO& !'e 'a !o"i!e operati)o "i 1 OKte 9u ata per i brea?point "al "ebugger o#tware: Interrupt on o)er#low. @iene lan!iato "allXi tru$ione INTO& per> olo nel !a o in !ui il #lag "i o)er#low ia ON. / ato per a)ere un%e!!e$ione an!'e nel !a o "i errori aritmeti!i in omma o ottra$ione.

Figura *: i principali #ettori !$interru%ione !i un ,C /S+0S1 7 empio4 Il )ettore "%interru$ione $ero 9INT 0: ( ri er)ato& per "e!i ione "el !o truttore& all%errore "i "i)i ione per $ero. Euan"o "urante un programma i e egue un%i tru$ione <I@ !on "i)i ore nullo parte automati!amente l%I12 "ell%INT 0 9quella il !ui )ettore i tro)a all%in"iri$$o 0:. Nelle -*/ u!!e i)e "ella erie 80I86 le e!!e$ioni ono molto pi+ numero e& per!'6 "e)ono !omuni!are i molti tipi "i errore po ibili in quelle -*/ o#i ti!ate& !'e 'anno #un$ionalit. per4 la 5prote$ione "ella memoria5& la memoria )irtuale& !opro!e ori aritmeti!i interni& !a!'e interne. Nell%0ppen"i!e 01 ono in"i!ati i prin!ipali )ettori "%interru$ione& ia 'ar"ware !'e o#tware& per un *- u !ui ia intallato M1-<O1.

Il sistema d'interruzione nella fami!lia "86


Nell%80286 9286: il i tema "%interru$ione ( analogo a quello "ell%8086& )engono aggiunte nuo)e e!!e$ioni& relati)e alle !on"i$ioni anomale ri !ontrate quan"o la -*/ la)ora in mo"o protetto. <all%80C86 9C86: in poi il i tema "%interru$ione ( !ambiato in mo"o igni#i!ati)o e rimane i"enti!o an!'e nei *entium. 3a tabella "ei )ettori "%interru$ione ( tata 5)irtuali$$ata5 e pu> ora tro)ar i #i i!amente in qual ia i lo!a$ione "i memoria& an!'e e per i )e!!'i programmi& !ritti per le -*/ pre!e"enti al C86& tutto pu> #un$ionare !ome e #o e an!ora nel primo ?OKte "ella memoria. <ato !'e per !ompren"ere il #un$ionamento "egli interrupt in mo"o protetto ( ne!e ario intro"urre prima le te!ni!'e u ate "alla -*/ per upportare la memoria )irtuale& i po ti!ipa la ua "e !ri$ione pi+ "ettagliata al !apitolo IIII 5Ge tione "ella memoria5& paragra#o 5Interrupt e" e!!e$ioni in mo"o protetto5. 7!!e$ioni I86 3e e!!e$ioni& "al 286 in poi& po ono mettere nello ta!? un !o"i!e !'e i"enti#i!a la !au a "ellXerrore e pu> aiutare il o#tware a "e!i"ere !ome trattarlo. In mo"o reale non )iene mai pa ato al!un !o"i!e nello ta!?. Intel "i tingue #ra tre tipi "i interru$ioni non 'ar"ware4 trap& #ault e abort. 3e trap 95trappole5: ono imili a interrupt o#tware 9an$i& i pu> "ire !'e gli interrupt o#tware ono "elle trap:. 3e trap partono "ietro ri!'ie ta "el o#tware oppure in ri po ta a" un e)ento interno !'e ri!'ie"e l%e e!u$ione "i una 5normale5 pro!e"ura& in mo"o analogo a" un interrupt 'ar"ware. *er que to al ritorno "a una trap 9alla I27T: lXi tru$ione !'e )iene e eguita ( empre quella u!!e i)a a quella in !ui ( a))enuta la !'iamata. I fault 9errori: ono generati "alla -*/ in !on eguen$a "i un e)ento a imilabile a" un errore. 3a routine "i ri po ta allXe!!e$ione "i #ault #a !on!lu"ere il programma oppure rime"ia allXerrore. <ato !'e lXerrore ( rime"iato e i #a la I27T e a riporta alla te a i tru$ione !'e a)e)a generato lXerrore. Il programma& 5aggiu tato5& ora potr. #un$ionare regolarmente. Gli a"ort ono in)e!e errori gra)i& !'e "e)ono #ar interrompere la elabora$ione in ogni !a o. Nel !a o "i un abort il programmatore non "e)e #ar ripartire lXelabora$ione "el programma !'e lX'a generata 9!io( non "e)e #are la I27T:. 3e trap non mettono mai ne un !o"i!e "Xerrore nello ta!?& i #ault lo #anno olo qual!'e )olta& gli abort empre. Nell%0ppen"i!e 01 i pu> tro)are una tabella !'e elen!a tutte le e!!e$ioni "elle -*/ 80I86. I "ettagli ulle e!!e$ioni e ul i tema "%interru$ione "elle -*/ pi+ mo"erne "ella #amiglia I86 aranno "ati nel !apitolo III JJJJ mettere il ri#erimento JJJJ.

p. 6 "i 12

2011-0C-01

22 Interrupt 8086.o"t

Ing. Gabriele MONTI 1999 - 2011

Interrupt 8086

www.ingmonti.it

1.1.2

Interrupt non mascherabile

3e -*/ "ella #amiglia I86 'anno un pie"ino !'e er)e per generare un tipo "i interrupt la !ui I12 )iene e eguita !omunque& an!'e e il i tema "elle interru$ioni ( "i abilitato. Eue to pie"ino ( !'iamato NMI 9 Not /a ?able Interrupt:. 3a I12 "ell%interrupt non ma !'erabile ri ie"e al )ettore INT 2. 3%e e!u$ione "i una INT 2 in ri po ta a" un egnale NMI non pu> e ere interrotta in al!un mo"o.

1.1.3

8259

3%82,9 ( un !ir!uito "i IFO "i una !erta !omple it.& )iluppato pe!i#i!amente per mi!ropro!e ori "ella #amiglia I86& la !ui #un$ione ( empli#i!are l%a!!e o al i tema "%interru$ione. 7 o a!!etta in ingre o 8 linee "i interrupt& "a 8 "i)er i "i po iti)i& e" ( in gra"o "i interrompere una -*/ 8086& ri pettan"o la ua equen$a "i interrupt e pro"u!en"o ul "ata bu un numero "i)er o per !ia !uno "egli interrupt !'e a!!etta in ingre o. 3%82,9 ( per!i> un 5interrupt !ontroller5& le !ui !aratteri ti!'e #un$ionali po ono e ere !ambiate !ri)en"o in al!uni uoi regi tri. *er que to ( tato "enominato 5,rogrammable Interrupt Controller5 9,IC: 9G:. Il 5nome5 *I- ( tato an!'e u ato "all%a$ien"a ;;;;5Mi!ro!'ip5 ;;;; per "enominare una #amiglia "i mi!ro!ontrollori "i ba i imo !o to& impiegati in molte appli!a$ioni 5embe""e"5. Nel !a o "i que to mi!ro!ontrollore la igla *I- igni#i!a ;;;; 1i tenga "unque pre ente !'e quan"o i legge *I- bi ogna #ar "i tin$ione #ra l%interrupt !ontroller e" il mi!ro!ontrollore. 3e #un$ioni "el *I- ono4 - ge tire 8 interrupt eparati !on un0uni!a linea INT2 al mi!ropro!e ore - reali$$are una priorit. #ra le 8 orgenti "%interru$ione - ge tire la equen$a INT2 V INT0-Q per !onto "ei "i po iti)i - i"enti#i!are la orgente "%interru$ione !ri)en"o l%INT N ul "ata bu - pre"i porre il #un$ionamento 5ma terV la)e5 "i altri *I- 9)e"i in eguito: *er reali$$are le ue #un$ioni un 82,9 "i pone "i 8 linee "i ingre o !ollegate "irettamente ai "i po iti)i !'e "e)ono lan!iare un%interru$ione.

8igura H4 Gli ingre i e le u !ite pi+ igni#i!ati)e "i un 82,9 -'iameremo que te linee 5IR25& !io( 5Interrupt Reque t5 9ri!'ie ta "%interru$ione:& e le i"enti#i!'eremo !on un numero "a $ero a ette 9I2E0& I2E1& .. & I2EH:. In 8igura H ono in"i!ate le linee "i I2E !on a!!anto un imbolo !'e !orri pon"e al "i po iti)o !ollegato a quell%I2E nell%ar!'itettura "ei *- IOM !ompatibili. <al lato -*/ un 82,9 'a le linee& gi. "e !ritte& "i INT2 e INT0-Q& per poter apere quan"o 'a l%autori$$a$ione per i"enti#i!are il "i po iti)o& !ri)en"o il uo INT N ul "ata bu .

#rc$itettura interna di un 8%&'

0l uo interno un 82,9 ( !o tituito "i po!'e unit. #un$ionali& illu trate in 8igura 8.

22 Interrupt 8086.o"t

@er. 0.,.1 2011-0C-01

p. H "i 12

Ing. Gabriele MONTI 1999 - 200D

www.ingmonti.it

8igura 84 !'ema "i prin!ipio "i un 82,9 3e ri!'ie te "i interru$ione )engono 5ra!!olte5 "a un bu##er !ollegato !on l%e terno& "etto 5;;;;JJJJ5& !'e 5!opia5 al uo interno i egnali pro)enienti "ai "i po iti)i. Eue te ri!'ie te po ono pa are allo ta"io u!!e i)o& in"i!ato !ome 5prioritK re ol)er5 9"i !riminatore "i priorit.: in 8igura 8& olo e ono abilitate "al regi tro IM2 9Interrupt /a ? Regi ter:. -ome in"i!ato "alle porte 0N< "ella #igura& una ri!'ie ta "%interru$ione pu> pa are al prioritK re ol)er olo e il !orripon"ente bit "el regi tro IM2 'a )alore 0 9notare !'e un ogni 0N< !%( un pallino "i nega$ione per le linee pro)enienti "all%IM2:. <unque la #un$ione "ell%IM2 ( quella "i la !iar pa are olo gli interrupt il !ui bit "ell%IM2 ( a $ero. *er 5ma !'erare5 una orgente "%interru$ione ba ta !ri)ere un uno nel bit !orri pon"ente. In que to !a o l%82,9 non al$a INT2& an!'e e il "i po iti)o al$a la ua I2E. Nel mo"i#i!are IM2 bi ogna #are molta atten$ione a !ambiare olo il bit !'e intere a& en$a in#luen$are gli altri bit& per!'6 altrimenti tutto il i tema ri !'ia "i blo!!ar i. 7 empio4
; istruzioni che mascherano IRQ3: CLI IN L! IndirizzoI"R ; #unziona se l'indirizzo $ 2%& 'R L! 1((() ; maschera per mettere 1 nel )it di peso 3 '*T IndirizzoI"R! L +TI

Il prioritK re ol)er ( l%unit. !'e 'a il !ompito "i tabilire quale #ra le ri!'ie te "i interrupt atti)e in un !erto i tante ( la pi+ importante. Il !riterio per tabilire l%interrupt pi+ importante pu> e ere "i)er o in ba e a !ome il "i po iti)o )iene programmato. In un *- e !on i 1i temi Operati)i pi+ u ati il !ir!uito ( programmato per #are in mo"o !'e l%interrupt pi+ importante ia quello !'e 'a il numero pi+ ba o. *er!i> e i "i po iti)i lan!iano !ontemporaneamente I2EC& I2E1 e I2EH la prima I12 a" e ere e eguita ar. quella !'e !orri pon"e a I2E1. Il prioritK re ol)er reali$$a elettri!amente la empli!e regola appena enun!iata #a u !ire il numero "i I2E !'e "e)e e ere ri!'ie to. 3a #a e u!!e i)a ( la genera$ione "el )ettore "%interru$ione !'e !orri pon"e all%I2E pre !elto. Il numero "i INT i ottiene omman"o il numero !ontenuto nel regi tro JJJJNOM7 JJJJ al numero "i I2E !'e ( pa ato "al prioritK re ol)er. Il ri ultato )iene me o ul "ata bu nel momento in !ui la -*/ al$a INT0-Q. -oman"o 7OI 97n" O# Interrupt: *er poter #un$ionare il prioritK re ol)er "e)e "i abilitare nel *I- tutti gli interrupt "i priorit. pari o" in#eriore a quello ri!'ie to alla -*/. *er!'6 gli interrupt ripren"ano a #un$ionare "e)e e ere eme o un !oman"o 5 En" o# Interrupt5 9E0I:. 3%82,9 pu> e ere programmato per #un$ionare !on un 7OI automati!o. *eraltro nel 1.O. M1-<O1 !i> non a))iene& per !ui le I12 "e)ono #arlo e pli!itamente "urante la I12. p. 8 "i 12 2011-0C-01 22 Interrupt 8086.o"t

Ing. Gabriele MONTI 1999 - 2011

Interrupt 8086

www.ingmonti.it

7X per!i> ne!e ario !'e la -*/ 9il programmatore: !omuni!'i al *I- !'e lXinterrupt !'e e o a)e)a lan!iato ( tato er)ito& in mo"o !'e e o po a riabilitare gli interrupt meno prioritari. -i> i ottiene emetten"o il !oman"o Yen" o# InterruptZ& !io( !ri)en"o il numero 20' allXin"iri$$o ba e "el *I-.

(li 8%&' nel PC I)*

Il primo per onal !omputer IOM& il *- IT& #u il !apo tipite "ei *- o"ierni e !ontene)a un olo *I- 82,9& per !ui pote)a ge tire un ma imo "i 8 orgenti "%interru$ione. 3%uni!o *I- "i un *- IT ( mappato in IFO all%in"iri$$o ba e 20' 9C2":. 3%in"iri$$o "i IFO "ell%IM2 ( per!i> O017 S 1 M 21'. I "i po iti)i !ablati ai pie"ini "ell%82,9 ono& in un *- IT& quelli in"i!ati nella Tabella 14 I2E N I2E0 I2E1 I2E2 I2EC I2ED I2E, I2E6 I2EH INT N 08' 09' 00' 0O' 0-' 0<' 07' 08' 8un$ione 1K tem timer Ta tiera 2i er)ato *orta eriale -OM2 *orta eriale -OM1 <i !o rigi"o -ontroller #loppK "i ? 1tampante 3*T1

Ta"ella 3: IR2 in un ,C 4T 1i pu> arguire "alla tabella !'e il numero "i )ettore 9INTN: "el primo I2E "ell%82,6 ( 8. 1I nota an!'e !'e non rimane ne un interrupt libero& "ato !'e I2E2 ( ri er)ato. *er e)entuali !'e"e aggiunti)e !'e utili$$a)ano l%interrupt bi ogna)a u are quello "i uno "ei "i po iti)i "i tabella 9G:& oppure !on"i)i"ere una linea "i interrupt #ra pi+ "i po iti)i& !ompli!an"o il o#tware "i I12. 9G: tori!amente #u u ato quello "ella porta parallela& "ato !'e non #un$iona)a !orrettamente nella !'e"a originale IOM& oppure la eriale -OM2& per!'6 erano po!'i in !omputer u !ui erano pre enti pi+ "i una porta eriale. 7% !'iaro quin"i !'e !%era la ne!e it. "i e pan"ere il numero "i interrupt ge titi "a un *- e !i> ( quanto )enne #atto al momento "ella progetta$ione "el u!!e ore "el *- IT& !'e pre e il nome "i *- 0T 90")an!e" Te!'nologK:. Nel *- 0T i #rutta)a quella !aratteri ti!a "ell%82,9 !'e non abbiamo an!ora illu trato& !io( la po ibilit. "i !ollegare i *I- in mo"o 5ma terV la)e5. In un *- 0T ono pre enti "ue 82,9& !ollegati #ra loro e !on la -*/ in mo"o "a mantenere la !ompleta !ompatibilit. !on il *- IT. /no "ei "ue *I-& "etto 5ma ter *I-5 9pa"rone:& ( !ollegato e attamente !ome l%uni!o *I- "el *- IT. Il e!on"o *I-& "etto 5 la)e *I-5 9 !'ia)o:& ( !ollegato in mo"o "a lan!iare in uo interrupt non ulla linea INT2 "ella -*/& ma !ome I2E numero 2 "el *I- ma ter 9)e"i 8igura 9:

22 Interrupt 8086.o"t

@er. 0.,.1 2011-0C-01

p. 9 "i 12

Ing. Gabriele MONTI 1999 - 200D

www.ingmonti.it

8igura 94 *I- ma ter e la)e Eue to igni#i!a !'e l%I2E2& prima tenuto ri er)ato& nel *- 0T ( lan!iato ogni )olta !'e !%( una ri!'ie ta "%interru$ione "a uno qual ia i "ei "e)i!e !ollegati al *I- la)e. -ome in"i!ato in 8igura 9 nel *- 0T i !'iamano I2E8& 9& .. 1, le linee "i ri!'ie ta "%interru$ione !ollegate al *-I la)e. <ata la mo"alit. "i #un$ionamento "egli 82,9 e" il !ollegamento ma terV la)e& la priorit. "elle I2E "i un *- 0T non pu> !'e e ere la eguente4 I2E0& I2E1& I2E8& I2E9& .. & I2EC& I2ED& .. I2EH. Il *I- la)e "i un *- 0T ( mappato in IFO all%in"iri$$o O017 M 00' 9160":& per !ui l%IM2 "el *I- la)e ( all%in"iri$$o 01'. *I- Ma ter In". ba e 9per 7OI: 20' C2" IM2 21' CC" INT N "el primo I2E "el !'ip 08' 08" Ta"ella 2: in!iri%%i !ei registri !ei ,IC *I00' 01' H0' la)e 160" 161" 112"

aster e sla#e in un ,C AT e nu ero !i #ettore !ella pri a IR2

-on la pre en$a "i "ue interrupt !ontroller le orgenti "i interru$ione a "i po i$ione "i)engono 1,& "ato !'e una )a 5 pre!ata5 per la ri"ire$ione "ell%I2E2. Molti interrupt rima ero liberi per l%a egna$ione a !'e"e "i e pan ione. Nel !or o "el tempo que ti interrupt ono tati o!!upati "a peri#eri!'e !'e ini$ialmente non erano pre enti e !'e ono "i)entate "i u o !omune u!!e i)amente 9e . !'e"e "i rete:. I2E N *IINT N 8un$ione I2E 0 ma ter 08' 1K tem timer I2E 1 ma ter 09' Ta tiera I2E 2 ma ter 00' 2i er)ato nel *- IT& I2E ri"iretto "al *I- la)e nel *- 0T I2E 8 la)e H0' -MO1 real time !lo!? I2E 9 la)e H1' ;;;; JJJJ I2E 10 la)e H2' non a egnato "allXIOM nel *- 0T p. 10 "i 12 2011-0C-01 22 Interrupt 8086.o"t

Ing. Gabriele MONTI 1999 - 2011

Interrupt 8086

www.ingmonti.it

I2E 11 la)e HC' non a egnato "allXIOM nel *- 0T I2E 12 la)e HD' non a egnato "allXIOM nel *- 0T I2E 1C la)e H,' -opro!e ore aritmeti!o 9nel *- 0T un 28H& "a D86 in poi ( interno alla -*/: I2E 1D la)e H6' !ontroller "el "i !o rigi"o I2E 1, la)e HH' non a egnato "allXIOM nel *- 0T I2E C ma ter 0O' Inter#a!!ia eriale -OM 1 I2E D ma ter 0-' Inter#a!!ia eriale -OM 2 I2E , ma ter 0<' Inter#a!!ia parallela 3*T2 I2E 6 ma ter 07' !ontroller #loppK "i ? I2E H ma ter 08' Inter#a!!ia parallela 3*T1 Tabella C4 Tutti i )ettori "Xinterru$ione 'ar"ware "el *-& in or"ine "i priorit.4 Il numero di ettore d!interruzione "I#$%& sul data bus iene scritto dal 'I( interessato) non dal master. 'er poter sapere se de e scri ere sul data bus un 'I( sla e comunica con il master attra erso un bus di tre linee) detto "cascade bus". 'er quan* to nel '( sia utilizzato un solo sla e) un 8259 master ne pu+ controllare fino ad 8. ,!8259 pu+ essere pro-rammato per funzionare in . modi di ersi. Il "modo /" 0 quello di default e iene usato nei '(1 -li al* tri modi hanno i se-uenti nomi2 * rotatin- priorit3 * special mas4 mode * rolled mode

Il comando EOI nei PC AT

1e il numero "i I2E ( !ompre o #ra 0 e H& I2E2 e !lu a& l%uni!o *I- intere ato all%interru$ione ( il ma ter. In que to !a o ( ne!e ario pe"ire il !oman"o 7OI oltanto al *I- ma ter. Nel !a o in)e!e "i interrupt #ra 8 e 1, ono !oin)olti entrambi i *I-& per !ui a" entrambi bi ogna man"are il !oman"o 7OI. *er!i>& e lXI2E !ui i ta ri pon"en"o ( #ra 0 e H& bi ogner. #are una O/T "i 20' olo allXin"iri$$o 20'& mentre e ( #ra 8 e 1, bi ogner. #arlo an!'e in 00'. 7 empio4
IRQ12: .. "', L! 2(h ; -'I per il .IC master: '*T 2(h! L ; -'I per il .IC sla/e: '*T (h! L ..

3%ini$iali$$a$ione "ei "ue *I- )iene #atta "a parte "el 1i tema Operati)o nel momento "el boot trap& ( !'iaro !'e il o#tware "%utente non "o)r. !ambiare n6 la mo"alit. "i #un$ionamento "ei *I-& n6 il numero "i )ettore !'e e i mettono ul "ata bu 9INTN:& pena l%irrime"iabile blo!!o "el i tema.

*ro!e or 8amilK <e)eloperX Manual& @olume C4 0r!'ite!ture an" *rogramming Manual5 0")an!e" Mi!ro <e)i!e 90M<: 50M<-Q,

22 Interrupt 8086.o"t

@er. 0.,.1 2011-0C-01

p. 11 "i 12

Ing. Gabriele MONTI 2000

0ppunti "i 1i temi

ITI -e ena& 2000-2001

p. 12 "i 12

01F0CF2011

22 Interrupt 8086.o"t