新闻中心

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

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

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

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

11.4.34减法指令SUB(4)

(1)编码格式

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

图11.40SUB(4)指令的编码格式

SUB(4)指令从堆栈指针SP中减去7位立即数的4倍,也就是说其取值为在0~508范围内4的倍数。

(2)指令的语法格式

SUBSP,#immed_7>×4

①SP

程序的堆栈指针,同时也为指令的目的寄存器,存放指令的运算结果。

②immed_7>

7位立即数,其值的4倍将作为减数参加运算。

(3)指令操作的伪代码

SP=SP–(immed_72)

注意

中,使用满递减堆栈,该指令常被用于元素的入栈操作。

(4)对应的指令

SUBSP,SP,#immed_7>*4

11.4.35位测试指令TST

(1)编码格式

位测试指令TST的编码格式如图11.41所示。

图11.41TST指令的编码格式

TST指令将两个寄存器的值按位做逻辑与操作,并根据指令的执行结果更新CPSR中相应的条件标志位。TST指令常被用于测试寄存器中某一位是否置位。

(2)指令的语法格式

TSTRn>,Rm>

①Rn>

操作数寄存器,用于存放指令的第一个操作数。

②Rm>

操作寄存器,该寄存器中的值将和Rn>寄存器中的值做逻辑与操作。

(3)指令操作的伪代码

alu_out=RnANDRm

NFlag=alu_out[31]

ZFlag=ifalu_out==0then1else0

CFlag=unaffected

VFlag=unaffected

(4)对应的指令

TSTRn>,Rm>

11.4.36中数据操作指令举例

下面的例子程序综合使用了各种数据操作指令,通过该例可以对Thumb状态下数据操作指令有更深入的了解。

ADDr0,r4,r7 ;r0=r4+r7

SUBr6,r1,r2 ;r6=r1–r2

ADDr0,#255 ;r0=r0+255

ADDr1,r4,#4 ;r1=r4+4

NEGr3,r1 ;r3=0–r1

ADDr2,r5 ;r2=r2ANDr5

EORr1,r6 ;r1=r1EORr6

CMPr2,r3 ;r2–r3,并更新CPSR

CMPr7,#100 ;r7–100,并更新CPSR

MOVr0,#200 ;r0=200


上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 下一页

评论


相关推荐

技术专区

关闭