Системное программное обеспечение персональных ЭВМ


Пример 9



Пример 9

/*== ПРИМЕР 7.9 ==*/ /*========= Пользовательская обработка Ctrl+Break =======*/ /* ВНИМАНИЕ! Для проверки реакции на Ctrl+Break программу следует запускать вне Турбо-среды */ #include <dos.h>

void interrupt (*old23)(); /* Адрес старого обработчика */ void interrupt new23(); /* Описание нового обработчика */ unsigned char col; /* Цвет вывода */ union REGS rr; struct SREGS sr; void *readvect(int in); void writevect(int in, void *h); void main() { union REGS rr; int i,k,o,m; col=0x21; /* Исходный цвет */ /* Включение Ctrl+Break */ rr.h.ah=0x33; rr.h.al=1; /* Подфункция установка Ctrl+Break */ rr.h.dl=1; /* ON */ intdos(&rr,&rr); /* Перехват вектора */ old23=readvect(0x23); writevect(0x23,new23); for (o=0,i=0,k=0; i

Восстановление вектора 0x23, произведенное нами в конце программы - действие необязательное, так как при завершении программы система сама восстанавливает тот вектор этого прерывания, который был установлен до ее запуска.




- Начало -  - Назад -  - Вперед -