1,立即数寻址
例如:MOV A, #30H ;
立即数寻址的特点是,数据不是来自于数据区。
2,直接寻址
例如:MOV A, 30H;
直接寻址的数据来自于数据区,指令的参数是数据区地址。值得注意的是,立即寻址既可以是目的的,也可以是源的。即,立即寻址指令既可以是 MOV A, 30H; 也可以是 MOV 30H, A; 甚至还可以是 MOV 30H, 40H;
3,寄存器寻址
这里的“寄存器”指的是Bank Register。
例如:MOV R0, #30H;
4,寄存器间接寻址
这种寻址方式,寄存器里存储的是数据在数据区的地址。8052有一段数据空间称为IDATA,该段数据空间的地址范围是80~FF。若使用直接寻址,会访问到SFR区,因此应使用寄存器简介寻址访问该段数据。
例如:MOV @R0, #30H;
5,变址寻址
该寻址方式用于访问16-bit address bus连接的模块,即ROM、外部存储区。变址寻址确定目标地址的方法是:变址地址+基地址。其中ACC用作变址地址,PC或者DPTR作为基地址。
访问ROM区时,使用MOVC;访问外部存储区时,使用MOVX。
例如:MOVC A, @A+PC;
6,相对寻址
该寻址与变址寻址有些类似,不同之处在于,基地址为PC,跳转目的地由指令参数决定。
例如:SJMP 30H;
有一点需要注意,该指令的参数会被当作有符号数处理,因此指令的跳转范围是前后127 Bytes。指令执行完之后,新地址会被装载入PC。