Регулировка указателя стека (SP) при прерывании RST 5.5

В микропроцессоре-8085 запускаем команду CALL 3000H. Счетчик программ (PC) равен (PC)=2000H, а указатель стека равен (SP)=4000H. В середине выполнения команды имеем прерывание RST 5.5. Я хочу определить новые значения PC и SP. Я также хочу найти содержимое стека и операции, происходящие до и после возврата подпрограммы.

Я считаю, что поскольку прерывание происходит после начала команды CALL 3000H, то команда будет завершена. После его окончания происходит прерывание. Счетчик программ (ПК) должен храниться в стеке, чтобы программа могла вернуться к точке, в которой был сделан вызов. Это означает, что (SP) регулируется. Счетчик программ (ПК) примет значение (ПК) = 002CH после прерывания RST 5.5.

Верен ли мой подход? Если да, то я все еще немного запутался с указателем стека (SP) и стеком. Что именно произойдет с корректировкой стека и значения (SP)?


person MJ13    schedule 11.05.2019    source источник


Ответы (1)


Вы правы в том, что, поскольку прерывание поступило после начала инструкции вызова, инструкция завершится, а затем будет обслужено прерывание.

Итак, сначала указатель стека уменьшается на 2, ПК инструкции после вызова (2003h) сохраняется по адресу 3ffeh, а ПК загружается с назначением вызова (3000h).

Затем прерывание обслуживается: SP снова декрементируется до 3ffch, там сохраняется ПК (3000h), и ПК загружается с адресом обработчика прерывания.

person prl    schedule 11.05.2019
comment
Спасибо за ответ! Красивое и простое объяснение! - person MJ13; 12.05.2019