新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Thumb指令集之:Thumb數據處理指令

Thumb指令集之:Thumb數據處理指令

作者: 時間:2013-09-30 來源:網絡 收藏

本文引用地址:http://2s4d.com/article/257041.htm

11.4Thumb

是指那些操作寄存器中數據的指令。中的指令集數據處理指令的一個子集,其中包括、算術指令、、邏輯指令、比較指令和乘法指令。表11.3列出了Thumb數據處理指令。

表11.3 Thumb狀態(tài)數據處理指令

助記符

說明

操作

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 下一頁

評論


相關推薦

技術專區(qū)

關閉