寻址方式:是在指令中给出的寻找操作数地址的方法
七种寻址方式
-
立即数寻址
-
直接寻址
-
寄存器寻址
-
寄存器间接寻址
-
基址寄存器就变址寄存器的变址地址
-
位寻址
-
相对寻址
-
立即数寻址
在指令中直接给出操作数,出现在指令中的操作数叫做立即数,立即数前面加#
例如:
MOV A,#62H
(A) = 62H
- 直接寻址
直接给出操作数单元的地址
MOV A,65H
(A) = (65H),括号表示去地址里面的值
寻址范围:
- 内部RAM空间地址
- SFR地址空间
- 位地址空间
- 寄存器寻址
与直接寻址类似,只不过将地址用寄存器表示
MOV A, R0
(A) = (R0)
寻址范围:
32个通用寄存器R0~R7。
A,B,DPTR,Cy
- 寄存器间接寻址
把寄存器中的内容作为地址,在该地址中的数才是操作数
MOV A,@R0
(A) = ((R0))
寻址范围:
工作寄存器R0、R1
堆栈指针SP
数据指针DPTR
- 基址寄存器加变址寄存器的变址寻址
操作数地址 = 变地址 + 基地址
基地址寄存器 DPTR 或 PC
变址寄存器 @A
该寻址方式常用于访问程序存储器,查表。
MOV A,@A + DPTR
这种寻址方式以程序计数器PC或DPTR为基址寄存器,累加器A为变址寄存器,变址寻址时,把两者的内容相加,所得到的结果作为操作数的地址。这种方式常用于访问程序存储器ROM中的数据表格,即查表操作。
变址寻址只能读出程序内存入的值,而不能写入,也就是说变址寻址这种方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。
- 位寻址
80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。
位寻址的范围,也就是哪些部份可以进行位寻址:
我们在学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。
- 相对寻址
把指令中给定的地址偏移量与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。