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<stdio.h>
#include<dos.h>
#include<conio.h>
#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;
}
|