嵌入式系统学习笔记【华电】——《第四章 ARM指令集与编程》

第四章 ARM指令集与编程

1、ARM指令集

ARM的指令长度:
(1)32位(ARM状态)
(2)16位(Thumb状态)

ARM指令集的特点:
(1)向后兼容
(2)load-store结构

指令格式,一般采用3地址指令格式

指令  Rd,Rs1,Rs2

ARM指令的分类:
(1)数据处理指令
(2)数据传送指令
(3)控制流指令

(4)软件中断指令
(5)程序状态寄存器指令
(6)协处理器指令

数据处理指令

M O V    r 0 , r 2                   ( r 0 ← r 2 ) MOV\ \ r0,r2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (r0 \leftarrow r2) MOV  r0,r2                 (r0r2)
可以使用桶形移位器,想把最后一个操作数进行移位操作,再进行处理
M O V    r 0 , r 2 , L S L   # 2                   ( r 0 ← ( r 2 ≪ 2 ) ) MOV\ \ r0,r2,LSL\ \#2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (r0 \leftarrow (r2\ll2)) MOV  r0,r2,LSL #2                 (r0(r22))
(1)LSL:逻辑左移
(2)LSR:逻辑右移
(3)ASL:算术左移
(4)ASR:算术右移
A D D    r 1 , r 2 , r 3 , L S L   r 4                   ( r 1 ← r 2 + 2 r 4 ⋅ r 3 ) ADD\ \ r1,r2,r3,LSL\ r4\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (r1 \leftarrow r2+2^{r4}\cdot r3) ADD  r1,r2,r3,LSL r4                 (r1r2+2r4r3)

改变条件标志码(N、Z、C、V等):
(1)使用CMP指令,一般除了这条指令都不影响状态寄存器
(2)再数据处理指令后面加上S,例如 A D D S ADDS ADDS,强制要求改变状态寄存器
一个玩具程序,实现多分支
C M P    r 0 , # 0 M O V E Q    r 1 , # 0 M O V G T    r 1 , # 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值