【问题标题】:Stack Pointer (SP) adjustment at RST 5.5 interruptionRST 5.5 中断时的堆栈指针 (SP) 调整
【发布时间】:2019-09-29 05:30:15
【问题描述】:

在微处理器 8085 中,我们运行命令 CALL 3000H 。程序计数器 (PC) 等于 (PC)=2000H,堆栈指针等于 (SP)=4000H。在执行命令的过程中,我们有一个 RST 5.5 中断。我想定义 PC 和 SP 的新值。我还想查找堆栈的内容以及例程返回前后发生的操作。

我认为由于中断发生在命令 CALL 3000H 开始之后,因此命令将完成。完成后,中断发生。程序计数器 (PC) 需要存储在堆栈中,以便程序可以返回到进行调用的点。这意味着 (SP) 被调整。程序计数器 (PC) 将在 RST 5.5 中断后取值 (PC) = 002CH。

我的方法正确吗?如果是这样,我仍然对堆栈指针(SP)和堆栈感到有些困惑。堆栈和(SP)值的调整究竟会发生什么?

【问题讨论】:

    标签: assembly interrupt microprocessors 8085 stack-pointer


    【解决方案1】:

    你是对的,因为中断是在调用指令开始之后到达的,所以指令将完成,然后将服务中断。

    所以,首先堆栈指针减2,调用后指令的PC(2003h)存储在3ffeh,PC加载调用的目的地(3000h)。

    然后处理中断:SP 再次递减,到 3ffch,PC (3000h) 存储在那里,PC 被加载中断处理程序地址。

    【讨论】:

    • 感谢您的回答!很好的简单解释!
    猜你喜欢
    • 2015-11-16
    • 2011-04-14
    • 1970-01-01
    • 2011-10-26
    • 2015-06-16
    • 2018-12-31
    • 2013-01-20
    • 2020-01-17
    • 2015-08-05
    相关资源
    最近更新 更多