Функция Альтернативный интерфейс к прерываниям микро-
процессора 8086.
Синтаксис #include
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.
Смотрите также geninterruptint6, int6xintdosintdosx
Пример:
#include
#include
#include
#include
#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;
}