请帮解释一下单片机程序各步骤

POP DPH
POP DPL
MOV DPTR,#4000H
RL A
MOV B,A
MOVC A,@A+DPTR
PUSH Acc
MOV A,B
INC A
MOVC A,@A+DPTR
PUSH Acc
RET
ORG 4000H
DB 10H,80H,30H,50H,30H,50H

POP DPH ;从堆栈中弹出一个8位二进制数到DPH中,
POP DPL ;从堆栈中弹出一个8位二进制数到DPL中
MOV DPTR,#4000H ;给DPTR赋值#4000h
RL A ; 累加器A的内容左移一位
MOV B,A ; 把累加器 A的内容送到寄存器B中
MOVC A,@A+DPTR ;把DPTR的内容加A的内容作为地址,兼址寻址该地址中的内容送A
带进位位
PUSH Acc ;压堆栈,把A的内容推入堆栈
MOV A,B 把B的内容送到A中
INC A ;A的内容累加1
MOVC A,@A+DPTR ;把DPTR的内容加A的内容作为地址,兼址寻址该地址中的内容送A
带进位位
PUSH Acc ;压堆栈,把A的内容推入堆栈
RET ;中断子程序结束
ORG 4000H ; 伪指令 段地址开始位置为:4000H
DB 10H,80H,30H,50H,30H,50H ;数据段 连续存6个16进制数。
--------------
大致就是这样,你再查查指令系统的具体含义,可以更准确地解释其含义,我已经有10年没编写这些程序代码了,所以有可能记忆不是太准确。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-01
这程序,把堆栈腾空后,又压入两个字节,然后执行返回指令。

堆栈已经腾空了,返回到何处?

实际上,就是用下面的 DB 的内容,当成了返回地址。
第2个回答  2013-12-01
弹出 DPH
弹出 DPL
赋予 DPTR 4000H
将acc左移一位
将acc值赋给b
相似回答