ARM Cortex-M0 指令集---数据操作指令-减法指令(3)

 文章目录
概要

下表为减法指令的汇编程序和一条指令所需要的周期数:

序号描述汇编程序所需要的机器周期
1Lo to LoSUBS Rd,Rn,Rm1
23-bit immediateSUBS Rd,Rn,#<imm1>1
38-bit immediateSUBS Rd,Rd,#<imm2>1
4With carrySBCS Rd,Rd,Rm1
5Immediate from SPSUB SP,SP,#<imm3>1
6NegateRSBS Rd,Rn,#01

注:1、指令后加后缀S表示指令操作完成后需要更新APSR寄存器中对应的标志

       2、Rd、Rn、Rm只能是R0-R7寄存器中的一个

       3、<imm3>的取值范围为0-508,必须是4的整数倍

举例说明

1、SUBS Rd,Rn,Rm    将Rn寄存器的内容减去Rm寄存器的内容,结果保存在寄存器Rd中,并且更新寄存器APSR中的 N、Z、C 和V标志

MOVS R0,#0X2
MOVS R1,#0XF1
SUBS R2,R1,R0

仿真如下,一个时钟周期后,R2寄存器得到相应的值,此时相减操作出现借位,借位标志置位

2、SUBS Rd,Rn,#<imm1>   将Rn寄存器的内容减去3bit的立即数#imm1,结果保存在寄存器,并且更新寄存器APSR中的 N、Z、C 和V标志

MOVS R1,#0X2
SUBS R0,R1,#0X7

仿真如下,一个时钟周期后,R2寄存器得到相应的值,此时相减操作出现复数,复位标志置位

3、SUBS Rd,Rd,#<imm2>   将Rd寄存器的内容减去8bit的立即数#imm2,结果保存在寄存器Rd中,并且更新寄存器APSR中的 N、Z、C 和V标志

MOVS R1,#0X12
SUBS R1,R1,#0X8

仿真如下,一个时钟周期后,R1寄存器得到相应的值,此时相减操作出现借位,借位标志置位

4、SBCS Rd,Rd,Rm   将 Rd 寄存器的内容与Rm 寄存器的内容和借位标志相减,结果保存在寄存器Rd中,并且更新寄存器APSR中的 N、Z、C 和V标志

MOVS R0,0X1F
MOVS R1,#0X12
SUBS R1,R1,#0X8
SBCS R0,R0,R1

5、SUB SP,SP,#<imm3>   将SP寄存器的内容减去立即数#imm3,结果保存在SP寄存器中

SUBS SP,SP,#0X8

仿真如下,此时使用的是MSP指针,可以看到在一个时钟周期后MSP寄存器的值减少了8

6、RSBS Rd,Rn,#0    将数字0减去Rn寄存器的内容,结果保存在寄存器Rd中,并且更新寄存器APSR中的 N、Z、C 和V标志

MOVS R1,#0X12
RSBS R1,R1,#0

未完待续。。。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨鱼yy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值