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


Пример 7



Пример 7

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

void main() { union REGS rr; int i,k,o,m; clrscr(); printf ("При выполнении этого цикла Ctrl+Break не сработает"); for (o=160,i=0,k=0; i

В системе имеется так называемый статус обработки Ctrl+ Break. Если этот статус 1 (включен), то комбинация обрабатывается при любом системном вызове, если 0 (отключен) - только при вызовах, связанных со стандартным вводом и выводом. Прочитать или установить этот статус позволяет функция DOS 0 x33. Если при вызове функции в регистре AL - 1, то регистр DL должен содержать устанавливаемое значение статуса, если в AL - 0, статус читается. В обоих случаях в DL возвращается текущее значение статуса. В примере 7.8 предлагается испытать действие Ctrl+Break при разных значениях статуса обработки. В теле циклов применяется ни на что не влияющий системный вызов "получение версии DOS" (функция 0x30). Но если заменить этот вызов на вызов, например, функции 0x0B, то и первый цикл (выполняемый при статусе 0) будет прерываемым, так как для функций стандартного ввода обработка Ctrl+ Break не отключается.




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