PRERUŠENIE

HW prerušenie | SW prerušenie

Najprv si vysvetíme čo pod pojmom prerušenie vlastne rozumieme. Prerušenie je to signál, ktorý procesoru prikáže, aby zastavil vykonávanie hlavného programu a začal sa zaoberať iným programom.

Podľa toho čím je prerušenie generované rozlišujeme:

a) HARDWAROVÉ prerušenia

  NON MASCABLE INTERRUPT(NMI) nemaskovateľné prerušenie
  (INTR) maskovateľné prerušenie

Vývod NMI je určení pre prerušenie, ktoré nie je možné zakázať. Slúži na signalizáciu havarijných stavov počítača (napr. pokles napájacieho napätia, chyba parity operačnéj pamäti, ...). NMI má vyššiu prioritu ako INTR.

Vývod INTR je väčšinou budení ďalším obvodom - radičom prerušenia 8259. INTR je maskovateľné prerušenie, pretože je ho možné programovo zakázať vynulovaním bitu IF v príznakovom registri procesora. Čiže ak je nastavený na nulu, prerušenie je zakazané, v opačnom prípade je povolené (IF=1). Tento bit je možné nulovať inštrukciou CLI, alebo nastaviť na jednotku inštrukciou STI.

TABUĽKA HARDWEROVÝCH PRERUŠENÍ
(v poradí podľa priority)

IRQ0 TIMER (prerušenie systémového časovača)

IRQ1 KEYBOARD (prerušenie klávesnice)

IRQ2 SLAVE 8259 (druhý 8259)

IRQ8 REAL TIME CLOCK (hodiny)

IRQ9 SOFTWARE REDIRECTED TO IRQ2

IRQ10 RESERVED (voľný)

IRQ11 RESERVED (voľný)

IRQ12 RESERVED (voľný)

IRQ13 NUMERIC COPROCESOR (matematický koprocesor)

IRQ14 DISK CONTROLLER (adaptér harddisku)

IRQ15 RESERVED (voľný)

IRQ3 COM2 OR COM4 (sériový port 2)

IRQ4 COM1 OR COM3 (sériový port 1)

IRQ5 LPT2 (paralelné prerušenie tlačiarne)

IRQ6 FLOPPY DISK (radič pružných diskov)

IRQ7 LPT1 (paralelné prerušenie tlačiarne)

b) SOFTWAROVÉ prerušenia

 vzniknuté inštrukciou INT n, kde n je číslo z rozsahu 0-255

Procesor 8086 rozlišuje 256 možných prerušení. Každému prerušeniu prislúcha 32-bitová logická adresa (segment:offset). Táto adresa sa nazýva vektor prerušenia a ukazuje na miesto v pamäti, kde začína podprogram, ktorý sa vykoná pri vyvolaní daného prerušenia. Vektorom prerušenia je vyhradená pamäť od adresy 0000:0000 o dĺžke 1024 bajtov. Pre každý vektor prerušenia sú rezervované 4 bajty (256*4=1024). V prípade prerušenia je vykonaný podprogram, ktorého logická adresa je v tabuľke vektorov na adrese (číslo prerušenia * 4).

ADRESA

POPIS

ADRESA PODPROGRAMU

INŠTRUKCIA

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

pretečenie

0070:06F4

INT4

.

.

.

.

.

.

.

.

.

.

.

.

0000:03FF

rezervované

0282:F000

INT255