Najprv si vysvetime co pod pojmom prerusenie vlastne rozumieme.
Prerusenie je to signal, ktory procesoru prikaze, aby zastavil vykonavanie hlavneho programu a zacal sa zaoberat inym programom.Podla toho cim je prerusenie generovane rozlisujeme:
a) HARDWAROVE prerusenia
NON MASCABLE INTERRUPT(NMI) nemaskovatelne prerusenie
Vyvod NMI je urceni pre prerusenie, ktore nie je mozne zakazat. Sluzi na signalizaciu havarijnych stavov pocitaca (napr. pokles napajacieho napatia, chyba parity operacnej pamati, ...). NMI ma vyssiu prioritu ako INTR. Vyvod INTR je vacsinou budeni dalsim obvodom - radicom prerusenia 8259. INTR je maskovatelne prerusenie, pretoze je ho mozne programovo zakazat vynulovanim bitu IF v priznakovom registri procesora. Cize ak je nastaveny na nulu, prerusenie je zakazane, v opacnom pripade
(INTR) maskovatelne prerusenie
TABULKA HARDWEROVYCH PRERUSENI
(v poradi podla priority)
IRQ0 TIMER (prerusenie systemoveho casovaca) |
IRQ1 KEYBOARD (prerusenie klavesnice) |
IRQ2 SLAVE 8259 (druhy 8259) |
IRQ8 REAL TIME CLOCK (hodiny) |
IRQ9 SOFTWARE REDIRECTED TO IRQ2 |
IRQ10 RESERVED (volny) |
IRQ11 RESERVED (volny) |
IRQ12 RESERVED (volny) |
IRQ13 NUMERIC COPROCESOR (matematicky koprocesor) |
IRQ14 DISK CONTROLLER (adapter harddisku) |
IRQ15 RESERVED (volny) |
IRQ3 COM2 OR COM4 (seriovy port 2) |
IRQ4 COM1 OR COM3 (seriovy port 1) |
IRQ5 LPT2 (paralelne prerusenie tlaciarne) |
IRQ6 FLOPPY DISK (radic pruznych diskov) |
IRQ7 LPT1 (paralelne prerusenie tlaciarne) |
b)
SOFTWAROVE preruseniavzniknute instrukciou INT n, kde n je cislo z rozsahu 0-255
Procesor 8086 rozlisuje 256 moznych preruseni. Kazdemu preruseniu prislucha 32-bitova logicka adresa (segment:offset). Tato adresa sa nazyva vektor prerusenia a ukazuje na miesto v pamati, kde zacina podprogram, ktory sa vykona pri vyvolani daneho prerusenia. Vektorom prerusenia je vyhradena pamat od adresy 0000:0000 o dlzke 1024 bajtov. Pre kazdy vektor prerusenia su rezervovane 4 bajty (256*4=1024). V pripade prerusenia je vykonany podprogram, ktoreho logicka adresa je v tabulke vektorov na adrese (cislo prerusenia * 4).
ADRESA |
POPIS |
ADRESA PODPROGRAMU |
INSTRUKCIA |
0000:0000 |
delenie nulou |
0019:9257 |
INT0 |
0000:0004 |
krokovanie |
0070:06F4 |
INT1 |
0000:0008 |
NMI |
0EEE:0016 |
INT2 |
0000:000C |
break point |
0070:06F4 |
INT3 |
0000:0010 |
pretecenie |
0070:06F4 |
INT4 |
. |
. |
. |
. |
. |
. |
. |
. |
. |
. |
. |
. |
0000:03FF |
rezervovane |
0282:F000 |
INT255 |