8051(2) -- 寻址方式

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。

原文地址:https://www.cnblogs.com/freshair_cnblog/p/6063693.html