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