ARM体系结构学习4
低位是否为1,%表示二进制
n
BIC
BIC
6. 比较指令 CMP
n
CMP R0,R1;
7. 多寄存器语句传输指令,LDM,STM
类似于一次传一个BUFFER到寄存器当中,或反过来.后面一般要接一个地址改变方法
n
LDMIA R0! ,{R3-R9}
LDMFD SP!,{R0-R7,PC}^;恢复现场,异常处理返回,^表示不允许在用户模式下使用。
n
STMIA R1!,{R3-R9}
STMFD SP!,{R0-R7,LR};
8. ARM指令的变形
大部分指令后位可以接
S,表示当前指令执行后把结果改写CPSR
subs,Adds
取决于具体条件,只有CPSR满足指定条件时才指这一指令
BEQ
addne
9. ARM指令的寻址方式
l
直接用寄存器编号来寻址,最为常用
l
即指令中的地址码是操作数本身,可以立即取出使用,立即数前带一个#表示,否则表示一个地址
SUBS R0,R0,#1
注意与SUBS R0,R0,1区别
l
这是ARM特有的寻址模式,当第2操作数是寄存器,在执行操作之前,可以做一次移位操作
MOV R0,R2,LSL #3
ANDS R1,R1,R2,LSL R3;RS的值左移R3位,然后和R1相与操作,结果放入R1
移位操作有LSL (逻辑左移),LSR(逻辑右移) ,ASR(算术右移),ROR(循环右移)RRX带扩展的循环右移
l
即寄存器中值是一个地址,用[]来取出定位到地址当中
l
把寄存器的地址值加上一个偏移量
LDR R2,[R3,#0x0F]; R3中的值加上0x0F,从这个地址取出值赋给R@
l
基址寻址的变形,由PC寄存器提供基准地址,指令中地址段作为偏移量.两者相加即是有效地址,以下是BL采用相对寻址
BL NEXT
…
NEXT
MOV PC,LR
10. ADS ARM的伪指令
l
全局变量定义
局域变量定义
变量赋值SETA,SETL,SETS
其中上述伪指令中,最后面的A表示给一个算术变量赋值,L表示用于给一个逻辑变量赋值,s表示给一个字符串赋值
GBLL codedbg;
Codebg SETL
LCLA bitno;
Bitno SETA 8
l
n
{label }
n
n
n
n
MAP 0x00,R9
Timer
Attrib
String
相当于C语言的定义:
struct {
DWORD Timer ;
DWORD Attrib ;
Char String[100];
} R9;
11. 杂项的伪指令
n
ALIGN;
n
NAME EQU expr {type}
n
INCLUDE lpc2106.inc
n
在汇编时会被ARM的空操作代替,比如MOV R0,R0,一般用于延时与占位。
n
IMPORT,EXTERN
n
格式
示例1:
示例2:
ARM体系结 相关文章:
- ARM体系结构研究(一)(11-28)
- ARM体系结构研究(11-28)
- ARM体系结构详解之ARM寄存器(11-21)
- ARM体系结构学习1(11-21)
- ARM体系结构学习3(11-21)
- ARM体系结构学习2(11-21)