Cтраница 3
Прерывания - это изменения в потоке управления, вызванные не самой программой, а чем-либо другим и обычно связанные с процессом ввода-вывода. Например, программа может приказать диску начать передачу информации и заставить диск произвести прерывание, как только передача данных завершится. Как и ловушка, прерывание останавливает работу программы и передает управление программе обработки прерываний, которая выполняет какое-то определенное действие. После завершения этого действия программа обработки прерываний передает управление прерванной программе. Она должна заново начать прерванный процесс в том же самом состоянии, в котором она находилась, когда произошло прерывание. Это значит, что прежнее состояние всех внутренних регистров ( то есть состояние, которое было до прерывания) должно быть восстановлено. [31]
Другая, более интересная возможность связана с использованием функциональной клавиатуры во время выполнения программы. При нажатии функциональной клавиши в этом случае происходит прерывание вычислительного процесса и управление передается подпрограмме обработки, приписанной к данной клавише. Для организации такого возврата из подпрограммы обработки прерываний в первом случае используют оператор RETURN, а во втором - RETURN N. Выход по оператору GOTO N не допустим по тем же причинам, по которым им нельзя пользоваться для возврата из обычных подпрограмм. Дело в том, что начальная фаза системной обработки прерываний напоминает выполнение оператора GOSUB. Адрес оператора исходной программы, перед исполнением которого зафиксирован сигнал прерывания, заносится в стек возвратов. Поэтому обычный оператор RETURN, встретившийся в процедуре обработки прерывания, возвратит нас на продолжение прерванного процесса. [32]