Russian Belarusian English German Japanese Ukrainian

Setvect

CuBook05

Функция

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

#include <dos.h>
void setvect(int intr_num, void interrupt(*isr)());
 
Прототип

dos.h
 
Описание

Каждый микропроцессор семейства 8086 включает набор векторов прерываний, с номерами от 0 до 255. Четырех байтовые значения каждого вектора в действительности представляют собой адреса программ обработки соответствующих прерываний.

Функция setvect устанавливает новую программу обработки прерывания с номером intr_num, передавая ее адрес в параметре isr. Адрес подпрограммы можно передать только в том случае, если она объявлена как подпрограмма обработки прерывания (interrupt).

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

Нет.
 
Переносимость

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

#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;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий