刚刚学汇编 请教一道简单的习题
习题题目:已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH.下述程序执行后
POP DPH
POP DPL
MOV DPTR,#3000H
RL A
MOV B,A
MOVC A,@A+DPTR
PUSH A
MOV A,B
INC A
MOVC A,@A+DPTR
PUSH A
RET
ORG 3000H
DB 10H,80H,30H,80H,50H,80H
请问:A=( ).SP=( ),(41H)=( ),(42H)=( ),PC=( ).
附,请懂的朋友帮我看看以上括号里面的各个值是什么,重要的是请帮忙分析各个值是怎么来的。(我想了半天只知道A,(41H)(42H)的值其他的不知道怎么来的 参考答案是A=80H,SP=40H,(41H)=(50H ),(42H)=(80H),PC=(8050H). 后面几个怎么来的都不知道了,哎惭愧)
不是用C吗......
我想从汇编开始 多了解硬件结构原理在慢慢学高级易语言 这样不好吗
POP DPH DPH=FFH SP=41
POP DPL DPL=FFH SP=40
MOV DPTR,#3000H (FFFFH)=3000H
RL A A=0000 0010-----0000 0100
MOV B,A B=0000 0100
MOVC A,@A+DPTR A=50H
PUSH A SP=41H (41H)=50H
MOV A,B A=0000 0100
INC A A=0000 0101
MOVC A,@A+DPTR A=80H
PUSH A SP=42H (42H)=80H
RET PC(8-15位)=(SP)=80H,SP=SP-1=41H
PC(0-7位)=(SP)=50H,SP=SP-1=40H
ORG 3000H
DB 10H,80H,30H,80H,50H,80H
非常感谢你的回复
但最后那里还是没有懂 为什么RET后 SP会再减两次变为40H呢
那你需要去看看汇编指令RET的具体说明。
看他的注释是保存程序指针。
因为 指针会自动指向下一条指令 而前一条指令 是两个字节的 所以指针加二
哦 !我知道了 是不是 执行RET指令过后 指针回到了刚进入时候的地址啊?
哥们,你qq多少