80C51 单片机寻址方式有哪些?

如题所述

1.立即寻址方式
采用立即寻址的指令一般是双字节的。第一个字节是指令的操作码,第二个字节是立即数。因此,操作数就是放在程序存储器中的常数。立即数前面应加前缀“#”号。
例如:
MOV
A,
#2BH
;A←#2BH,即将立即数2BH传送至A中。
2.直接寻址方式
采用直接寻址的指令一般是双字节或三字节指令,第一字节为操作码,第二,三字节为操作数的地址码。单片机中,直接地址只能用来表示片内低128字节单元、专用寄存器和片内RAM的位地址空间。其中专用寄存器和位地址空间只能用直接寻址方式来访问。
例如:MOV
A,30H
;(30H)→A
MOV
C,00H
;
(00H)→Cy
LJMP
1000H
;
将1000H送入PC
3.寄存器寻址方式
寄存器寻址方式用于访问选定的工作寄存器R0~R7、A、B、DPTR和进位CY中的数。其中R0~R7由操作码低三位的8种组合表示,A、B、DPTR、C则隐含在操作码之中。
这种寻址方式中被寻址的寄存器中的内容就是操作数。
例如:
MOV
A,
R0
;(R0)→A
MOV
B
,A
;(A)→B
4.寄存器间接寻址方式
这种寻址方式中,指令指定寄存器中的内容为操作数的地址。寄存器间接寻址是用于访问片内数据存储器或片外数据存储器。当访问片内RAM
或片外的低256字节空间时,可用R0或R1做为间址寄存器;当访问片外整个64KB的地址RAM空间时,用16位寄存器DPTR做间址寄存器。这类指令都为单字节的指令,操作码的最低位表示是采用R0还是R1做间址器。
在执行PUSH和POP指令时,也采用寄存器间接寻址,此时用堆栈指针SP做间址寄存器。
例如:MOVX
A,
@R0
;
((R0))→A
MOVX
A
,
@DPTR
;
((DPTR))→A
POP
ACC
;
((SP))→A
,
(SP)-1→SP
5.基址加变址寻址方式
这种寻址方式用于访问程序存储器中的某个字节。以DPTR或PC作为基址寄存器,累加器A做为变址寄存器,两者的内容之和为操作数的地址。这种寻址方式常用于查表操作。
例如:MOVC
A,@A+DPTR
;指令代码为93H,单字节指令。设该指令放在1040H单元,A的原内容为A0H,DPTR中的值为
3000H,则操作数的地址等于:A0H+3000H=30A0H,即将30A0H单元中的内容传送至A中。
6.位寻址方式
位寻址是指对片内RAM的位寻址区(字节地址20H~2FH)和可以位寻址的专用寄存器进行位操作时的寻址方式。在进行位操作时,借助于进位C作为位操作累加器。操作数直接给出该位的地址,然后根据操作码的功能对其进行位操作。位寻址的位地址与直接寻址的字节地址形式完全一样,主要由对应的操作数的位数来区分,使用时应加以注意。
例如:MOV
10H,C
;10H是位寻址的位地址(C是位累加器)
MOV
A,10H
;10H是直接寻址的字节地址(A是字节累加器)
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-02
80C51有七种寻址方式:
1、立即寻址,寻址空间为ROM;
2、直接寻址,寻址空间为片内RAM的低128B和特殊功能寄存器;
3、寄存器寻址,寻址空间为A、B、DPTR、CY、通用工作寄存器等;
4、寄存器间接寻址,片内RAM低128B、片外RAM;
5、相对寻址,寻址空间为ROM;
6、变址寻址,寻址空间为ROM;
7、位寻址,寻址空间为片内RAM低128B的位寻址区的128个位,其字节地址为20H~2FH;以及部分可以位寻址的特殊功能寄存器。
相似回答