![]() ![]() ![]() ![]() |
|
|
![]() |
В общем случае прерывания могут вызываться
В этом разделе будут рассмотрены внешние прерывания. Работу МП можно разделить во времени между двумя независимыми программами: фоновой, которая выполняет основную задачу и программой ВВ данных. Когда ВУ подготовит данные для передачи, оно посылает сигнал запроса на прерывание непосредственно на вход МП INTR или в специальное устройство - контроллер прерываний. В процессе обслуживания прерывания выполняются следующие действия:
1. ВУ самостоятельно, либо через контроллер прерываний посылает сигнал прерывания INT(R) на одноименный вход МП;
2. МП завершает выполнение текущей команды и,если преывания разрешены командой ассемблера STI (EI для 8085), то подтверждает разрешение сигналом ШУ -INTA;
3. В МП по шине данных передается тип(номер) прерывания - N;
4. Содержимое PSW , а также CS,IP (адрес возврата), скорректированное с учетом сброса очереди помещается в стек;
5. Сбрасываются флаги IF (флаг разрешения прерываний) и TF (флаг трассировки), причем т.к. (IF) = 0 дальнейшие прерывания запрещаются;
6. В IP загружается содержимое двух байтов с начальным адресом 4*N, а в CS - содержимое следующих двух байтов . Эти 4 байта называются вектором (указателем) прерывания.
7. Начинает выполняться подпрограмма - обработчик прерывания.
INTSUBR: STI PUSH AX ....; здесь ....; команды MOV AL,5; обработчика ....; прерывания .... POP AX IRET
Если допускаются вложенные прерывания, то вначале помещается команда STI- разрешение преываний, запрещенных в п.5. Инструкции push и pop сохраняют и восстанавливают содержимое регистров фоновой задачи, если эти же регистры используются и обработчиком прерывания (в примере регистр AX).
8. Команда IRET извлекает из стека адрес возврата - IP,CS и содержимое PSW;
9. МП прдолжает работу с адреса возврата. При выполнении программных прерываний по команде INT N действия выполняются с п.3. N находится в пределах 0 <= N <= 255, поэтому четырехбайтовые вектора прерываний занимают первые 1024 байта памяти.