立即数寻址:
操作数本身就在指令中
例子: ADD R0,R0,#0X3F(注意: 立即数需要在数据前面加上一个 #号)
寄存器寻址:
利用寄存器中的数值作为操作数, 数据存在寄存器中
例子: ADD R0,R1,R2
寄存器间接寻址:
数据存放在内存中, 寄存其中存放的不是操作数本身, 而是其在内存中的地址通常需要加上一个[]
例子: LDR R0,[R2]
基地址变址寻址:
就是将寄存器里面的内容 (基地址) 与指令中给出的的地址偏移量相加, 从而得到操作数在内存中的地址
例子: LDR R0,[R1,#4]
注意: R1 中存放的是一个基地址
相对寻址:
与基址变址寻址相类似, 相对寻址 PC 指针的当前值为基地址指令中的地址标号作为偏移量, 将两者相加后得到操作数的有效地址
例子: BL NEXT ; 跳转到子程序 NEXT 处执行
- ............
- NEXT:
- ............
MOV PC, LR ; 从子程序返回
来源: http://www.bubuko.com/infodetail-2529784.html