登录
首页 单片机论坛
回帖 发帖
正文

主题:51单片机关于MOVC A,@A+PC指令 请各位网友帮忙释疑

点击:5483 回复:3

ORG     0000H
MOV A,#02H
INC A
NOP
NOP
NOP
MOVC A,@A+PC
RET ;(改为END用以验证两者的区别)
DB 59H,5AH,0BH,0CH,0DH,5EH,5FH,60H,61H,62H
;在最后一句为RET的情况下,无论加多少个NOP以改变PC的值,最终结果始终不变。如此看来“MOVC A,@A+PC”好像只和A有关。
;将RET改成END后会改变A的值。并且结果不再程序里所列的表中(改变NOP的数量同样会改变A的值,似乎这时PC影响了结果,随着NOP的增加多少,结果也是增加多少)RET虽然会影响PC的值,但也是在“MOVC A,@A+PC”以后。  
09-06-11 19:12
你好,我也是单片机的爱好者,很想学.但是老学不会.希望能得到你的帮助!谢谢!
我看了你上面讲的我认为:1.;在最后一句为RET的情况下,无论加多少个NOP以改变PC的值,最终结果始终不变。如此看来“MOVC A,@A+PC”好像只和A有关。(我决的MOVC A,@A+PC根A和PC都有关.只是你写的程序有一点问题,改成:
ORG     0000H
MOV A,#00H
INC A(跳过RET指令)
MOVC A,@A+PC
NOP
NOP
NOP
RET ;
DB 59H,5AH,0BH,0CH,0DH,5EH,5FH,60H,61H,62H
因为执行MOVC A,@A+PC这条指令时,将从下一条指令
没时间了该下了,我的QQ429415472  抱歉
09-06-19 21:52
因为执行MOVC A,@A+PC这条指令时,先将pc值改为下一条指令的地址,然后做无符号加法运算。而你却把NOP写在MOVC A,@A+PC这条指后面,这样就没意义了。
2:MOVC A,@A+PC这条指令主要用于查表,寻址范围较小。RET是子程序返回,当程序执行到这时还会往下执行并没有结束。END是程序结束,当程序执行到这时不会再往下执行,因为已经结束了。
09-06-21 15:22
MOVC A,@A+PC   这玩意能查表?   还真不知道。。。
09-06-25 20:26

工控新闻

更多新闻资讯