新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Thumb指令集之:Thumb數(shù)據(jù)處理指令

Thumb指令集之:Thumb數(shù)據(jù)處理指令

作者: 時間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/257041.htm

11.4.34減法指令SUB(4)

(1)編碼格式

減法指令SUB(4)的編碼格式如圖11.40所示。

圖11.40SUB(4)指令的編碼格式

SUB(4)指令從堆棧指針SP中減去7位立即數(shù)的4倍,也就是說其取值為在0~508范圍內(nèi)4的倍數(shù)。

(2)指令的語法格式

SUBSP,#immed_7>×4

①SP

程序的堆棧指針,同時也為指令的目的寄存器,存放指令的運算結(jié)果。

②immed_7>

7位立即數(shù),其值的4倍將作為減數(shù)參加運算。

(3)指令操作的偽代碼

SP=SP–(immed_72)

注意

中,使用滿遞減堆棧,該指令常被用于元素的入棧操作。

(4)對應(yīng)的指令

SUBSP,SP,#immed_7>*4

11.4.35位測試指令TST

(1)編碼格式

位測試指令TST的編碼格式如圖11.41所示。

圖11.41TST指令的編碼格式

TST指令將兩個寄存器的值按位做邏輯與操作,并根據(jù)指令的執(zhí)行結(jié)果更新CPSR中相應(yīng)的條件標志位。TST指令常被用于測試寄存器中某一位是否置位。

(2)指令的語法格式

TSTRn>,Rm>

①Rn>

操作數(shù)寄存器,用于存放指令的第一個操作數(shù)。

②Rm>

操作寄存器,該寄存器中的值將和Rn>寄存器中的值做邏輯與操作。

(3)指令操作的偽代碼

alu_out=RnANDRm

NFlag=alu_out[31]

ZFlag=ifalu_out==0then1else0

CFlag=unaffected

VFlag=unaffected

(4)對應(yīng)的指令

TSTRn>,Rm>

11.4.36中數(shù)據(jù)操作指令舉例

下面的例子程序綜合使用了各種數(shù)據(jù)操作指令,通過該例可以對Thumb狀態(tài)下數(shù)據(jù)操作指令有更深入的了解。

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

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉