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


7.4. Комбинация клавиш Ctrl+Break



7.4. Комбинация клавиш Ctrl+Break

Если нажата эта комбинация клавиш, то при первом же системном вызове она будет обработана. Обработка заключается обычно в немедленном завершении текущей программы. Обратите внимание на то, что комбинация обрабатывается не немедленно, а при вызове DOS. Начиная с самого нижнего уровня, порядок обработки этой комбинации следующий. Комбинация Ctrl+Break распознается BIOS при вводе. BIOS в этом случае вызывает прерывание 0x1B. Исходный обработчик этого прерывания состоит из одной команды IRET. DOS переустанавливает этот вектор на другой обработчик, который взводит признак нажатия Ctrl+Break в области данных BIOS (40:71). Функции DOS проверяют этот флаг и если он взведен (и если это разрешено статусом обработки) вызывают прерывание 0x23, а системный обработчик этого прерывания завершает программу.

В следующем примере дважды повторяются похожие действия: в программном цикле часть экрана заполняется символами '*'. Но в первом таком цикле нет системных вызовов. Поэтому если во время выполнения этого цикла будет нажата комбинация Ctrl+Break, прерывания программы не произойдет. Во втором цикле есть вызов функции DOS 0x0B, поэтому в этом цикле программу можно прервать.




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