EDA365电子论坛网

标题: ARM汇编指令介绍 [打印本页]

作者: House    时间: 2018-10-25 13:41
标题: ARM汇编指令介绍
ARM汇编指令介绍

* x' i  U& W/ h
& R, ]! D& Q: @' U
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可以是立即数,也可以是寄存器,还可以是简单的表达式
' r: i8 l5 p* |7 p1 M- c2 M3 |9 y

: w0 i/ G8 m- |' Q; T0 J  o

/ g- H7 P; Z+ p9 w' u, }4 t. h
: R) L; e% `' s8 a. D

作者: 如意qq    时间: 2018-10-25 16:47
看看
作者: ArthurGXH    时间: 2018-10-25 17:26
厉害了楼主,是老程序员吧?一本好书《ARM体系结构与编程》,耐住性子看完的人可能不多。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2