Последний уровень раздела предыдущего изложения   Текущий уровень изложения предыдущего раздела   Текущий уровень изложения следующего раздела   Первый уровень изложения следующего раздела   Уровень: Глоссарии:


ВВ по прерыванию



В общем случае прерывания могут вызываться





В этом разделе будут рассмотрены внешние прерывания. Работу МП можно разделить во времени между двумя независимыми программами: фоновой, которая выполняет основную задачу и программой ВВ данных. Когда ВУ подготовит данные для передачи, оно посылает сигнал запроса на прерывание непосредственно на вход МП 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 байта памяти.