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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[资料] Thumb数据处理指令——算数运算指令

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

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

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

x

1.ADDSUB——低寄存器加法和减法

对于低寄存器操作,这2条指令各有如下3种形式:

2个寄存器的内容相加或相减,结果放到第3个寄存器中;

寄存器中的值加上或减去一个小整数,结果放到另一个不同的寄存器中;

寄存器中的值加上或减去一个大整数,结果放回同一个寄存器。

格式

op    RdRnRm

op    RdRn#expr3

op    Rd#expr8

其中: Rd               目的寄存器。它也用作“op Rd,#expr8的第1操作数。

       Rn                 1操作数寄存器

       Rm                2操作数寄存器

       Expr3            表达式或3位立即数,为取值在-7~+7范围内的整数。

       Expr8            表达式或8位立即数,为取值在-255~+255范围内的整数。

用法

expr3expr8为负值,则ADD指令汇编成相应的带正数常量的SUB指令,SUB指令汇编成相对应的带正数常量的ADD指令。指令中的RdRnRm必须是低寄存器。这些指令更新标志NZCV

例子

ADD       R3R1R5

SUB              R0R4#5

ADD       R7#201

2.ADD——高或低寄存器

将寄存器中值相加,结果送回到第1操作数寄存器。

格式

ADD       RdRm

其中:Rd       目的寄存器,也是第1操作数寄存器

       Rm         2操作数寄存器

用法

这条指令将RdRm中的值相加,结果放在RdRdRm可以是R0~R15中的任何一个,而不限于只是低寄存器若RdRm是低寄存器,则更新条件码标志NZCV。其他情况下不更新条件码标志。

注意:若RdRm都是低寄存器,则指令“ADD        RdRm”汇编成指令“ADD RdRdRm”。

例子

ADD       R12R4                      R12<-R12+R4

ADD       R10R11                    R10<-R10+R11

ADD       R0R8                        R0<-R0+R8

ADD       R2R4                        ;等价于“ADD   R2R2R4


3.ADDSUB——SP

SP加上或减去立即数常量

格式

ADD       SP,#expr

SUB              SP,#expr

其中:expr为表达式,取指(在汇编时)为在-508~+508范围内的4的整倍数。

用法

这条指令把expr的值加到SP的值上,结果放到SP中。这条指令不影响条件码标志。

注意:若expr为负值,则ADD指令汇编成相对的带正数常量的SUB指令,SUB指令会变成相应的带正数常量的ADD指令。

例子

ADD       SP,#312

SUB              SP,#96

4.ADD——PCSP相对偏移

PCSP值相加一个立即数常量,结果放入低寄存器。

格式

ADD       RdRp#expr

其中:Rd              目的寄存器,Rd必须在R0~R7范围内。

       Rp                 SPPC

       Expr                     表达式,取指为在0~1020范围内的4的整倍数。

用法

这条指令把expr加到Rp的值中,结果放入Rd。这条指令不影响条件码标志。

注意:若RpPC,则使用值是“(当前指令地址+4AND 0xFFFFFFC”,即忽略地址的低2位。这条指令不影响条件码标志。

例子

ADD              R6SP#64

ADD              R2PC#980

5.ADCSBCMUL

带进位标志的加法、带进位标志的减法和乘法

格式

op    RdRm

其中:Rd              目的寄存器,也是第2操作数寄存器;

              Rm         2操作数寄存器

用法

ADC将带进位标志的RdRm的值相加,结果放在Rd中。用这条子指令可组合成多字加法。

SBC考虑进位标志,从Rd的值中减去Rm的值,结果放入Rd中。用这条指令可组合成多字减法。

MUL进行RdRm的值的乘法,结果放入Rd中。

注意:在此操作过程中,RdRm必须是低寄存器(R0~R7.

ADCSBC更新标志NZCVMUL更新标志NZ.ARMV4及以前的结构中,MUL会使标志CV不正确。在ARMV5结构及以后的结构中,MUL不影响标志CV.

例子

ADC       R2R4                 R2<-R2+R4+C

SBC        R0R1                 R0<-R0-R1-(1-C),其中(1-C)是借位

MUL       R7R6                 R7<-R7*R6

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

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

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 03:57 , Processed in 0.014880 second(s), 6 queries , Gzip On, Redis On.

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