新闻中心

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

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

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

本文引用地址:http://www.eepw.com.cn/article/257041.htm

11.4Thumb

是指那些操作寄存器中数据的指令。中的指令集数据处理指令的一个子集,其中包括、算术指令、、逻辑指令、比较指令和乘法指令。表11.3列出了Thumb数据处理指令。

表11.3 Thumb状态数据处理指令

助记符

说明

操作

ADCRd,Rm

带进位的32位加

Rd:=Rd+Rm+Cflag

ADDRd,Rn,Rm

32位加

Rd:=Rn+Rm

ADDRd,Rn,#0~#7

32位加

Rd:=Rn+3_bit_immed

ADDRd,#0~#277

32位加

Rd:=Rn+8_bit_immed

ANDRd,Rm

逻辑与

Rd:=RdANDRm

ASRRd,Rm,#1~#32

算术右移

Rd:=RmASR5_bit_immed

ASRRd,Rs

算术右移

Rd:=RmASRRs

BICRd,Rm

位清零

Rd:=RdANDNOTRm

CMNRn,Rm

32位取负比较

Rn+Rm并设置标志位

CMPRn,#0~#255

32位整数比较

Rn-8_bit_immed并设置标志位

CMPRn,Rm

32位整数比较

Rn-Rm并设置标志位

EORRd,Rm

异或

Rd:=RdEORRm

LSLRd,Rm,#0~#31

逻辑左移

Rd:=RmLSL5_bit_immed

LSLRd,Rs

逻辑左移

Rd:=RdLSLRs

LSRRd,Rm,#1~#32

逻辑右移

Rd:=RmLSR5_bit_immed

LSRRd,Rs

逻辑右移

Rd:=RdLSRRs

MOVRd,#0~#255

将数据送入寄存器

Rd:=8_bit_immed

MOVRd,Rn

将数据送入寄存器

Rd:=Rn

MULRd,Rm

Rd:=Rm*Rd

MVNRd,Rm

将32位数的“反”送入寄存器

Rd:=NOTRm

NEGRd,Rm

求反

Rd:=0-Rm

ORRRd,Rm

逻辑或

Rd:=RdORRm

RORRd,Rs

逻辑右移

Rd:=RdRORRs

SBCRd,Rm

带进位减

Rd:=Rd-Rm-NOT(CarryFlag)

SUBRd,Rn,Rm

Rd:=Rn-Rm

SUBRd,Rn,#0~#7

Rd:=Rn-3_bit_immed

SUBRd,#0~#255

Rd:=Rn-8_bit_immed

TSTRn,Rm

位测试指令

RnANDRm并更新标志位

Thumb的数据处理指令与等价的指令使用相同的格式。所有对r0~r7低8个寄存器操作的数据处理指令都更新条件标志位,对r8~r14和PC高8个寄存器操作的指令除外,其他指令均不改变条件标志位。这些指令包括:

·MOVRd,Rn

·ADDRd,Rm

·CMPRn,Rm

·ADDsp,#0~#508

·SUBsp,#0~#508

·ADDRd,sp,#0~#1020

·ADDRd,pc,#0~#1020

Thumb数据处理指令的基本语法格式分为以下8种。

①opcode1>Rd>,Rn>,Rm>

opcode1>:=ADD|SUB

②opcode2>Rd>,Rn>,#3_bit_immed>

opcode2>:=ADD|SUB

③opcode3>Rd>|Rn>,#8_bit_immed>

opcode3>:=ADD|SUB|MOV|CMP

④opcode4>Rd>,Rm>,#shift_immed>

opcode4>:=LSL|LSR|ASR

⑤opcode5>Rd>|Rn>,Rm>|Rs>

opcode5>:=MVN|CMP|CMN|TST|ADC|SBC|NEG|MUL|LSL|LSR|ASR|ROR|AND|EOR|BIC

⑥ADDRd>,reg>,#8_bit_immed>

reg>:=SP|PC

⑦opcode6>SP,SP,#7_bit_immed>

opcode6>:=ADD|SUB

⑧opcode7>Rd>|Rn>,Rm>

opcode7>:=MOV|ADD|CMP

注意

上面的指令和语法格式中,3_bit_immed、7_bit_immed、8_bit_immed分别表示3位、7位、8位立即数。


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

评论


相关推荐

技术专区

关闭