http://kappasoft.narod.ru/info/cpp/C_for_prof/Index1.html Использование int86() Вызовы BIOS используют программные прерывания. BIOS имеет несколько различных прерываний для разных целей. Одно из них мы будем использовать для доступа к экрану. Это прерывание 16 (10Н), которое используется для доступа к дисплею. (Если вы не знакомы с доступом к BIOS, то вы найдете хорошее описание в моей книге "Си: Полный справочник", Беркли, 1987). Как и многие прерывания BIOS, прерывание 16 имеет несколько режимов, выбор которых выполняется по значению регистра AH. Если функция возвращает значение, то оно заносится в регистр AL. Однако, иногда для возвращения нескольких значений используются другие регистры. Для доступа к прерываниям BIOS вам придется использовать функцию Си int86(). (Некоторые компиляторы могут называть эту функцию другим именем, но MicroSoft C и Турбо Си называют ее int86(). Последующие рассуждения ориентированы на эти трансляторы, но вы можете их обобщить. Функция int86() имеет следующую форму: int int86(num,inregs,outregs) int num; /* номер прерывания */ union REGS *inregs; /* входные значения регистров */ union REGS *outregs; /* выходные значения регистров */ Функция int86() возвращает значение регистра АХ. Тип REGS описывается в заголовке DOS.H. Этот тип показан здесь так, как он определен в Турбо Си, однако, он аналогично определен в MisroSoft C и в других компиляторах. struct WORDREGS unsigned int ax, bx, cx, dx, si, di, cflag, flags; ; struct BYTEREGS unsigned char al, ah, bl, bh, cl, ch, dl, dh; ; union REGS struct WORDREGS x; struct BYTEREGS h; ; Как вы можете видеть, REGS - это объединение двух структур. Использование структуры WORDREGS позволяет рассматривать регистры ЦП как 16-битные числа. BYTREGS дает вам доступ к отдельным 8-битным регистрам. Например, для доступа к прерыванию 16, функции 5, вы должны использовать следующую последовательность. union REGS in,out; in.h.ah=5; int86(16,&in,&out); http://www.codenet.ru/