51单片机寻址方式判别 在51寻址中 MOV A,Rn 和MOV direct,Rn 还有MOV Rn,direct 怎么判别啊???

他们是什么寻址方式啊??? 寄存器寻址还有寄存器间接寻址都是怎么判断的啊????

MOV A,Rn
工作寄存器的数据送到A
n的取值为 0-7
MOV A,R0 .... MOV A,R7

MOV direct,Rn ;寄存器寻址

工作寄存器的数据送到直接地址
direct的取值为0H-0FFH ;例如 MOV 90H,R7 R7的值送到P1口
;direct的取值低于127为内存,高于127为特殊功能寄存器例如IO 中断 串口等、、

MOV Rn,direct ;寄存器寻址

直接地址的数据送到工作寄存器
;例如MOV R7,90H 读取P1口的数据并赋值给R7寄存器
;MOV R6,99H 读取串口数据并赋值到R6寄存器

Rn就代表8个工作寄存器
分别是R0到R7
direct代表单片机内的直接地址
一般低127字节是普通RAM,128字节是特殊功能寄存器
大部分51单片机都有256字节RAM
无法使用直接地址访问高128字节的RAM
这时就需要通过(寄存器间接寻址)
MOV A,@Ri
MOV @Ri,A

这2条指令来实现了

@Ri的取值为 R0 R1 2个
例如要取200地址的RAM的值
首先
MOV R0,#200 ;R0 R1都可以
MOV A,@R0
这样就能取到200地址内的数据了
同理给200地址赋值只是反过来而已
MOV @R0,A
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-25
MOV A,Rn 和MOV direct,Rn是寄存器寻址,因为操作数都是Rn(寄存器)
MOV Rn,direct是直接寻址,因为操作数是direct(地址)。
综述,要判断寻址方式可以看它的操作数。
第2个回答  2013-09-25
MOV Rn,direct , MOV direct,Rn 都是寄存器寻址
MOV @R0,A 是寄存器间接寻址,特点,多一个@追问

MOV Rn,direct 不是直接寻址吗???

追答

不是的,直接寻址是有立即数作为操作数的寻址方式。

例如: MOV Rn,#100 ;是立即数寻址

相似回答