Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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
End.
Дата публикования: 2014-12-10; Прочитано: 238 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!