Модуль WinDos

Intr - Выполняет определенное программное прерывание.


Объявление:
Procedure Intr(IntNo : Byte; Var Regs : TRegisters);
Режим:
Windows, Real, Protected
Замечания:

IntNo - номер программного прерывания (0 .. 255). Registers - запись, определенная в модуле DOS; TRegisters - запись, определенная в модуле WinDos. Смотри описание типа Registers и описание типа TRegisters.

Перед выполнением заданного программного прерывания, Intr загружает регистры ЦП 8086 : AX, BX, CX, DX, BP, SI, DI, DS и ES из записи Regs. После завершения прерывания, содержание регистров AX, BX, CX, DX, BP, SI, DI, DS, ES и Flags сохраняется обратно в запись Regs.

Чтобы избежать появления ошибки защиты при выполнении программ в стандартном режиме Windows или расширенном режиме Windows 386, всегда инициализируйте регистры DS и ES в записи TRegisters с допустимыми селекторными значениями или просто обнулите данные поля записи.
Ограничения:

Не используйте программные прерывания, которые:
- Зависят от значений регитров SP или SS при входе.
- Изменяют значения регистров SP или SS при выходе.

В Turbo Pascal версии 3.0, тип переменной Regs был определяемым пользователем. В версиях 5.0 и старше, переменная Regs должна иметь тип Registers, определенный в модуле Dos.
Пример: view source

print
?01 { Пример программы для процедуры Intr }
02
03 Uses WinDos;
04
05 Var Date, Year, Month, Day : String;
06 Regs : TRegisters; { Для модуля DOS используйте }
07 { тип Registers. }
08
09 Begin
10 Regs.AH:=$2A;
11 With Regs Do
12 Intr($21, Regs);
13 With Regs Do
14 Begin
15 Str(CX, Year);
16 Str(DH, Month);
17 Str(DL, Day);
18 End;
19 Date:=Month+'-'+Day+'-'+Year;
20 WriteLn('Сегодня : ', Date);
21 End.