HW Přerusení |
|
Tyto přerusení (sluzby Biosu) jsou volána vzdy, kdyz dojde v hardwaru počítače k události, kterou je třeba obslouzit programem na vektoru tohoto přerusení. Přeplnění při dělení-INT 00h Toto přerusení je rezervované pro mikroprocesor. Je volané vzdy, pokud se při provádění instrukcí div nebo idiv výsledek nevejde (dojde k přeplnění) do prostoru (registru) pro ulození výsledku nebo nastalo dělení nulou. Obsluzná rutina provede výpis hlásení DIVISION OVERFLOW s následným zastavením činnosti počítače. Přerusení při krokování-INT 01h Zase se jedná o přerusení rezervované pro mikroprocesor. K jeho volání dojde po kazdé provedené instrukci pokud je nastaven příznak TF v registru příznaků. Při provádění obsluzné rutiny je příznak TF nulován a po jejím ukončení je nastaven na původní hodnotu. Standardně obsahuje obsluha přerusení pouze instrukci IRET. Přerusení je výhodné pouzit k ladicím účelům, kde obsluznou rutinou je monitor zobrazující hodnoty registrů a zajímavých oblastí paměti, ale je třeba nejprve nastavit na tento monitor vektor přerusení. Nemaskovatelné přerusení-INT 02h Pokud je toto přerusení volané hardwarově pomocí signálu NMI na mikroprocesoru nelze jej maskovat instrukcí CLI. Z tohoto důvodu je pouzíváno k obsluze událostí, které vyzadují obsluhu okamzitě a vzdy (např. výpadek napětí). Obvykle se pouzívá jako obsluzná rutina chyby parity paměti (provede se pokus o opakovaný přístup a při opakované chybě dojde k zastavení systému) nebo pokud je připojen numerický koprocesor, je přerusení vyuzito k obsluze jeho chyb. Přerusení BREAKPOINTU-INT 03h Toto přerusení je voláno jednak dvoubajtovou instrukcí INT a jednak jednobytovou instrukcí INT. Toho se vyuzívá k ladění programů, kde se na kontrolní místo v paměti umístí tzv. BREAKPOINT (jednobytové INT). Pokud má být toto přerusení pouziti v ladicím monitoru, je třeba nastavit vektor tohoto přerusení na adresu ladicího monitoru, protoze standardně rutina obsluhy přerusení obsahuje instrukci IRET. Přerusení při plnění-INT 04h Pokud je příznak OF v registru příznaků nastaven, je mozné přerusení volat instrukcí INTO. Toho lze pouzít v uzivatelských programech a testovat zda doslo k přetečení při provádění aritmetických instrukcí a provést příslusnou odezvu. Standardně obsahuje obsluzná rutina pouze instrukci IRET. Tisk obrazovky (PRINT SCREEN)-INT 05h Pokud je na klávesnici stisknuto tlačítko Print Screen dojde k volání tohoto přerusení, které slouzí k vytisknutí kopie obrazovky na tiskárně. Přerusení lze samozřejmě volat i programově instrukcí INT 05. Vyuzití přerusení můze přináset problémy na počítačích AT, protoze toto přerusení je generováno instrukcí BOUND a podle doporučení Intelu jde tedy o přerusení rezervované a jakékoli jeho jiné pouzití pak předpokládá, ze v uzivatelském sowtvaru není instrukce BOUND pouzita. Přerusení časovače-INT 08h Hardwarový pozadavek o obsluhu přerusení IRQ0 volá toto přerusení. Pozadavek je generován obvodem čítače-časovače, kanálem 0, pravidelně co 55 ms, neboli s frekvecí18,2 Hz a slouzí jako hodiny reálného času. Bios této obsluzné rutiny nastavuje hodnotu hodin reálného času na adrese 46Ch a modifikuje hodnotu na adrese 440h, tak to je zabezpečeno vypnutí motoru disketové mechaniky po skončení I/O operace. Pokud se toto přerusení přesměruje, je třeba zabezpečit aby řadič přerusení byl informován o tom ze rutina přerusení skončila. To se zajistí instrukcemi: MOV AL,20h OUT 20h,AL Takto se zasle příkaz nazvaný EOI (End Of Interrupt). Přerusení stímto kódem je také generováno při detekci výpadku mikroprocesoru INTEL 80286 v módu virtuální paměti, ale v tomto případě se pouzívá definované tabulky vektorů přerusení, která je umístěná na libovolné místo v paměti a ne standardní tabulky umístěné na adrese paměti 0, kterou pouzívá Bios. Přerusení klávesnice-INT 09h Zase se jedná o přerusení generované hardwarem při pozadavku o obsluhu přerusení IRQ1, které signalizuje ze buffer klávesnice obsahuje znak. Obsluzná rutina v Biosu tento znak jenz je ulozen v tzv. IBM SCAN kódu převede do jejího ASCII vyjádření a ulozí do kruhového bufferu klávesnice na adrese 41Eh v paměti. Opět pokud dojde k přesměrování tohoto vektoru přerusení je třeba zajistit opětovné regulérní nastavení portu klávesnice. K tomu můze slouzit např. tento sled instrukcí : IN
AL,61h ;Zjisti hodnotu řídící linky Znak z bufferu klávesnice se čte na portu 60h. Přerusení s tímto číslem je také generováno při chybě ochrany numerického koprocesoru INTEL80287 mikroprocesorem INTEL 80286 v módu chráněné virtuální paměti. Ale jako u předeslého přerusení se pouzívá definované tabulky vektorů přerusení umístěné na libovolné místo v paměti. Přerusení od portů(IRQ3-5,7) INT0Bh-0Dh,0Fh Tato přerusení jsou generována jednotlivými vstupně výstupovími porty počítače jako pozadavek na obsluhu vzniklé události na nich. Přerusení řadiče disket(IRQ6)-INT 0Eh Přerusení je generováno řadičem disket při dokončení kazdé diskové operace. Obsluzná rutina nastavuje v případě potřeby příslusný bit proměnné Biosu na adrese 43Eh, který je uzit rutinou INT 13h k určení toho, zda disková jednotka potřebuje před provedením pozadované činnosti rekalibraci. |
Aktualizováno: 18.08.2000 |
This website is copyright-protected (c) 1995-2000 by JPS |
|