CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
setvect
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; }