51单片机汇编寄存器间址指令注意事项

寄存器间址指令用得好,汇编代码省事一大半。但用的时候,坑也不少,尤其是在 51 单片机上。像R0R1的限制、访问范围的区别、还有不能碰SFR这些雷区,都得记清楚。用MOV A,@R1之前,最好确认地址不是跑去80H以上的特殊功能寄存器区域,不然程序直接出 Bug,调一天都不一定找到问题出在哪儿。

寄存器间址用得好,读写速度快,代码也干净。但你得搞明白,它不是什么地址都能碰,尤其 SFR 那块——地址是摆在那儿的,权限可不一样。

R0、R1是唯一能做间址寄存器的通用寄存器,也就是说R2~R7想都别想。你要间址,就得用R0或者R1,不然汇编器都不带搭理你。

片内RAM寻址挺灵活,用R0/R100HFFH随便搞。但如果你想访问片外RAM,那就得上DPTR了,地址跨度也大,直接干到FFFFH都行。

小提醒一下,SFR虽然也是80H+的地址,但不能用间址方式去动它。像下面这段:

MOV R1,#80H
MOV A,@R1

看着没毛病,其实大错特错——80HP0端口的物理地址,@R1根本读不到这块。

如果你还在捣鼓51 单片机,或者调汇编代码的时候老感觉有“灵异事件”,不妨看看这篇文章,顺带也推荐几篇相关的,知识串起来,效率高多了。

ppt 文件大小:539.5KB