Описание функций Си

       

Int86x



     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.

Смотри также 6,

Пример:

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



Содержание раздела