• 1、立即寻址 (immediate addressing ) 双字节指令,第一个字节是操作码,第二个字节是操作数,操作数在指令中直接给出,故称为立即数。 在立即数前面必须加上前缀“#”。 如:MOV DPTR,#1234H 1234H 是立即数,指令功能是把16 位立即数1234H 送到数据指针DPTR 中,如图。 • 注意: 立即寻址只能用于源操作数。 MOV A,#12H (√) MOV DPTR,#1200H (√) MOV #1200H,DPTR (×) • 2、直接寻址 (direct addressing) 在指令中直接给出操作数单元的地址。 如:MOV A,3AH 指令功能:把片内 RAM 中3AH 单元内的数据传送给累加器 A。如图所示: 直接寻址方式只能给出8 位地址,限于片内 RAM: (1)低 128 单元,在指令中直接以单元地址形式给出。 (2)特殊功能寄存器,在指令中直接以单元地址形式给出,还可以寄存器符号形式给出。 如:PUSH DPH==PUSH 83H。 直接寻址访问累加器 A 时,用ACC 表示累加器,以便与寄存器寻址方式区别。 • 3、寄存器寻址 (register addressing) 在指令中将指定寄存器的内容作为操作数。 寄存器寻址方式中,用寄存器名表示寄存器。 寻址范围:四组通用寄存器 Rn(R0~R7)、部分专用寄存器( A, B, DPTR,)。 如:INC R0 指令功能:把寄存器 R0 的内容加1,再送回 R0 中。 • 4、寄存器间接寻址 (register indirect addressing ) 在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。 在该寻址中,寄存器的名称前需加前缀“@”。 例如,指令MOV A,@R0 指令功能:若 R0 寄存器的内容是3AH,指令的功能是以 3AH 为地址,将 3AH 地址单元的内容送到累加器 A 中。如下图: • 寄存器间接寻址的寻址范围: (1)片内 RAM 的低 128 单元,只能采用R0 或 R1 为间接寻址寄存器。其形式为@Ri(i=0,1),如MOV A,@R0。 (2)片外 RAM 的 64KB 单元,使用DPTR 作为间接寻址寄存器。例如,MOVX A,@DPTR。 (3)片外 RAM 的低 256 单元,使用R0 或 R1 作为间接寻址寄存器。 (4)堆栈区:堆栈操作指令PUSH 和 POP,以 SP 作间接寻址寄存器(隐含 SP)。 • 5、相对寻址 (relative addressing ) 仅用于相对转移指令。 以PC 的当前值(即相对转移指令执行后PC 的内容),加上指令中给出的偏移量...