int intdos(union REGS *in_regs, union REGS *out_regs)
int intdosx(union REGS *in_regs, union REGS *out_regs, struct SREGS *segregs)
Эти функции не определены стандартом ANSI С.
Функция intdos() используется для доступа к системному вызову DOS, заданному в объединении, на которое указывает параметр in_regs. Она исполняет инструкцию INT 0x21 и помещает выходные данные операции в объединение, на которое указывает параметр out_regs. Функция intdos() возвращает значение регистра АХ, который используется DOS для возврата информации.
Функция intdos() используется для доступа к таким системным вызовам, которые или требуют аргументов в регистрах, отличных от DX, AL, или возвращают информацию в регистры, отличные от АХ. Объединение REGS определяет регистры процессоров семейства 8088/86. Его объявление содержится в заголовочном файле dos.h.
Что касается функции intdosx(), то значение segregs задает величины данных регистров DS и ES. Это является принципиальным для программ, откомпилированных для большой модели памяти.
Следующая программа читает время непосредственно с системных часов, минуя все функции С: #include <stdio.h> #include <dos.h> int main(void) { union REGS in, out; in.h.ah = 0x2с; /* номер функции времени */ intdos(&in, &out); printf("time is %.2d:%.2d:%.2d", out.h.ch, out.h.cl, out.h.dh); return 0; }
