CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
intr
intr
Функция Дополнительный интерфейс к прерываниям процессора 8086. Синтаксис #include <dos.h> void intr(int intr_num, struct REGPACK *preg); Файл, содержащий dos.h прототип Описание Функция intr поддерживает альтернативный интерфейс для выполнения программных прерываний. Она генерирует прерывание микропроцессора 8086, заданное аргументом intr num. Функция intr перед выполнением прерывания копирует значения регистров из структуры REGPACK *preg непосредственно в регистры. После завершения прерывания функция intr копирует текущее значение регистров в параметр preg. Значения флагов остаются законсервированными. Функции intr передаются следующие параметры: intr num - номер выполняемого прерывания; preg - адрес структуры, содержащий: (a)- значения регистров перед вызовом; (b)- значения регистров после вызова прерывания. Структура REGPACK объявленна в dos.h следующим образом: struct REGPACK { unsigned r_ax, r_bx, r_cx, r_dx; unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags; }; Возвращаемое Никакое значение не возвращается. Структура значение REGPACK *streg содержит значения регистров после вызова прерывания. Переносимость Функция уникальна семейства микропроцессоров 8086. Смотрите также geninterrupt, int86, int86x, intdos, intdosx. Пример: #include<stdio.h> #include<string.h> #include<dir.h> #include<dos.h> #define CF 1 /* флаг переноса */ int main(void) { char directory[80]; struct REGPACK reg; printf("Введите директорию, куда перейти:"); gets(directory); reg.r_ax = 0x3b << 8; reg.r_dx = FP_OFF(directory); reg.r_ds = FP_SEG(directory); intr(0x21,®); if(reg.r_flags & CF) printf("Ошибка при смене директории\n"); getcwd(directory); printf("Текущая директория: %s",directory); return 0; }