使用推送和弹出指令在Assembly 8051中进行堆栈跟踪

时间:2017-03-27 15:37:31

标签: assembly stack-trace 8051

我是8051年的汇编语言新手。我的问题是: enter image description here

我知道40H,41H,42H,43H,44H处的地址值是10H,0DH,10H,10H,F0H。

但我不知道如何手动获得这些价值观。我知道push首先将SP增加1,然后将数据复制到SP指定的RAM中的地址。但是,我可以得到40H值10H,但不知道如何继续。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

当然,您也可以通过跟踪其他后续堆栈操作来继续。接下来是call,它在堆栈上放置一个返回地址(100Dh,在小端将0Dh 10h)然后你又有一个push acc10h 1}},然后是push b,当然会写0F0h

答案 1 :(得分:0)

您需要遵循程序中使用堆栈的所有后续指令(以及执行这些指令的顺序)。

使用程序中的说明的堆栈是: 1.推动acc ---将10H放入堆栈(位置40h) 2. call ---将返回地址放入堆栈(即地址0x100D以小端顺序进入堆栈。所以,位置41h为0Dh,位置为42h为10h)

现在jmp指令没有被执行。相反,由于调用指令,控制转移到a_x_b_plus1。

所以, 3.按acc--再次将10H放入堆栈(位置43h) 4.按b ---将F0h放入堆栈(位置44h)。

相关问题