setvect

Функция            Устанавливает вектор прерывания.

Синтаксис          void setvect(int intr_num, void interrupt(*isr)
                   ());

Файл, содержащий   dos.h
прототип

Описание           Каждый микропроцессор семейства 8086 включает на-
                   бор векторов прерываний, с номерами от 0 до 255.
                   Четырех байтовые значения каждого вектора в дейс-
                   твительности представляют собой адреса программ
                   обработки соответствующих прерываний.
                   setvect устанавливает новую программу обработки
                   прерывания с номером intr_num, передавая ее адрес
                   в параметре isr. Адрес подпрограммы можно пере-
                   дать только в том случае, если она объявлена как
                   подпрограмма обработки прерывания (interrupt).

                   Примечание. Если вы используете прототипы, объяв-
                   ленные в dos.h то вы можете просто посылать адрес
                   подпрограммы обработки прерывания setvect в любой
                   модели памяти.

Возвращаемое       Нет.
значение

Переносимсоть      setvect уникальна для микропроцессоров семейства
                   8086.

Смотрите также      getvect

Пример:

/*  Примечание:
    Это программа обработки прерываний. Вы должны компилировать
    данную программу с отключенной функцией проверки переполнения
    стека (Test Steck Overflow - off).  */

#include
#include
#include

#define INTR 0X1C  /* прерывание по таймеру */

void interrupt (*oldfunc)(); /* указатель на прерывание */
int count = 0;

void interrupt handler()
{
   /* увеличить счетчик */
   count ++;
   /* вызвать старый вектор */
   oldfunc();
}

int main(void)
{
   /* сохранить старый вектор */
   oldfunc = getvect(INTR);
   /* установить новый вектор */
   setvect(INTR,handler)
   /* ничего не делать */
   while(count<20)
      printf("счетчик = %d\n",count);
   /* восстановить старый вектор */
   setvect(INTR,oldfunc);
   return 0;
}