所谓寻址方式, 就是寻找操作数地址的方式, 在用汇编语言编程时, 数据的存放、传送、 运算都要通过指令来完成。 编程者必须自始至终都要十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。
在 MCS -51单片机指令系统中, 有以下 7种寻址方式:
(1) 立即寻址;
(2) 直接寻址;
(3) 寄存器寻址;
(4) 寄存器间接寻址;
(5) 基址寄存器加变址寄存器间接寻址;
(6) 相对寻址;
(7) 位寻址。
1. 立即寻址
立即寻址方式是指操作数包含在指令字节中。 跟在指令操作码后面的数就是参加运算的数, 该操作数称为立即数。 立即数有一字节和二字节两种可能, 例如指令:
MOV A, # 3AH
MOV DPTR, # 0DFFFH
上述两条指令均为立即寻址方式, 第一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据指针DPTR中(0DFH→DPH, 0FFH→DPL)。
2. 直接寻址
在指令中直接给出操作数的地址, 这种寻址方式就属于直接寻址方式。在这种方式中, 指令的操作数部分直接是操作数的地址。
在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 3 种存储器空间:
(1) 内部数据存储器的低 128 个字节单元(00H~7FH)。
(2) 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。
(3) 位地址空间。
3. 寄存器寻址
在该寻址方式中, 参加操作的数存放在寄存器里。寄存器包括8个工作寄存器R0~R7, 累加器A, 寄存器B、数据指针DPTR和布尔处理器的位累加器Cy。
4. 寄存器间接寻址
指令中给出间接寻址寄存器,其内容为操作数的地址。寻址内部RAM区的数据时,可使用寄存器R0、R1 (、SP)作为地址指针; 当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针。寄存器间接寻址符号为“@”
5. 基址寄存器加变址寄存器间接寻址
这种寻址方式用于访问程序存储器中的数据表格, 它以基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器A的内容作为操作数的地址, 例如: MOVC A, @A+DPTR
MOVC A, @ A+PC
JMP @A+DPTR;散转指令
6. 相对寻址
在MCS -51 指令系统中设有转移指令, 分为直接转移和相对转移指令, 在相对转移指令中采用相对寻址方式。这种寻址方式是以PC的内容为基本地址, 加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
7. 位寻址
该种寻址方式中, 操作数是内部RAM单元中某一位的信息。
立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器的间接寻址方式,相对寄存器寻址方式,基+变寻址方式,相对的基+变寻址方式
不同的芯片和厂家的产品,甚至同厂家但不同型号的可能都有可用的寻址方式数不同的,少的三五种,多的可到十多种,所以,你要具体到一个固定的型号上才好回答你这个问题,也所以,最好你去查询出厂厂家的该项型砂号的资料那才是最实在的.
CPU 芯片,有许多的型号。
不同的厂家不同的型号,甚至同厂家但不同型号,都有可能使用不同的寻址方式。
每种芯片的寻址方式,少的三五种,多的可到十多种。
所以,你要具体到一个固定的型号上才好回答你这个问题。
通常,学习《汇编语言 王爽著》这本书的学生,对汇编语言的概念,都十分模糊。
因为,王爽,他本人,恐怕也搞不清楚这些常识。
peterliu01 说的很好。