目录
3.1 ARM寻址方式
汇编语言指令:
由操作码和操作数两部分组成
操作码:
指示指令要执行的具体操作。用助记符表示
操作数:
指出指令执行过程中的操作对象。用符号或符号地址表示
寻址方式:
微处理器根据指令中由操作数给出的地址信息,来寻找真实物理地址的方式
ARM处理器八种基本寻址方式:
- 寄存器寻址
- 立即寻址
- 寄存器偏移寻址
- 寄存器间接寻址
- 基址寻址
- 多寄存器寻址
- 堆栈寻址
- 相对寻址
寄存器寻址:
操作数给出的是寄存器编号
MOV R1,R2
SUB R0,R1,R2
立即寻址:
操作数是数据本身
SUBS R0,R1,#1 ;R0=R0-1
MOV R0,#0xFF000 ;立即数0xFF000装入R0寄存器
寄存器偏移寻址:
操作数在使用前,先执行移位操作
MOV R0,R2,LSL #3 ;R2的值左移三位放入R0
ANDS R1,R1,R2,LSL R3 ;R2的值左移三位,然后和R1与,结果放入R1
寄存器间接寻址:
操作数给出的是[寄存器编号],按寄存器内地址寻址找到真正操作数
LDR R0,[R2] ;
SWP R1,R1[R2] ;将寄存器R1的值和R2指向的存储单元的内容交换
基址寻址:
将基址寄存器的内容与指令中给出的偏移量相加,形成有效地址
LDR R2,[R3,#0x0C] ;读取R3+0x0C指向的存储单元的内容,放入R2
STR R1,[R0,#-4]! ;把R1的值保存到R0-4指向的存储单元
多寄存器寻址:
一次可传送几个寄存器值
LDMIA R1!,{R2-R4,R6} ;将R1指向的顺序存储单元中的数据读出到R2~R4、R6,且每读取一
次,R1自动加四
STMIA R0!,{R2-R7,R12} ;将寄存器R2~R7、R12的值保存到R0指向的顺序存储单元,且每保
存一次,R1自动加四
堆栈寻址
相对寻址:
基址寻址的一种变通,由PC提供基准地址,操作数为偏移量,相加得到有效地址
BL SUBRI ;
SUBR1
MOV PC,R14 ;