ARM寻址方式
定义
处理器根据指令中给出的信息来找到所需操作数的方式
立即数寻址:
操作数本身就在指令中给出,只需要取出指令就得到了操作数的方式。(操作数称为立即数)
ADD R0, R0, #0X3F; //R0 = R0 +3F
第二个数就是操作数,需要用#来作为前缀
寄存器寻址:
操作数存在寄存器中,利用寄存器中的数值作为操作数
ADD R0, R1, R2; //R0 = R1 + R2
寄存器间接寻址
寄存器中存放的是操作数在内存中的地址
LDR RO, [R2]; //R0 = R2
内存中第1000这个地址存放的是数据5,寄存器间接寻址就是在寄存器中放入的需要的数据在内存里面的地址
基址变址寻址
将寄存器里面的内容(基地址)与指令中给出的地址偏移量想加,从而得到操作数在内存中的地址。
LDR RO, [R2,#4]; //R0 = 【R2 +4】
内存中第1004这个地址存放的是数据5,基址变址寻址就是在寄存器中放入的地址加上偏移量得到的就是存放数据的地址。
相对寻址
与基址变址寻址相类似
相对寻址:PC指针当前的值为基地址,指令中的地址编号,作为偏移量,将两址想加之后得到的操作数作为有效地址。
BL Next 跳转到子程序Next出执行
Next
Mov PC ,LR 从子程序中返回