所谓寻址方式, 就是寻找操作数地址的方式, 在用汇编语言编程时, 数据的存放、传送、运算都要通过指令来完成。 编程者必须自始至终都要十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去参与运算。
1,立即寻址
立即寻址方式是指操作数包含在指令字节中。 跟在指令操作码后面的数就是参加运算的数, 该操作数称为立即数。 立即数有一字节和二字节两种可能,。
例如指令: MOV A, #3AH
MOV DPTR, #0DFFFH
上述两条指令均为立即寻址方式, 第一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据指针DPTR中
2,直接寻址
在指令中直接给出操作数的地址, 这种寻址方式就属于直接寻址方式。在这种方式中, 指令的操作数部分直接是操作数的地址。
在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~7FH)。 (2) 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。
3,寄存器寻址
在该寻址方式中, 参加操作的数存放在寄存器里。寄存器包括8个工作寄存器R0~R7、累加器A、 寄存器B、数据指针DPTR和位累加器C。
例如: MOV A,R1 MOV B,R2 MOV DPTR,#8000H MOV SP, #60H MOV PSW, #00H
4,寄存器间接寻址
指令中给出间接寻址寄存器,其内容为操作数的地址。寻址内部RAM区的数据时,可使用寄存器R0、R1作为地址指针; 当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针。寄存器间接寻址符号为“@”,。
例如: MOV 30H, #20H MOV R0,#30H MOV A, R0 MOV A, @R0 MOVX A, @R0
5,基址寄存器加变址寄存器间接寻址
这种寻址方式用于访问程序存储器中的数据表格, 它以基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器A的内容作为操作数的地址。
例如: MOVC A, @A+DPTR MOVC A, @ A+PC
JMP @A+DPTR;散转指令
6,相对寻址
在MCS -51 指令系统中设有转移指令, 分为直接转移和相对转移指令, 在相对转移指令中采用相对寻址方式。这种寻址方式是以PC的内容为基本地址, 加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
7,位寻址
该种寻址方式中, 操作数是内部RAM单元中某一位的信息。 MOV C,30H