Для обеспечения интерфейса с программами операционной системы используется модуль DOS. Для выполнения любого программного прерывания служит процедура
Intr (IntNo : byte; var reg : registers),
где IntNo – номер прерывания;
reg – переменная типа registers содержит значения регистров до и после входа в процедуру обработки заданного прерывания. Запись Registers представляет собой набор регистров процессора (поля записи).
Специальной разновидностью Intr является процедура MsDos(reg:registers), которая реализует доступ к функциям Dos-прерывания с номером 21h.
Таким образом, вызовы процедур MsDos(reg) и Intr($21, reg) при одинаковой установке значений переменной reg приводят к аналогичным результатам.
Основная последовательность действий при использовании этих функций:
1. поместить № функции в регистр ah;
2. поместить передаваемые функции параметры в определённые регистры;
3. вызвать прерывание командами intr (msdos);
4. извлечь результаты работы функции из определённых регистров.
Пример. Установить курсор в позицию (х,у) и вывести строку на экран, используя прерывания.
Uses crt,dos;
Const St:string='Hello$';
Var Reg:registers;
Begin
{установка курсора, используя 2-ую функцию Bios-прерывания $10}
With reg do
Begin
Ah:=2; {функция установки курсора}
Bx:=0; {номер видеостраницы}
Dl:=40; {номер столбца}
Dh:=12; {номер строки}
End;
Intr($10,reg); {установка курсора в позицию (12,40)}
{вывод строки, используя 9ую функцию Dos-прерывания $21}
With reg do
Begin
Ah:=9; {номер функции вывода строки на экран}
DS:=Dseg; {адрес текущего сегмента данных}
Dx:=ofs(st[1]); {смещение строки в сегменте данных}
End;
Msdos(reg);{вывод строки в текущую позицию экрана}
End.