找回密码
 注册
关于网站域名变更的通知
查看: 449|回复: 2
打印 上一主题 下一主题

ARM汇编指令介绍

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-25 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
ARM汇编指令介绍
, ?6 \' v! V: d0 x* c: |
, v9 t: ^, K% P$ z  o8 {
1、 内存访问指令
基本指令:
LDR:memory -> register (memory包括映射到内存空间的非通用寄存器)
STR:register  -> memory
语法:
op{cond }{B}{T} Rd , [Rn ]
op{cond }{B} Rd , [Rn , FlexOffset ]{!}
op{cond }{B} Rd , label
op{cond }{B}{T} Rd , [Rn ], FlexOffset
op:基本指令,如LDR、STR
cond:条件执行后缀
B:字节操作后缀
T:用户指令后缀
Rd:源寄存器,对于LDR指令,Rd将保存从memory中读取的数值;对于STR指令,Rd保存着将写入memory的数值
Rn:指针寄存器
FlexOffset:偏移量
例子:
ldr r0, [r1] ;r1作为指针,该指针指向的数存入r0
str r0, [r1, #4] ;r1+4作为指针,r0的值存入该地址
str r0, [r1, #4]! ;同上,并且r1 = r1 + 4
ldr r1, =0x08100000 ;立即数0x08100000存到r1
ldr r1, [r2], #4 ;r2+4作为指针,指向的值存入r1,并且r2=r2+4
【label的使用】
addr1 ;定义一个名为“addr1”的label,addr1 = 当前地址
dcd 0 ;在当前地址出定义一个32bit的变量
~ ~ ~
ldr r1, label1     ;r1 = addr1,r1即可以作为var1的指针
ldr r0, [r1]
add r0, r0, #1
str r0, [r1] ;变量var1的值加1
【FlexOffset的使用】
FlexOffset可以是立即数,也可以是寄存器,还可以是简单的表达式

* L# q! a1 r3 {' {: b( J
游客,如果您要查看本帖隐藏内容请回复
+ p- g' Q2 K  k. H$ b  o! i6 n1 e
/ H2 f- m+ I' z2 S
- ?+ i3 b, e+ H$ t# [# ?! T; R

该用户从未签到

3#
发表于 2018-10-25 17:26 | 只看该作者
厉害了楼主,是老程序员吧?一本好书《ARM体系结构与编程》,耐住性子看完的人可能不多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-21 15:56 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表