disable
Функция Запрещает прерывания.
Синтаксис #include <dos.h>
void disable(void);
Файл, содержащий dos.h
прототип
Описание Данная макрокоманда разработана с целью обеспечения
программистов гибким средством контроля над
прерываниями на физическом уровне.
Макрокоманда disable делает прерывания
невозможными. Разрешено только прерывание NMI с
внешнего устройства (немаскируемое прерывание).
Возвращаемое Нет.
значение
Переносимость Данная макрокоманда уникальна для архитектуры 8086.
Смотрите также getvect, enable.
Пример:
/* Замечание.
Это программа обработки прерывания. Вы не cможете откомпилировать
эту программу с включенной проверкой переполнения стека (Test Stack
Overflow - On) и получить правильно работающую программу. */
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#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;
}
|