新聞中心

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

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

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

        本文引用地址:http://www.104case.com/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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 正宁县| 肇庆市| 青海省| 辽阳县| 偏关县| 社旗县| 定州市| 和平县| 襄汾县| 梁平县| 霍城县| 资溪县| 新化县| 乌拉特后旗| 鄂伦春自治旗| 梁平县| 平远县| 东莞市| 昌宁县| 贵德县| 得荣县| 惠州市| 安义县| 固阳县| 奎屯市| 吉隆县| 醴陵市| 屏南县| 内丘县| 腾冲县| 西华县| 江源县| 贺州市| 历史| 岑巩县| 濉溪县| 广东省| 桑日县| 页游| 宿松县| 舒城县|