Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27698
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-08 11:22
文章分类
文章存档

2015年(1)

2014年(22)

我的朋友

分类: 嵌入式

2014-06-09 16:27:23

1LSL(或ASL)操作

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

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

LSL(或ASL)可完成对通用寄存器中的内容进行逻辑(或算术)的左移操作,按操作数所指定的数量向左移位,低位用零来填充。其中,操作数可以是通用寄存器,也可以是立即数(031)。

操作示例

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

2LSR操作

LSR操作的格式为:

通用寄存器,LSR 操作数     

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

操作示例:

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

3ASR操作

ASR操作的格式为:

通用寄存器,ASR 操作数     

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

操作示例:

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

4ROR操作

ROR操作的格式为:

通用寄存器,ROR 操作数     

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

操作示例:

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

5RRX操作

RRX操作的格式为:

通用寄存器,RRX 操作数     

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

操作示例:

MOV   R0, R1, RRX#2             ;将R1中的内容进行带扩展的循环右移两位后传送到R0中。
阅读(1973) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~