INT/INTO - generování přerušení - voláná přerušovací procedury

From Delphi & Pascal (česká wiki)
Jump to navigation Jump to search
Instrukce
INT/INTO - generování přerušení - voláná přerušovací procedury
Časování
23-167 (80286), 33-287 (80386)
Popis
Instrukce INT generuje volání přerušovací procedury pomocí softwareového přepínače. Bezprostrední operand instrukce, který obsahuje hodnotu mezi 0 až 255 včetne, udáva číslo přerušení, jež je indexem do tabulky deskriptorů přerušení (IDT - Interrupt Descriptor Table) přerušovací procedury. V privilegovaném módu sestava tabulka deskriptoru z osmibytových deskriptorů. Deskriptor pro vyvolání přerušení musí specifikovat místo přerušení (interrupt gate), místo pro výjimku (trap gate) a popřípade místo úlohy (task gate). V RM je tabulka deskriptoru polem 4-bytových ukazatelů alokována na fixní adrese 00000H. Instrukce INTO je identická instrukci INT s tou výjimkou, že číslo přerušení je implicitne 4. Toto přerušení je tedy aktivovatelné jen v případe, že příznak OF je nastaven. V RM instrukce INT ukláda do zásobníku příznaky a registr CS a návratový IP (EIP) (v uvedeném poradí). Užíva přitom ukazatele, který je indexován číslem přerušení.


Syntaxe
INT interrupt_type
INTO (žádné operandy)


Ovlivňuje příznaky
Při přepnutí úlohy (task switching) jsou ovlivneny všechny příznaky; jinak instrukce INT/INTO neovlivňují žádné příznaky.


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Mohou byt generovýny výjimky porušení ochrany paměti, výjimka "deskriptor nenalezen", výjimka "chyba zásobniku", výjimka "neplatný stavový segment úlohy".


Poznámka pro 80386
Šírka operandu nemá žádný význam. Hodnoty registru EIP, ESP a FLAGS jsou zavadeny z místa přerušení (gate).


Příklad
INT 21H
INTO