15_ARM汇编自学笔记指令系统之移位指令(操作)
来源:互联网 发布:淘宝权是哪个战队的 编辑:程序博客网 时间:2024/04/29 14:24
移位指令(操作)
ARM微处理器内嵌的桶型移位器(Barrel Shi f t er),支持数据的各种移位操作,移位操作在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 中。
- 15_ARM汇编自学笔记指令系统之移位指令(操作)
- 08_ARM汇编自学笔记指令系统之跳转指令
- 09_ARM汇编自学笔记指令系统之数据处理指令
- 12_ARM汇编自学笔记指令系统之加载存储指令
- 14_ARM汇编自学笔记指令系统之数据交换指令
- 16_ARM汇编自学笔记指令系统之协处理器指令
- 17_ARM汇编自学笔记指令系统之异常产生指令
- 10_ARM汇编自学笔记指令系统之乘法指令与乘加指令
- 11_ARM汇编自学笔记指令系统之程序状态寄存器访问指令
- 13_ARM汇编自学笔记指令系统之批量数据加载存储指令
- 06_ARM汇编自学笔记指令系统之分类与格式
- 07_ARM汇编自学笔记指令系统之寻址方式
- 01_ARM汇编自学笔记之介绍
- 18_ARM汇编自学笔记程序设计之符号定义&数据定义伪指令
- 19_ARM汇编自学笔记程序设计之汇编控制
- 20_ARM汇编自学笔记程序设计之汇编格式
- 关于微机CPU的指令系统-----指令系统(移位操作指令)
- 03_ARM汇编自学笔记模型之处理器模式
- 14_ARM汇编自学笔记指令系统之数据交换指令
- 项目启动时,控制台不停的输出log日志。
- oracle数据库管理工具
- 连不上adb
- AndroidStudio中使用Aliyun Maven
- 15_ARM汇编自学笔记指令系统之移位指令(操作)
- 欢迎使用CSDN-markdown编辑器
- ORACLE储存过程合并数组
- 基于邻接链表的图的广度优先搜索Java实现
- webserver调用
- 国外牛人总结的机器学习领域的框架、库以及软件
- 复数类 Complex
- springBoot 整合log4j2
- 16_ARM汇编自学笔记指令系统之协处理器指令