с программными прерываниями значения этих
При работе с программными прерываниями значения этих полей можно считать идентичными с содержимым соответствующих машинных регистров — АХ, вх, AL, АН. На практике в программах на Си редко используют два разных объединения in_regs и out_regs, первое из которых выполняет роль полей с входной информацией, а второе — роль полей, на которые заносятся результаты работы системной функции. Обычно входные и выходные данные располагают на одном и том же поле.
В этом смысле авторы системы Turbo Pascal поступили более рационально, использовав в аналогичных процедурах на один аргумент меньше. Данные процедур intr и MSDOS располагаются на полях записи с вариантами типа Registers, описанного в модуле DOS следующим образом:
type
Registers=record 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;
Если в программе на Паскале объявлена запись reg (reg:Registers;), то мы можем использовать переменные с именами reg.АХ, RеG.вх, reg.AL, reg.АН, имея в виду, что их значения идентичны содержимому машинных регистров
АХ, ВХ, AL, АН.
Приводимые ниже фрагменты программ заменяют процедуру gotoxy, перемещающую курсор дисплея в позицию с заданными координатами на текстовой странице с указанным номером. Новая функция (процедура) movetoxy обходится только входными данными.
Программа 10_1.с
#include <dos.h>
void movetoxy(int x, int y, int page)
{
union REGS r;
r.h.ah=2; //номер подфункции позиционирования курсора
г.h.bh=page; //номер текстовой страницы, от 0 до 7
r.h.dl=x; //номер столбца, от 1 до 80
r.h.dh=y; //номер строки, от 1 до 25
int86(0xl0,&r,&r); //обращение к группе функций BIOS с номером 16
}
Программа 10_1.pas
program cursor; uses Dos;
procedure movetoxy(x,y,page:byte);
var
Registers r; begin
r.AH:=2;
r.BH:=page;
r.DL:=x;
r.DH:=y;
Intr ($10, r) ;
end;
Примером системной функции, возвращающей несколько результатов, является процедура вывода текущей даты, использующая подфункцию с номером 0х2А ($2A) в прерывании 0x33 ($33). После ее выполнения в участках памяти, соответствующих машинным регистрам, находится следующая информация:
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий