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
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 NON MASCABLE INTERRUPT(NMI) nemaskovateľné prerušenie
(INTR) maskovateľné prerušenie
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 |