Функция Запрещает прерывания.
Синтаксис #include
void disable(void);
Файл, содержащий dos.h
прототип
Описание Данная макрокоманда разработана с целью обеспе-
чения программистов гибким средством контроля над
прерываниями на физическом уровне.
Макрокоманда disable делает прерывания невозможны-
ми. Разрешено только прерывание NMI с внешнего ус-
тройства (немаскируемое прерывание).
Возвращаемое Нет.
значение
Переносимость Данная макрокоманда уникальна для архитектуры
8086.
Смотрите также getvectenable
Пример:
/* Замечание.
Это программа обработки прерывания. Вы не сможете откомпилировать
эту программу с включенной проверкой переполнения стека (Test
Stack Overflow - On) и получить правильно работающую программу. */
#include
#include
#include
#define INTR 0X1C /* прерывание таймера */
void interrupt (*oldhandler)(void);
int count=0;
void interrupt handler(void)
{
/* запрет других прерываний во время обработки этого */
disable();
/* увеличение глобального счетчика */
count++;
/* разрешение прерываний после обработки */
enable();
/* вызов старой программы обработки */
oldhandler();
}
int main(void)
{
/* сохранить старый вектор */
oldhandler = getvect(INTR);
/* записать новый вектор */
setvect(INTR,handler);
/* цикл, пока счетчик не достигнет 20 */
while(count < 20)
printf("счетчик = %d\n",count);
/* восстановить старый вектор */
setvect(INTR,oldhandler);
return 0;
}