导图社区 ARM Cortex-M3 基本指令
ARM Cortex-M3 基本指令的汇编语言,包含后缀:有s时,指令结果影响APSR标志位;无s时,指令结果对APSR标志位无影响;存储器操作指令:寄存器装载和存储、多寄存器装载和存储等。
社区模板帮助中心,点此进入>>
ARM Cortex-M3 基本指令
后缀
{s}
有s时,指令结果影响APSR标志位
无s时,指令结果对APSR标志位无影响
{type}
仅用于存储器操作指令LDR 和 STR
数据长度
B
字节
H
半字
是否经过带符号扩展
S
经过符号扩展
不进过符号扩展
{cond}
满足条件时执行指令
是否相等
标志位Z
Z=1
EQ
相等
Z=0
NE
不相等
无符号
有符号
.width
制定指令的子长
.N
强制汇编器生成16bit的指令机器码
.W
强制汇编器生成32bit的指令机器码
汇编器自动生成
D
双double数据
连续地址
L
长字64bit
branch with link
当前PC写入链接寄存器LR
X
寄存器间接寻址
前缀
U
存储器操作指令
寄存器装载和存储
LDR
装载
STR
存储
多寄存器装载和存储
LDM
STM
地址增减方式
IA
每次访问后自增:寄存器顺序
DB
每次访问前自减:寄存器逆序
!
地址回写
堆栈
PUSH
按编号逆序压栈
编号最大的先入栈,存入地址最高
POP
按编号顺序压栈
编号最小的先出栈,出栈前的地址最低
地址装载
ADR
将地址装入寄存器中
简单数据处理指令
加减
ADD
加
SUB
减
RSB
反向减
xxC
带进位
指令变形
ADC
SBC
逻辑运算
AND
与
ORR
或
EOR
异或
BIC
与非
ORN
或非
移位
ASR
算术右移 补符号位
LSL
逻辑左移 补0
LSR
逻辑右移 补0
ROR
循环右移
RRX
带进位循环右移
计数高位无效零0
CLZ
记录高位无效零的个数
比较
CMP
R1-R2
CMN
R1+R2=R1-(- R2)
比较并更新APSR,作为下一条指令的判断条件
数据移动
MOV
移动
MVN
逻辑非
MOVT
部分位数据移动
反序
REV
测试
TST
TEQ
逻辑运算,仅改变状态APSR,不保存计算结果
复杂数据处理指令
32bit乘加
MUL
乘
MLA
乘加
MLS
乘减
64bit乘加
除
DIV
结果取整,向0近似
饱和处理
SAT
位操作指令
多位赋值
BFC
多位清零
BFI
多位拷贝
多位提取
BFX
字节/半字扩展
XT
分支和控制指令
分支
比较分支
CBZ
比较跳转 if Rn=0
CBNZ
比较跳转 if Rn!=0
IT块
T
满足条件cond时执行
E
不满足条件时执行
查表分支指令
TB
跳转表是B/Hw类型