打印
[经验分享]

CORTEX-M3汇编指令集

[复制链接]
138|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jonas222|  楼主 | 2024-1-13 12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、数据传送类
1.1、寄存器间传送
MOV R0, R1 ; R1->R0
MVN R0,R1 ; R1取反->R0
1.2、寄存器和存储之间传送
LDR R0,[R1,#offset] ; 加载R1+offset指向的数据到R0(存储到寄存器)
STR R0,[R1,#offset] ; 存储R0中的数据到R1+offset指向的数据空间
字节,半字,双字传送
LDRB,LDRH,LDRD
STRB,STRH,STRD
1.3、寄存器和存储之间的多字传送
LDMIA R0!,{寄存器列表} ;加载R0指向的数据到寄存器列表,加载后R0自增
STMDB R0!,{寄存器列表} ;把寄存器中的内容依次传送到R0指向的地址, R0先自减再传送
感叹号用于预索引和后索引(省略)
LDR.W R0, [R1, #20]! ;预索引 先自增后传送
STR.W R0, [R1], #-12 ;后索引 先传送后自增
1.4、立即数传送
LDR R0,=imp32 ;
LDR和ADR的区别

二、数据操作指令
2.1、四则运算指令

ADD Rd,Rn,Rm ;Rd = Rn + Rm
ADC Rd,Rn,Rm ;Rd = Rn + Rm + C

SUB Rd,Rn,Rm ;Rd = Rn - Rm
SBC Rd,Rn,Rm ;Rd = Rn - Rm - C
RSB Rd,Rn,Rm ;Rd = Rm - Rn

MUL Rd,Rn,Rm ;Rd = Rn * Rm
MLA Rd,Rn,Rm,Ra ;Rd = Ra + Rn * Rm
MLS Rd,Rn,Rm,Ra ;Rd = Ra - Rn * Rm

UDIV Rd,Rn,Rm ;Rd = Rn/Rm
SDIV Rd,Rn,Rm ;Rd = Rn/Rm

SMULL RL,RH,Rm,Rn ;[RH:RL] = Rm * Rn
SMLAL RL,RH,Rm,Rn ;[RH:RL] += Rm * Rn
UMULL RL,RH,Rm,Rn ;[RH:RL] = Rm * Rn
UMLAL RL,RH,Rm,Rn ;[RH:RL] += Rm * Rn

2.2、逻辑操作指令

AND Rd,Rn,Rm ;Rd = Rn & Rm
ORR Rd,Rn,Rm ;Rd = Rn | Rm
BIC Rd,Rn,Rm ;Rd = Rn & ~Rm
ORN Rd,Rn,Rm ;Rd = Rn | ~Rm
EOR Rd,Rn,Rm ;Rd = Rn ^ Rm

还有都适用的两种形式
AND Rd,Rn
AND Rd,Rn,#imm12


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

1151

帖子

0

粉丝