单片机堆栈指针SP的功能问题
单片机复位后,默认状态下,SP=07H,为什么堆栈最大允许范围是内RAM08H~7FH,而不是07H~7FH。算范围时,答案是120个单元,不是7FH-07H=120?...
单片机复位后,默认状态下,SP=07H,为什么堆栈最大允许范围是内RAM 08H~7FH,而不是07H~7FH。算范围时,答案是120个单元,不是7FH-07H=120?
展开
1个回答
展开全部
“单片机复位后,默认状态下,SP=07H,为什么堆栈最大允许范围是内RAM 08H~7FH,而不是07H~7FH”
这说明你对51入栈的指令序列不熟悉。入栈时都是先累加SP、之后再入栈的。
算范围时,可用的范围是08H~7FH,总计7Fh - 08h + 1h = 78h,也就是120个字节。
这说明你对51入栈的指令序列不熟悉。入栈时都是先累加SP、之后再入栈的。
算范围时,可用的范围是08H~7FH,总计7Fh - 08h + 1h = 78h,也就是120个字节。
追问
还有一个问题,麻烦一下:
ORG 2000H
LCALL 4000H
ORG 4000H
ADD A,R2
执行完LCALL指令后,为什么PC=4000H.
PC不是显示将要执行的指令地址吗?怎么是原来的位置不变了?
追答
……LCALL指令本来要做的事情就是将4000H装载到PC中啊。
LCALL这条指令所处的地址是2000H,不是4000H……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询