Přidáno 2 165 bajtů,
2. 10. 2012, 15:24 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á:
:* závisí na určitých vstupních hodnotách registru [[SP]] nebo [[SS]]
:* modifikují obsah registrů [[SP]] nebo [[SS]] při výstupu
: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.
[[Category:DOS]]
[[Category:WinDos]]
[[Category:Procedúry DOS]]
[[Category:Procedury podpory přerušení]]