常用ARM汇编指令

常用ARM汇编指令

EQU

给数字变量取一个符号名, 相当于define

AREA

汇编一个新的代码段或者数据段

SPACE

分配内存空间

PRESERVE8

当前文件栈需要8字节对齐

EXPROT

声明一个标号具有全局属性, 可被外部文件使用

DCD

以字为单位分配内存, 要求4字节对齐, 并要求初始化这些内存

PROC

定义子程序, 与ENDP成对使用, 表示子程序结束

WEAK

弱定义, 如果外部文件声明了一个标号, 则优先使用外部文件定义的标号, 如果外部文件没有定义也没有出错. 要注意的是 : 这个不是ARM的指令,是编译器的指令

IMPORT

声明标号来自外部文件, 与EXTERN关键字相似

B

跳转到一个标号

ALIGN

编译器对指令或者数据的存放进行对齐, 一般需要跟一个立即数, 缺省表示4字节对齐, 要注意 : 这不是ARM指令, 是编译器指令

END

到达文件末尾, 文件结束

IF,ELSE,ENDIF

汇编的条件分支语句

MRS

加载特殊功能寄存器的值到通用寄存器

MSR

加载通用寄存器的值到特殊寄存器

CBZ

比较, 如果结果为0就转移

CBNZ

比较, 如果结果是非0就转移

LDR

从储存器加载字到一个寄存器中

LDR[伪指令]

加载一个立即数或者一个地址值到一个寄存器. 举例 : LDR Rd, = label, 如果label是一个立即数, 那么Rd就是立即数, 如果label是一个标识符, 如指针, 那么存到Rd的就是label这个标识符的地址

LDRH

从储存器加载半字到一个寄存器

LDRL

从储存器加载一个字节到寄存器

STR

把一个寄存器按字存储到储存器

STRH

把一个寄存器的低半字存储到储存器

STRB

把一个寄存器的低字节存储到储存器

LDMIA

将多个字从储存器加载到CPU寄存器, 先操作, 指针再递增

STMDB

将多个字从CPU寄存器加载到储存器, 指针先递减, 再操作

LDMFD

ORR

按位或

BX

直接跳转到由寄存器给定的地址

BL

跳转到标号对应的地址, 并且把跳转之前的下条指令地址保存到LR

BLX

跳转到由寄存器REG给出的地址, 并根据REG的LSB切换处理器状态, 还要把转移前的下一条指令地址保存到LR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值