电气知识|ARM指令的寻址方式

   更新日期:2017-03-26     来源:建材之家    作者:安防之家    浏览:70    评论:0    
核心提示:所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下几种常见的寻址方式。一、立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:ADD R0,R0,#1 ;R0←R0+1ADD R0,R

挤塑板的规格型号有哪些?

推荐简介:挤塑板的规格型号总的来说比较多,但是型号不复杂,如果排除了厚度的区别,那么保温隔热挤塑板的规格型号也就那么几个。外墙挤塑板、屋面挤塑板、室内用作地垫的铺垫宝、地垫宝,包括专门用作地暖的隔热保温板,长宽为1.2米*0.6米,没有特殊要求那这个就是统一型号,除非在安装使用的过程中 ,哪个墙角或拼接下来差那么一点需要切割开使用除外。1.2米*0.6米的板子,好运输好安装,长宽比2:1,两块板子就能拼接......
安防之家讯:所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下几种常见的寻址方式。

一、立即寻址

立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:

ADD R0,R0,#1 ;R0←R0+1

ADD R0,R0,#0x3f ;R0←R0+0x3f

在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”或“&”。

二、寄存器寻址

寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:

ADD R0,R1,R2 ;R0←R1+R2

该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。

三、寄存器间接寻址

寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:

ADD R0,R1,[R2] ;R0←R1+[R2]

LDR R0,[R1] ;R0←[R1]

STR R0,[R1] ;[R1]←R0

在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中。

第二条指令将以R1的值为地址的存储器中的数据传送到R0中。

第三条指令将R0的值传送到以R1的值为地址的存储器中。

四、基址变址寻址

基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:

LDR R0,[R1,#4] ;R0←[R1+4]

LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4

LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4

LDR R0,[R1,R2] ;R0←[R1+R2]

在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。

在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。

在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。

在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中。

五、多寄存器寻址

采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令:

LDMIA R0,{R1,R2,R3,R4} ;R1←[R0]

;R2←[R0+4]

;R3←[R0+8]

;R4←[R0+12]

该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1~R4。

六、相对寻址

与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:

BL NEXT ;跳转到子程序NEXT处执行

……

NEXT

……

MOV PC,LR ;从子程序返回

七、堆栈寻址

堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。

当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。

同时,根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式,ARM微处理器支持这四种类型的堆栈工作方式,即:

- 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。

- 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。

- 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。

- 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/
小程序码
 
打赏
 
更多>文章标签:安防
更多>同类安防监控资讯
0相关评论

推荐图文更多...
点击排行更多...
安防监控商机更多...
安防监控圈更多...
最新视频更多...
推荐产品更多...
天花之家 | 木门之家 | 灯具之家 | 铁艺之家 | 幕墙之家 | 五金头条 | 楼梯头条 | 墙纸头条 | 壁纸头条 | 玻璃头条 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号
(c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved
Powered by 安防之家