永发信息网

单片机的问题: PC的值是不是等于栈指针SP的值?也就是说(PC)=(DPH)+(DPL)?

答案:3  悬赏:0  手机版
解决时间 2021-01-11 08:37
单片机的问题: PC的值是不是等于栈指针SP的值?也就是说(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)不成立
全部回答
DPTR是十六位的,PC指针是八位的。你的标题上说的应该是DPTR=(DPH)+(DPL)。
程序里RET回到哪里也没写清楚,RET后指针PC回到那之后的程序地址去啦,SP指向PC的下一个啊。
要回到ret的机制上说。按道理所给程序应该有call指令,这样我们知道程序返回到哪里,而这里没有call
注意:相当于模拟了一次子程序调用过程,先压入pcl,再压入pch,即两次的PUSH ACC
而ret指令将压入的这两个字节,即50h,和30h作为pc值弹出,sp-2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
编写一个JAVA小程序,从键盘输入3个数,求这
博乐在线的老师们的实力如何?会切身的为考生
look and match什么意思
2o17年全国高考四川卷文科综位地理平均分是多
请问“贵校”(尊敬的)的英文怎么说?请专业
从哈尔滨火车站到玛克威商厦怎么走
事业单位编外用工劳动合同满十年的是否有什么
孟子认为除了要发展生产之外 还必须采取什么
申进科简历哪里人
初中实验课解剖青蛙,是不是太残忍
下列说法中,正确的是A.原子团好像一个整体,
藏文仁真是什么意思
Ferdinand Freiherr von Richthofen是谁,中
中国电信划小承包存在的问题
我们是一销售团队,队名叫非凡,急求口号,谢
推荐资讯
大岭村村民委员会怎么去啊,有知道地址的么
31岁还是处女,会被嘲笑吗
重庆教场口到市疾控中心怎么走
保斯顿L418的吉他适合初学吗,学了一天手指
上海世博会所使用的饭盒、胸卡、证件等都由可
“月白风清夜半时,扁舟相送故迟迟。感君情重
2017年腊月二十七订婚吉利吗
画网络拓扑图的软件除了visio外还有什么软件
三星盖乐视a5蓝牙怎麼导出联系人
年初想跳槽,看上一家叫遇善房的,跟很多楼盘
佳能pixma mg2580s打印机怎么扫描
这题应该选什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?