• 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 指令功能:若 R