Case integer of

0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags: word);

1:(AL,AH,BL,BH,CL,CH,DL,DH:byte)

End;

Запись Registers представляет собой набор регистров процессора (поля записи).

Процедура Intr (IntNo: byte; Var Regs: Registers); выполняет заданное программное прерывание. Параметр IntNo – это номер программного прерывания (0…255). Когда выполняется процедура Intr, значения полей AX, BX, CX, DX, BP, SI, DI, DS и ES загружаются в соответствующие регистры процессора. После этого вызывается прерывание с номером IntNo. После того, как прерывание обработано, содержимое регистров процессора загружается в поле Regs, а содержимое регистра флагов копируется в поле Flags. Таким образом, можно получить доступ к результатам работы процедуры прерывания.

Процедура MsDos (Var Regs: Registers); выполняет вызов функции MS–DOS, номер которой содержится в регистре AH. Результат вызова MsDos будет тот же самый, что и результат вызова Intr с номером прерывания IntNo=#21. Вообще, прерывание номер $21 называют прерыванием DOS, объединяющим в себе большое количество различных функций.

Пример 1. Перевод курсора в невидимое состояние, установка стандартного размера курсора.

Uses Dos;

Var i:byte;

Procedure SetCursorSize(Size:word);

Var Regs:Registers;

Begin

With Regs do

begin

AH:=$01;

CH:=Hi(Size);

CL:=Lo(Size);

Intr($10,Regs) {прерывание $10, где на входе в регистр CH посылается номер}

{ начальной строки, а в регистре CL – номер последней строки курсора.}

end

End;

Begin {основная программа}

Writeln('Перевод курсора в невидимое состояние - ...'); SetCursorSize($2000);

For i:=1 to 10 do writeln(i);

Readln;

Writeln('Установка стандартного размера курсора - ...'); SetCursorSize($0607);

writeln;

For i:=1 to 10 do writeln(i);

Readln