0

在微处理器 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)值的调整究竟会发生什么?

4

1 回答 1

1

没错,由于中断是在调用指令开始后到达的,因此指令将完成,然后将服务中断。

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

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

于 2019-05-11T20:46:10.770 回答