新聞中心

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

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

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

        本文引用地址:http://www.104case.com/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)對應的指令

        SUBSP,SP,#immed_7>*4

        11.4.35位測試指令TST

        (1)編碼格式

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

        圖11.41TST指令的編碼格式

        TST指令將兩個寄存器的值按位做邏輯與操作,并根據(jù)指令的執(zhí)行結(jié)果更新CPSR中相應的條件標志位。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)對應的指令

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

        評論


        相關推薦

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

        關閉
        主站蜘蛛池模板: 莆田市| 六盘水市| 白银市| 综艺| 凤阳县| 恩平市| 德化县| 瑞金市| 湖州市| 甘泉县| 奉节县| 响水县| 吐鲁番市| 桐柏县| 汾西县| 甘泉县| 新郑市| 子洲县| 泗洪县| 清涧县| 江都市| 西华县| 昆明市| 滦南县| 苏尼特右旗| 定西市| 临西县| 台安县| 江陵县| 鹤山市| 镇雄县| 永胜县| 大足县| 淮滨县| 江陵县| 额济纳旗| 扎赉特旗| 环江| 米易县| 扬州市| 奎屯市|