51单片机汇编寄存器间址指令注意事项
寄存器间址指令用得好,汇编代码省事一大半。但用的时候,坑也不少,尤其是在 51 单片机上。像R0和R1的限制、访问范围的区别、还有不能碰SFR这些雷区,都得记清楚。用MOV A,@R1之前,最好确认地址不是跑去80H以上的特殊功能寄存器区域,不然程序直接出 Bug,调一天都不一定找到问题出在哪儿。
寄存器间址用得好,读写速度快,代码也干净。但你得搞明白,它不是什么地址都能碰,尤其 SFR 那块——地址是摆在那儿的,权限可不一样。
R0、R1是唯一能做间址寄存器的通用寄存器,也就是说R2~R7想都别想。你要间址,就得用R0或者R1,不然汇编器都不带搭理你。
片内RAM寻址挺灵活,用R0/R1从00H到FFH随便搞。但如果你想访问片外RAM,那就得上DPTR了,地址跨度也大,直接干到FFFFH都行。
小提醒一下,SFR虽然也是80H+的地址,但不能用间址方式去动它。像下面这段:
MOV R1,#80H
MOV A,@R1
看着没毛病,其实大错特错——80H是P0端口的物理地址,@R1根本读不到这块。
如果你还在捣鼓51 单片机,或者调汇编代码的时候老感觉有“灵异事件”,不妨看看这篇文章,顺带也推荐几篇相关的,知识串起来,效率高多了。
                                        
                                    文件大小:539.5KB
                                
                                
                                
                            
评论区