您的位置 首页 观点

ARM 汇编&ARM 指令集

ARM处理器寻址方式1、寄存器寻址操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值操作MOVR1,

ARM 处理器寻址方法

1、寄存器寻址

操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值操作

MOV R1,R2 ;R2 -> R1
SUB R0,R1,R2 ;R1 – R2 -> R0

2、当即寻址

地址码部分便是操作数,(操作数)当即数就在指令中

SUBS R0,R0,#1 ;R0 – 1 -> R0
MOV R0,#0xff00 ;0xff00 -> R0

3、寄存器偏移寻址

MOV R0,R2,LSL #3 ;R2 的值左移3 位,成果放入R0,即R0 = R2 * 8
ANDS R1,R1,R2,LSL R3 ;R2 的值左移R3 位,然后和R1 相与操作,成果放入R1

4、寄存器直接寻址

寄存器为操作数的地址指针

LDR R1,[R2] ;将R2 中的数值作为地址,取出此地址中的数据保存在R1 中
SWP R1,R1,[R2];将如中的数值作为地址,取出此地址中的数值与R1 中的值交流

5、基址寻址

将基址寄存器的内容与偏移量相加,构成操作数的有用地址,用于拜访寄存器邻近存储单元

LDR R2,[R3,#0x0F] ;将R3 中的数值加0x0F 作为地址,取出此地址的数值保存在R2 中
STR R1,[R0,#-2] ;将R0 中的数值减2 作为地址,把R1 中的内容保存到此地址方位

6、多寄存器寻址

多寄存器寻址便是一次能够传送几个寄存器值,答应一条指令传送 16 个寄存器的任何子集或一切寄存器。

LDMIA R1!,{R2-R7,R12} ;将R1 单元中的数据读出到R2-R7,R12,R1 主动加1
STMIA R0!,{R3-R6,R10};将R3-R6,R10 中的数据保存到R0 指向的地址,R0 主动加1

7、仓库寻址

仓库是特定次序进行存取的存储区,操作次序分为“后进先出”和“先进后出”,
仓库寻址时隐含的,它运用一个专门的寄存器(仓库指针)指向一块存储区域(仓库),
指针所指向的存储单元便是仓库的栈顶。存储器仓库可分为两种:
向上成长:向高地址方向成长,称为递加仓库
向下成长:向低地址方向成长,称为递减仓库
仓库指针指向最终压入的仓库的有用数据项,称为满仓库;仓库指针指向下一个要
放入的空方位,称为空仓库。这样就有4 中类型的仓库表明递加和递减的满仓库和空堆
栈的各种组合。
满递加:仓库经过增大存储器的地址向上增加,仓库指针指向内含有用数据项的
最高地址。指令如LDMFA,STMFA 等。
空递加:仓库经过增大存储器的地址向上增加,仓库指针指向仓库上的第一个空
方位。指令如LDMEA,STMEA 等。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/259387.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部