Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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,&reg);
   if(reg.r_flags & CF)
      printf("Ошибка при смене директории\n");
   getcwd(directory);
   printf("Текущая директория: %s",directory);
   return 0;
}

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог