ВВ по прерываниям.
Для сокращения непроизводительных потерь времени процессора за счет циклов ожидания при программном обмене, т.е. когда процессор не может заниматься ничем, кроме программы ВВ, используют обмен по прерыванию.
При готовности к обмену ПУ посылает в процессор запрос на обслуживание – сигнал INT (запрос прерывания). Этот сигнал появляется в произвольные моменты времени, а следовательно, и в произвольной точке текущей программы. Поскольку заранее неизвестно, в какой точке программы и какие ПУ инициируют прерывания, непосредственно в программе команды ВВ использовать нельзя.
Общие вопросы организации системы прерываний в ЭВМ рассмотрены ранее
в гл. 6. Некоторые вопросы, связанные с обслуживанием прерываний, рассмотрены при изучении команд RST и RET. Между тем использование конкретного процессора вносит свои особенности в последовательность операций по обслуживанию прерывания. Для микроЭВМ, построенной на базе МП комплекта КР580, эта последовательность выглядит следующим образом:
1. Контроллер ПУ или адаптер промежуточного интерфейса генерирует сигнал запроса прерывания, который подается на вход INT процессора непосредственно (если ПУ одно) или через контроллер прерываний (если ПУ много) в виде общего сигнала прерывания.
2. При наличии нескольких ПУ в контроллере прерывания осуществляется идентификация прерывающего устройства (т.е. выясняется, откуда поступил сигнал INT, и его приоритет).
3. Процессор завершает текущую команду и, если прерывание разрешено, формирует сигнал INTA (подтверждение прерывания), который выдается во внешнюю цепь (в частности, в системный контроллер), а также сбрасывает внутренний триггер разрешения прерываний, состояние которого идентифицируется сигналом INTE.
4. Содержимое PC (счетчик команд) автоматически запоминается в стеке.
5. Происходит переход к подпрограмме обслуживания данного ПУ (обработчику), при этом выполняются следующие операции:
- запоминание состояния прерванной программы, которое должно быть предусмотрено пользователем, т.е. составителем подпрограммы (это слово состояния процессора PSW º (A) (РгП), а также содержимое РОН, используемых в подпрограмме обслуживания прерывания); обычно для запоминания используют стек. В ряде современных процессоров PSW автоматически сохраняется в стеке, как и содержимое счетчика PC;
- выполнение собственно программы обслуживания процесса ВВ;
- восстановление состояния прерванной программы (т.е. извлечение и загрузка в соответствующие регистры PSW и содержимого РОН из стека).
6. Возобновляется выполнение прерванной программы по команде RET, являющейся обязательной последней командой обработчика.
Следует отметить, что реакция процессора на прерывание очень похожа на вызов подпрограммы, несмотря на то, что обращение к подпрограмме происходит в фиксированных точках программы, а прерывания возникают в случайных точках программы. Однако внешняя аналогия реакции на прерывание и вызов подпрограммы позволяют считать прерывание аппаратным вызовом подпрограммы (с помощью сигнала INT).
Поскольку сигнал на вход INT может поступить в произвольной точке программы, процессору необходимо проверять наличие сигнала запроса прерывания до перехода к следующей команде.
Следует отметить, что внутренний триггер разрешения прерываний INTE называется также маской прерывания. Состояние этого триггера идентифицирует сигнал с такой же мнемоникой. Если INTE = 0, то прерывания запрещены (замаскированы) и процессор не реагирует на сигнал INT = 1. Этот триггер управляется программно с помощью команд EI (разрешение прерывания) и DI (запрещение прерывания).