Intr
Verze z 2. 10. 2012, 15:24, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky)
Vykoná určené softwarové přerušení.
- Deklarace
procedure Intr(IntNo: Byte; var Regs: Registers); { Dos } procedure Intr(IntNo: Byte; var Regs: TRegisters); { WinDos }
kde:
- IntNo je číslo softwarového přerušení(0..255)
- TRegisters je záznam definovaný v jednotce WinDos
- Režim
- Windows, Reálný, Chráněný
- Poznámky
- IntNo je číslo softwarového přerušení(0..255). Registers je záznam definovaný v jednotce Dos; TRegisters je záznam definovaný v jednotce WinDos. Viz deklaraci typu Registers a deklaraci TRegisters.
- Před vykonáním určeného softwarového přerušení naplní procedura Intr registry procesoru 8086 (AX, BX, CX, DX, BP, SI, DI, DS a ES) hodnotami ze záznamu Regs. Po dokončení přerušení se obsah registrů AX, BX, CX, DX, BP, SI, DI, DS, ES a Flags uloží zpět do záznamu Regs.
- Abyste se vyvarovali chyb obecné ochrany při běhu pod standardním režimem Windows nebo pod chráněným Režimem DOSu, vždy inicializujte pole DS a ES záznamu TRegisters platnými hodnotami selektorů nebo tato pole nastavte na nulu.
- Omezení
- Nepoužívejte softwarová přerušení, která:
- V Turbo Pascalu 3.0 byla proměnná Regs uživatelsky definovaného typu. Od verze 5.0 a vyšších musí být Regs typu Registers z jednotky Dos.
- Viz také
- MsDos
Vzorový příklad
{Intr.PAS} {Vzorový příklad pro proceduru Intr.} { Pro Windows: } { uses WinDos, WinCrt; } uses Dos; var date, year, month, day: string; regs: Registers; { Pro Windows: TRegisters } begin regs.ah := $2a; with regs do intr($21,regs); with regs do begin str(cx ,year); str(dh ,month); str(dl,day); end; date := month+'/'+day+'/'+year; writeln('Dnešní datum je ', date); end.