在微处理器-8085中,我们运行命令 CALL 3000H 。程序计数器(PC)等于(PC)= 2000H ,而堆栈指针等于(SP)= 4000H 。在执行命令的中间,我们遇到了RST 5.5中断。我想定义PC和SP的新值。我还想找到堆栈的内容以及例程返回之前和之后发生的操作。
我认为由于中断发生在命令CALL 3000H启动之后,因此该命令将完成。完成后,将发生中断。程序计数器(PC)需要存储在堆栈中,以便程序可以返回到进行调用的位置。这意味着(SP)已调整。 RST 5.5中断后,程序计数器(PC)将取值(PC)= 002CH。
我的方法正确吗?如果是这样,我仍然对堆栈指针(SP)和堆栈感到困惑。调整堆栈和(SP)值到底会发生什么?
答案 0 :(得分:1)
您是对的,因为中断是在调用指令开始后到达的,所以指令将完成,然后将为中断服务。
因此,首先将堆栈指针减2,将调用(2003h)之后的指令的PC存储在3ffeh,然后将调用的目的地(3000h)加载到PC。
然后处理中断:将SP递减至3ffch,将PC(3000h)存储在此处,并向PC加载中断处理程序地址。