51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > ARM/CPLD/综合 > 详细内容
【ARM指令集】-移位指令
发布时间:2009/6/2  阅读次数:715  字体大小: 【】 【】【

来源:全民业务网     作者:不详

ARM 微处理器内嵌的桶型移位器(Barrel Shifter),支持数据的各种移位操作,移位操作在 ARM 指令集中不作为单独的指令使用,它只能作为指令格式中是一个字段,在汇编语言中表示为指令中的选项。例如,数据处理指令的第二个操作数为寄存器时,就可以加入移位操作选项对它进行各种移位操作。移位操作包括如下6 种类型, ASL 和 LSL 是等价的,可以自由互换:

— LSL 逻辑左移

— ASL 算术左移

— LSR 逻辑右移

— ASR 算术右移

— ROR 循环右移

— RRX 带扩展的循环右移

1、LSL(或ASL)操作

LSL(或ASL)操作的格式为:

通用寄存器, LSL (或 ASL ) 操作数

LSL(或ASL)可完成对通用寄存器中的内容进行逻辑(或算术)的左移操作,按操作数

所指定的数量向左移位,低位用零来填充。其中,操作数可以是通用寄存器,也可以是立即数( 0 ~ 31 )。

操作示例:

MOV R0, R1, LSL#2 ;将 R1 中的内容左移两位后传送到 R0 中。

2、LSR 操作

LSR 操作的格式为:

通用寄存器, LSR 操作数

LSR 可完成对通用寄存器中的内容进行右移的操作,按操作数所指定的数量向右移位,左端用零来填充。其中,操作数可以是通用寄存器,也可以是立即数( 0 ~ 31 )。

操作示例:

MOV R0, R1, LSR#2 ;将 R1 中的内容右移两位后传送到 R0 中,左端用零来填充。

3、ASR 操作

ASR 操作的格式为:

通用寄存器, ASR 操作数

ASR 可完成对通用寄存器中的内容进行右移的操作,按操作数所指定的数量向右移位,左端用第31 位的值来填充。其中,操作数可以是通用寄存器,也可以是立即数( 0 ~ 31 )。

操作示例:

MOV R0, R1, ASR#2 ;将 R1 中的内容右移两位后传送到 R0 中,左端用第 31 位的值来填充。

4、ROR 操作

ROR 操作的格式为:

通用寄存器, ROR 操作数

ROR 可完成对通用寄存器中的内容进行循环右移的操作,按操作数所指定的数量向右循环移位, 左端用右端移出的位来填充。其中,操作数可以是通用寄存器,也可以是立即数( 0 ~ 31 )。显然,当进行 32 位的循环右移操作时,通用寄存器中的值不改变。

操作示例:

MOV R0, R1, ROR#2 ;将 R1 中的内容循环右移两位后传送到 R0 中。

5、RRX 操作

RRX 操作的格式为:

通用寄存器, RRX 操作数

RRX 可完成对通用寄存器中的内容进行带扩展的循环右移的操作,按操作数所指定的数量向右循环移位,左端用进位标志位 C 来填充。其中,操作数可以是通用寄存器,也可以是立即数( 0 ~ 31 )。

操作示例:

MOV R0, R1, RRX#2 ;将 R1 中的内容进行带扩展的循环右移两位后传送到 R0 中。

  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号