单片机中寄存器间接寻址为啥不能用R3,或者说R0,R1,与其他工作寄存器有何区别?

如题所述

51单片机的指令系列有111条指令,寄存器间接寻址命令中会出现@Ri,系统规定这里的i只能是0或1,有相应的机器码与其对应,也就是说用其它工作寄存器作间接寻址时系统是查不到机器码,当然是无法执行相应的功能要求了,这是系统规定的记牢就是哦。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-13
单片机中寄存器间接寻址要用到的工作寄存器位R0和R1,指令格式为:
MOV @R0,A
MOV @R1,A
等,R0和R1与R2~R7本质上没有任何区别,之所以只能用R0和R1,是因为指令限制的。也就是说是为了减少指令数目,有次两个也足以解决应用中的绝大多数问题了。本回答被提问者采纳
第2个回答  2019-01-13
51单片机的工作寄存器一共有4组 R0~R7,在RAM中地址的00H--1FH单元,分别是
0组:00H--07H单元、1组:08H--0FH单元、2组:10H--17H单元、3组:18H--1FH单元,
这四组中只有一组是当前工作寄存器,程序中使用的就是当前工作寄存器中的8个单元。选择当前工作寄存器是由程序状态字PSW中的第三第四位决定的。51单片机规定工作寄存器的R0、R1做为间接寻址寄存器,用于寻址内部或外部数据存储器的256个单元。
第3个回答  2022-12-13

寄存器 R0~R7,共有四组。

当前,只能用其中一组,要用 PSW 中的 3、4 位来选择。

每组中,共有八个寄存器。

间接寻址是用 R0、R1。

能不能用其它寄存器呢? 应该可以的。

比如,用 PSW 中的第 5 位,就可以选用 R2、R3。

但是,Intel 的工程师,懒惰成性,好好的设计方案,就白白浪费了。

第4个回答  2019-01-12
这是系统自定义,只能使用R0和R1
相似回答