int86x

 Функция            Интерфейс с программными прерываниями процессора
                    8086.

 Синтаксис          #include 
                    int int86(int intr_num, union REGS *inregs,
                        union REGS *outregs, struct SREGS *segregs);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция генерирует программное прерывание микро-
                    процессора 8086, причем номер прерывания опреде-
                    ляется аргументом intr_num. Перед выполнением пре-
                    рывания, функция копирует значения регистров из
                    объединения inregs в сами регистры.

                    Кроме этого, int86 копирует значения segregs->x.ds
                    и segregs->x.es в соответствующие регистры, перед
                    вызовом прерывания. Эта возможность позволяет
                    программам использовать дальние указатели или
                    большие модели памяти для указания используемых
                    для прерывания сегментов.

                    После возврата из прерывания, функция копируют те-
                    кущие значения регистров в параметр outregs, а ста-
                    тус флажка системного переноса в поле x.cflag па-
                    раметра outregs. Если флажок переноса установлен,
                    это означает что произошла ошибка. Кроме этого,
                    данная функция восстанавливает содержимое DS и за-
                    полняет поля segregs->es и segregs->ds соответст-
                    вующими значениями.

                    int86x позволяет вам генерировать прерывание кото-
                    рое получает значение в DS отличное от адреса сег-
                    мента данных по умолчанию, и/или которое получает
                    аргумент в регистре ES.

                    Примечание: параметры inregs и outregs могут ука-
                    зывать на одну и туже структуру.

 Возвращаемое       Функция int86 возвращает значение регистра AX после
 значение           завершения прерывания. Если флажок переноса уста-
                    новлен (outregs-->x.cflag!=0), то есть произошла
                    ошибка, данная функция присваивает глобальной пе-
                    ременной _doserrno код ошибки.

 Переносимость      Функция уникальна для семейства микропроцессоров
                    8086.

 Смотри также       bdos bdosptr geninterrupt intdos intdosx
                    int6, intr segread

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    char filename[80];
    union REGS inregs,outregs;
    struct SREGS segregs;
    printf("Введите имя файла:");
    gets(filename);
    inregs.h.ah = 0x43;
    inregs.h.al = 0x21;
    inregs.x.dx = FP_OFF(filename);
    segregs.ds = FP_SEG(filename);
    int86x(0x21,&inregs,&outregs,&segregs);
    printf("Атрибуты файла: %X\n",outregs.x.cx);
    return 0;
 }