新闻中心

EEPW首页>嵌入式系统>设计应用> Thumb指令集之:Thumb数据处理指令

Thumb指令集之:Thumb数据处理指令

作者: 时间:2013-09-30 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257041.htm

11.4.31减法指令SUB(1)

(1)编码格式

减法指令SUB(1)的编码格式如图11.37所示。

图11.37SUB(1)指令的编码格式

SUB(1)指令从指定寄存器减去3位立即数(取值范围为0~8),并把指令的操作结果保存到寄存器,同时根据结果更新CPSR中相应的条件标志位。

(2)指令的语法格式

SUBRd>,Rn>,#immed_3>

①Rd>

目的寄存器,存放指令的操作结果。

②Rn>

被减数寄存器,包含减法操作的被减数。

③immed_3>

作为减数的立即数,该立即数的取值范围为0~8。

(3)指令操作的伪代码

Rd=Rn–immed_3

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=NOTBorrowFrom(Rn–immed_3)

VFlag=OverflowFrom(Rn–immed_3)

(4)对应的指令

SUBSRd>,Rn>,#immed_3>

11.4.32减法指令SUB(2)

(1)编码格式

减法指令SUB(2)的编码格式如图11.38所示。

SUB(2)指令从指定寄存器减去8位立即数(即,取值范围为0~256),并把指令的操作结果保存到寄存器,同时根据结果更新CPSR中相应的条件标志位。

图11.38SUB(2)指令的编码格式

(2)指令的语法格式

SUBRd>,#immed_8>

①Rd>

第一个源操作数所在的寄存器,存放减法操作的被减数,同时将减法操作的执行结果保存到该寄存器。

②immed_8>

8位立即数,即减法操作的减数,取值范围为0~255。

(3)指令操作的伪代码

Rd=Rd–immed_8

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=NOTBorrowFrom(Rn–immed_8)

VFlag=OverflowFrom(Rn–immed_8)

(4)对应的指令

SUBSRd>,Rd>,#immed_8>

11.4.33减法指令SUB(3)

(1)编码格式

减法指令SUB(3)的编码格式如图11.39所示。

图11.39SUB(3)指令的编码格式

SUB(3)指令将指定寄存器的值和另一个寄存器表示的值做减法运算,并根据指令的操作结果更新状态寄存器的标志位。

(2)指令的语法格式

SUBRd>,Rn>,Rm>

①Rd>

目的寄存器,存放指令操作的结果。

②Rn>

源寄存器,存放第一个操作数,即减法运算的被减数。

③Rm>

源寄存器,存放第二个操作数,即减法运算的减数。

(3)指令操作的伪代码

Rd=Rd–Rm

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=NOTBorrowFrom(Rn–Rm)

VFlag=OverflowFrom(Rn–Rm)

(4)对应的指令

SUBSRd>,Rn>,Rm>



评论


相关推荐

技术专区

关闭