Программирование на C и C++

Онлайн справочник программиста на C и C++

intdos, intdosx

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;
}