Процедура Intr

Модуль WinDos

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

Объявление:

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.

Пример:

{ Пример программы для процедуры Intr }

Uses WinDos;

Var Date, Year, Month, Day : String;
                      Regs : TRegisters; { Для модуля DOS используйте }
                                         { тип Registers.             }

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('Сегодня : ', Date);
End.