int int86(int int_num, union REGS *in_regs, union REGS *out_regs)
int int86x(int int_num, union REGS *in_regs, union REGS *out_regs, struct SREGS *segregs)
Эти функции не определены стандартом ANSI С.
Функция int86() используется для выполнения программного прерывания, заданного величиной intnum. Содержимое объединения in_regs копируется сначала в регистры процессора, а затем выполняется соответствующее прерывание.
По возвращении объединение out_regs содержит значения регистров центрального процессора в момент возврата из прерывания. Установка флага carry flag означает, что произошла ошибка. Возвращается значение регистра АХ.
Функция int86x() копирует значение segregs—>ds в регистр DS, а значение segregs—>es в регистр ES. Это позволяет программам, откомпилированным для большой модели данных, указывать, какие сегменты использовать во время прерывания.
REGS и SREGS определены в заголовочном файле dos.h.
#include <dos.h>
/* установка видеорежима */
void set_mode(char mode)
{
union REGS in, out;
in.h.al = mode;
in.h.ah = 0; /* установка номера функции */
int86 (0x10, &in, & out);
}