单片机的问题: PC的值是不是等于栈指针SP的值?也就是说(PC)=(DPH)+(DPL)?
答案:3 悬赏:0 手机版
解决时间 2021-01-11 08:37
- 提问者网友:战魂
- 2021-01-11 05:41
单片机的问题: PC的值是不是等于栈指针SP的值?也就是说(PC)=(DPH)+(DPL)?
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-01-11 06:16
有个概念必须首先搞清楚:
SP:栈寄存器
(SP):栈寄存器的内容,也就是堆栈区的起始地址
(SP) = #52H,代表当前栈指针指向的是内部RAM地址为52H的寄存器。
程序分析:
POP DPH ;(52H)=>(DPH) = #0FFH,(SP)-1,即(SP) = #51H
POP DPL ;(51H)=>(DPL) = #0FFH,(SP)-1,即(SP) = #50H
MOV DPTR,#4000H ;DPTR重新赋值,所以上两句对DPTR的修改无意义
RL A ;(A) = #04H,A原为02
MOV B,A ;(B) = #04
MOVC A,@A+DPTR ;(A) = #30H(查表得到第1个字节内容)
PUSH ACC ;压栈,(SP)+1,即(SP) = #51H,(51H)= #30H
MOV A,B ;(A) = #04
INC A ;(A) = #05
MOVC A,@A+DPTR ;(A) = #50H(查表得到第2个字节内容)
PUSH ACC ;再压栈,(SP)+1, 即(SP) = #52H,(52H)= #50H
RET ;返回。RET相应操作过程:
(SP) = #52H (52H) = #50H #50H ==> (PC高8位)
(SP) - 1 (SP) = #51H
(SP) = #51H (51H) = #30H #30H ==> (PC低8位)
(SP) - 1 (SP) = #50H
所以:
(PC) = #5030H
(SP) = #50H
DPTR在送#4000H赋值后再未变过。所以:(PC)=(DPH)+(DPL)不成立
SP:栈寄存器
(SP):栈寄存器的内容,也就是堆栈区的起始地址
(SP) = #52H,代表当前栈指针指向的是内部RAM地址为52H的寄存器。
程序分析:
POP DPH ;(52H)=>(DPH) = #0FFH,(SP)-1,即(SP) = #51H
POP DPL ;(51H)=>(DPL) = #0FFH,(SP)-1,即(SP) = #50H
MOV DPTR,#4000H ;DPTR重新赋值,所以上两句对DPTR的修改无意义
RL A ;(A) = #04H,A原为02
MOV B,A ;(B) = #04
MOVC A,@A+DPTR ;(A) = #30H(查表得到第1个字节内容)
PUSH ACC ;压栈,(SP)+1,即(SP) = #51H,(51H)= #30H
MOV A,B ;(A) = #04
INC A ;(A) = #05
MOVC A,@A+DPTR ;(A) = #50H(查表得到第2个字节内容)
PUSH ACC ;再压栈,(SP)+1, 即(SP) = #52H,(52H)= #50H
RET ;返回。RET相应操作过程:
(SP) = #52H (52H) = #50H #50H ==> (PC高8位)
(SP) - 1 (SP) = #51H
(SP) = #51H (51H) = #30H #30H ==> (PC低8位)
(SP) - 1 (SP) = #50H
所以:
(PC) = #5030H
(SP) = #50H
DPTR在送#4000H赋值后再未变过。所以:(PC)=(DPH)+(DPL)不成立
全部回答
- 1楼网友:長槍戰八方
- 2021-01-11 08:09
DPTR是十六位的,PC指针是八位的。你的标题上说的应该是DPTR=(DPH)+(DPL)。
程序里RET回到哪里也没写清楚,RET后指针PC回到那之后的程序地址去啦,SP指向PC的下一个啊。
程序里RET回到哪里也没写清楚,RET后指针PC回到那之后的程序地址去啦,SP指向PC的下一个啊。
- 2楼网友:北方的南先生
- 2021-01-11 06:41
要回到ret的机制上说。按道理所给程序应该有call指令,这样我们知道程序返回到哪里,而这里没有call
注意:相当于模拟了一次子程序调用过程,先压入pcl,再压入pch,即两次的PUSH ACC
而ret指令将压入的这两个字节,即50h,和30h作为pc值弹出,sp-2
注意:相当于模拟了一次子程序调用过程,先压入pcl,再压入pch,即两次的PUSH ACC
而ret指令将压入的这两个字节,即50h,和30h作为pc值弹出,sp-2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯