Состояние счетчика программы во время hlt

В микропроцессоре Intel 8085 точно в какой момент (состояние t) обновляется счетчик программ? Это происходит сразу после t1 (то есть, когда текущий адрес в ПК помещается на адресную шину) или в t3, когда выполняется выбор инструкции?

Кроме того, когда встречается инструкция hlt, что происходит с состоянием счетчика программы? Увеличивается ли он или содержит адрес текущей инструкции hlt?

2 ответа

Подобный вопрос был задан в этом .

Обычно в первом тактовом цикле текущее значение загружается в адресный буфер, а следующие 2 тактовых цикла выбирают код операции инструкции по этому адресу.

В это время 16-битное значение обновляется инкрементатором, в то время как код операции загружается в IR. Так PC уже увеличивается до того, как 8085 сможет даже декодировать и понять, что инструкция HLT.

работает как инструкция «ждать следующего прерывания». Если вы хотите остановиться навсегда, вы должны создать цикл или отключить прерывания. Таким образом, сохраненный адрес возврата прерывания, программно видимый внутри прерывания, является байтом после него .

Это то, что происходит на 8086 / x86, а 8080 совместим с исходным кодом asm. Кроме того, наличие точки адреса возврата прерывания будет означать, что оно будет запускаться снова после того, как обработчик прерывания вернется нормально. Использование его как чего-либо другого, кроме «с этого момента только обработчиков прерываний», означало бы, что все ваши обработчики прерываний должны будут проверять, на что указывает сохраненное, и, если да, увеличивать его перед возвратом. Вместо этого, чтобы добиться такого поведения, вы помещаете цикл в то место, которое хотите.

Как объясняет codeR, PC уже был увеличен раньше HLT спит, а не в последний момент, когда просыпается, чтобы обработать прерывание.

Другие вопросы по тегам