导航| 欢迎访问商讯网
综合商讯
当前位置: 商讯网 > 综合商讯 >

ARM微处理器所支持的移位指令(操作)


投稿: tkseo  2014-01-17 15:35:22  来源:  我要评论(0 ) 访问次数 
 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中
 
  文章由A9开发板供应商小编原创,转载请注明文章来源出处,谢谢合作!
分类: 综合商讯   关键词微处理器支持移位
分享到:  
20.9K
栏目导航
热门标签
图片推荐