Функция Интерфейс с программными прерываниями процессора
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.
Смотри также bdosbdosptrgeninterruptintdosintdosxint6, intrsegread
Пример:
#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;
}