在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 3111|回复: 0

[资料] Thumb数据处理指令——移位和循环移位操作(ASR、LSL、LSR和ROR)

[复制链接]
发表于 2016-1-13 17:35:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

Thumb指令集中,移位和循环移位作为独立的指令,对寄存器的内容进行移位和循环移位操作。这些指令可使用寄存器中的值或立即数来表示移位量。

格式

op          Rd,Rs

op           Rd,Rm,#expr

其中,op是下列情况之一:

ASP算数右移,将寄存器中的内容看作补码形式的有符号整数。将符号位拷贝到空出的位。

LSL逻辑左移,空出的位用0填充。

LSR逻辑右移,空出的位用0填充。

ROR循环右移,将寄存器右端移出的位循环移回到左端。注意,ROR仅能与寄存器控制的移位一起使用,也即它只能用第一种格式。

Rd          目的寄存器,它也是第1操作数寄存器。Rd必须在R0~R7范围内。

Rs           包含移位量的寄存器,Rs必须在R0~R7范围内。

Rm         存放源操作数的寄存器,Rm必须在R0~R7范围内。

expr        立即数移位量。它是一个取值为整数的表达式。整数的范围如下:若opLSL,则为0~31;其他情况则是1~32.

用法

对于寄存器控制移位的指令,也即是寄存器存放移位位数,这些指令从Rd中取值,并对其进行移位,结果放回Rd。只有Rs的最低有效字节可用作移位量。

对于除ROR以外的所有指令,若移位量为32,则Rd0,最后一处的位保留在标志C中,并根据结果影响NZ标志位。若移位量大于32,则Rd和标志C均被清0,并根据结果影响NZ标志位。

对于ROR指令,若移位量为32,则Rd不变且不影响标志位,若移位量大于或小于32时,则最后移出的位都将存入到C中,并根据结果影响NZ标志位。

对于立即数移位的指令,指令从Rm取指,并对其进行移位,结果放到Rd中。

注意:这些指令根据结果更新标志NZ,且不影响标志V。对于标志C,若移位量是0,则不受影响;若移位量不是0且移位量在允许的范围中,则C包含源寄存器的最后移出的位。

例子

ASR              R3R5                               ;将R3中的值算数右移[R5]次后的值再放入R3

LSR        R0R2#6                        ;将R2中的值逻辑右移6次后的值放入R0

LSR        R5R5zyb                      zyb必须在汇编时取指为1~32范围内的整数

LSL        R0R4#0                        ;将R4的内容放到R0中,除了不影响标志CV外,同“MOV     R0R4

ROR       R2R3                               ;R2中的值循环右移[R3]次后再存入R2

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-10 20:59 , Processed in 0.013503 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表