新聞中心

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

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

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

        本文引用地址:http://www.104case.com/article/257041.htm

        11.4.31減法指令SUB(1)

        (1)編碼格式

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

        圖11.37SUB(1)指令的編碼格式

        SUB(1)指令從指定寄存器減去3位立即數(取值范圍為0~8),并把指令的操作結果保存到寄存器,同時根據結果更新CPSR中相應的條件標志位。

        (2)指令的語法格式

        SUBRd>,Rn>,#immed_3>

        ①Rd>

        目的寄存器,存放指令的操作結果。

        ②Rn>

        被減數寄存器,包含減法操作的被減數。

        ③immed_3>

        作為減數的立即數,該立即數的取值范圍為0~8。

        (3)指令操作的偽代碼

        Rd=Rn–immed_3

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        CFlag=NOTBorrowFrom(Rn–immed_3)

        VFlag=OverflowFrom(Rn–immed_3)

        (4)對應的指令

        SUBSRd>,Rn>,#immed_3>

        11.4.32減法指令SUB(2)

        (1)編碼格式

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

        SUB(2)指令從指定寄存器減去8位立即數(即,取值范圍為0~256),并把指令的操作結果保存到寄存器,同時根據結果更新CPSR中相應的條件標志位。

        圖11.38SUB(2)指令的編碼格式

        (2)指令的語法格式

        SUBRd>,#immed_8>

        ①Rd>

        第一個源操作數所在的寄存器,存放減法操作的被減數,同時將減法操作的執行結果保存到該寄存器。

        ②immed_8>

        8位立即數,即減法操作的減數,取值范圍為0~255。

        (3)指令操作的偽代碼

        Rd=Rd–immed_8

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        CFlag=NOTBorrowFrom(Rn–immed_8)

        VFlag=OverflowFrom(Rn–immed_8)

        (4)對應的指令

        SUBSRd>,Rd>,#immed_8>

        11.4.33減法指令SUB(3)

        (1)編碼格式

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

        圖11.39SUB(3)指令的編碼格式

        SUB(3)指令將指定寄存器的值和另一個寄存器表示的值做減法運算,并根據指令的操作結果更新狀態寄存器的標志位。

        (2)指令的語法格式

        SUBRd>,Rn>,Rm>

        ①Rd>

        目的寄存器,存放指令操作的結果。

        ②Rn>

        源寄存器,存放第一個操作數,即減法運算的被減數。

        ③Rm>

        源寄存器,存放第二個操作數,即減法運算的減數。

        (3)指令操作的偽代碼

        Rd=Rd–Rm

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        CFlag=NOTBorrowFrom(Rn–Rm)

        VFlag=OverflowFrom(Rn–Rm)

        (4)對應的指令

        SUBSRd>,Rn>,Rm>



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沙坪坝区| 门头沟区| 佛学| 汽车| 江孜县| 峡江县| 郓城县| 博湖县| 额济纳旗| 应城市| 惠州市| 巨野县| 淮北市| 乌兰察布市| 咸阳市| 台江县| 五家渠市| 曲麻莱县| 金沙县| 茶陵县| 忻州市| 台东县| 全州县| 平阳县| 额尔古纳市| 应用必备| 谷城县| 尉犁县| 吉林省| 北海市| 宽甸| 石台县| 眉山市| 嘉义县| 双辽市| 屏南县| 宣城市| 武冈市| 嘉禾县| 建阳市| 漠河县|