PRERUSENIE

HW prerusenie | SW prerusenie

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
  (INTR) maskovatelne 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 je povolene (IF=1). Tento bit je mozne nulovat instrukciou CLI, alebo nastavit na jednotku instrukciou STI.

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 prerusenia

 vzniknute 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