PřerušeníV době vykonávání úlohy musí být zajištěna i programová obsluha některých událostí. Za tyto události považujeme například: stisk klávesy, pohyb myší, hrozící výpadek napájení, kritická chyba v paměti, . . . I když by bylo možné testovat stisk klávesy v rámci prováděné úlohy, je pohodlnější, jestliže obsluhu této události zajistí počítač sám na úrovni technického vybavení. Přesto je k této činnosti nutný mikroprocesor. Proto je dočasně přerušena probíhající úloha. Po obsluze se procesor vrací zpět k té části úlohy, ze které byl přerušen. Celý mechanismus přerušení se dá popsat v několika krocích:
Za instrukcí INT může být číslo v rozpětí 0..255. Toto číslo v případě obsluhy programové události udává, odkud požadavek přišel. Protože je ale nemožné, aby všech 256 úrovní přerušení bylo obsazeno, jsou některé hodnoty obsazeny tzv. službami. Za služby můžeme považovat podprogramy, které jsou součástí operačního systému nebo BIOSu. Jsou umístěny v paměti počítače. Umožňují jednoduše provádět činnosti, které se v programech často opakují, jsou pracné nebo se liší na počítačích s různou konfigurací. Služby voláme stejně jako obsluhy přerušení instrukcí INT číslo. Hodnota číslo určuje, o jakou službu se jedná. Často se v rámci jedné služby může vyskytovat i několik činností. Těm budeme říkat podslužby. Před voláním podslužeb musíme napřed nastavit v určitém registru (nejčastěji v AH) hodnotu jim určenou. Potom teprve voláme službu instrukcí INT. Mnoho služeb se chová jako podprogramy volané parametry. Hodnoty parametrů se neukládají do zásobníku, ale do některých registrů. Výstupy z těchto "podprogramů" najdeme opět v registrech. Informace o službách DOSu i BIOSu najdete v odborných publikacích nebo v SYSMANu. Zde také najdete informace o tom, které registry k čemu použijete. Nejpoužívanější službou je INT $21. Ta zahrnuje služby DOSu jako je vstup a výstup dat, práce se soubory, čas, . . . Je také použita k výstupu pascalovského řetězce na obrazovku v následujícím příkladu. Výstup řetězce realizuje podslužba AH = $9. Vstupem do podslužby je adresa řetězce v registrech DS, DX. Výstup podslužba nemá. Jediná činnost je výpis na obrazovku. Důležité je označení konce řetězce znakem $. V případě, že tento znak na konci není, vypíše se obsah části paměti až do jeho náhodného výskytu. Příklad:
Uvedený program převede pascalovský řetězec do podoby řetězce, ve které ho očekává služba. Nastaví registry hodnotami vstupů a zavolá podslužbu DOSu. Výstup řetězce touto procedurou můžeme realizovat na libovolném grafickém adaptéru. Možné odlišnosti si vyřeší právě služba DOS. |
|