LDR指令
2013-08-01 23:56
141 查看
基本用法:
LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个
地址偏移量。地址偏移量有以下3种格式:
立即数。
立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,#0x12] ;R1<-[R0+0x12]
寄存器。
寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2] ; R1<-[R0+R2]
LDR R1,[R0,-R2]
; R1<-[R0-R2]
寄存器及移位常数。
寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2,LSL
#2] ;R1<-[R0+R2*4]
从寻址方式的地址计算方法分,加载/存储指令有以下4种格式:
零偏移。 如:LDR Rd,[Rn]
前索引偏移。 如:LDR Rd,[Rn,#0x04]!
程序相对偏移。 如:LDR Rd,labe1
后索引偏移。 如:LDR Rd,[Rn],#-0x04
注意:必须保证字数据操作的地址是32位对齐的。
与伪指令的区别:
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。
(1)LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR 伪指令用于加载立即数或一个地址值到指定寄存器.
*如果name是立即数的话:LDR R0,=0X123;//将0X123存入R0
*如果name是个标识符:LDR R0,=NAME;//将NAME的地址存入R0
相当于: LDR R0,LABEL;
当然,两者的前提都是LABEL DCB NAME;//分配内存并用NAME初始化(LABEL为内存的起始地址?)
(2)LDR R1,[R0] ;如果没有等号,LDR 指令用于从内存中读取数据放入寄存器中.该指令是 将R0 地址处的数据读出,保存到R1 中(零偏移)。
LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个
地址偏移量。地址偏移量有以下3种格式:
立即数。
立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,#0x12] ;R1<-[R0+0x12]
寄存器。
寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2] ; R1<-[R0+R2]
LDR R1,[R0,-R2]
; R1<-[R0-R2]
寄存器及移位常数。
寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2,LSL
#2] ;R1<-[R0+R2*4]
从寻址方式的地址计算方法分,加载/存储指令有以下4种格式:
零偏移。 如:LDR Rd,[Rn]
前索引偏移。 如:LDR Rd,[Rn,#0x04]!
程序相对偏移。 如:LDR Rd,labe1
后索引偏移。 如:LDR Rd,[Rn],#-0x04
注意:必须保证字数据操作的地址是32位对齐的。
与伪指令的区别:
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。
(1)LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR 伪指令用于加载立即数或一个地址值到指定寄存器.
*如果name是立即数的话:LDR R0,=0X123;//将0X123存入R0
*如果name是个标识符:LDR R0,=NAME;//将NAME的地址存入R0
相当于: LDR R0,LABEL;
当然,两者的前提都是LABEL DCB NAME;//分配内存并用NAME初始化(LABEL为内存的起始地址?)
(2)LDR R1,[R0] ;如果没有等号,LDR 指令用于从内存中读取数据放入寄存器中.该指令是 将R0 地址处的数据读出,保存到R1 中(零偏移)。
相关文章推荐
- LDR指令和LDR伪指令
- arm 汇编指令:内存访问方式 、STR 、LDR 指令
- [ARM]ldr和 adr/adrl 伪指令的区别
- LDR伪指令与LDR加载指令
- ARM指令ADR和LDR浅析
- ARM MOV和 LDR指令关系
- LDR,STR指令的用法
- arm指令中mov和ldr的区别
- LDR指令详解
- LDR的用法(ARM指令及伪指令)
- ARM中LDR伪指令与LDR加载指令
- arm指令中mov和ldr有什么区别
- LDR指令和LDR伪指令区别
- ARM中LDR伪指令与LDR加载指令
- LDR (PC-relative)指令详解----加载PC相对标号所代表的地址处的内存内容到寄存器中
- LDR指令和LDR伪指令区别
- ARM中的ldr指令(发现有些网友说的是错的啊)
- arm指令中mov和ldr及ldr伪指令的区别
- 关于adr和ldr指令的理解
- ARM汇编ADR,LDR等伪指令