Цитата Сообщение от Patron Посмотреть сообщение
Правильно ли я понял, что на вопрос: когда записываемые в стек значения CPSW и CPC попадают в сами эти регистры, - правильный ответ следующий: в CPSW и CPC ( а потом и в стек ) попадают те значения PC и PSW, которые были в регистрах PC и PSW при начале обработки внешнего прерывания ( в режимах HALT и USER ), а при обработке внутреннего прерывания в режиме HALT, при установленных битах 7 и 8 PSW - те значения PC и PSW, которые были в регистрах PC и PSW в момент установки битов 7 и 8 PSW.
Нет понятия внешнего и внутреннего прерывания для данного случая, есть прерывания режима HALT и прерывания режима USER. Прерывания режима USER всегда переключают процессор в режим USER для обработки. При этом в стек кладутся именно CPC и CPSW, т.к. в начале обработки сбрасывается бит 8 в PSW, а в CPSW он может остаться установленным. Поэтому если сброшены бит 7 или 8 в PSW (т.е. мы в режиме USER или в режиме HALT с разрешенными прерываниями), то можно считать, что в стек кладутся текущие значения PC и PSW. Если же мы в HALT с запрещенными прерываниями, то здесь нельзя однозначно сказать, что в стек положатся значения PC и PSW, бывшие до установки обеих битов 7 и 8 в PSW, т.к. значения CPC и CPSW можно изменить командами WCPC и WCPS.