新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 數據傳送指令之:MVN指令

        數據傳送指令之:MVN指令

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

        5.2

        1.指令編碼格式

        MVN是反相傳送(Move Negative)指令。它將操作數的反碼傳送到目的寄存器。

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

        多用于向寄存器傳送一個負數或生成位掩碼。

        指令的編碼格式如圖5.2所示。

        圖5.2 編碼格式

        MVN指令將shifter_operand>表示的數據的反碼傳送到目的寄存器Rd。并根據操作的結果更新CPSR中相應的條件標志位。

        2.指令的語法格式

        MNV{cond>}{S} Rd>,shifter_operand>

        ① cond>

        為指令編碼中的條件域。它指示MVN指令在什么條件下執行。當cond>忽略時,指令為無條件執行(cond=AL(Alway))。

        ② S(bit[20])

        如果S=1,MVN指令更新CPSR中條件標志位的值;如果S=0,MVN指令不更新CPSR中條件標志位的值。當更新狀態寄存器CPSR中的條件標志位時,有兩種情況。

        · 如果指令中的目標寄存器Rd>不是為r15,指令根據傳送的數值設置CPSR中的N位和Z位(如果數據在傳送前需要移位,則根據移位后的數值設置),并根據移位器的進位值設置CPSR的C位。標志位V和其他位不受影響。

        · 如果指令中的目標寄存器Rd>為r15,則當前處理器模式對應的SPSR的值復制到CPSR寄存器中,對于用戶模式和系統模式,由于沒有相應的SPSR,指令執行的結果不可預知。

        ③ Rd>

        確定目標寄存器。

        ④ shifter_operand>

        確定操作數,為目標寄存器傳送數據。

        3.指令操作的

        指令操作的如下面程序段所示。

        If ConditionPassed{cond} then

        Rd = NOT(shifter_operand)

        If S==1 and Rd==r15 then

        CPSR = SPSR

        Else if S==1 then

        N Flag = Rd[31]

        Z Flag = If Rd==0 then 1 else 0

        C Flag = shifter_carry_out

        V Flag = unaggected

        4.指令舉例

        【例5.2】MVN指令

        MVN指令和MOV指令相同也可以把一個數N送到目標寄存器Rd,其中N可以是立即數,也可以是寄存器。

        注意

        這是邏輯非操作而不是算術操作,這個取反的值加 1 才是它的取負的值。

        MVN R0, #4 ; R0 = -5

        MVN R0, #0 ; R0 = -1

        5.指令的使用

        MVN指令主要完成以下功能。

        · 向寄存器中傳送一個負數。

        · 生成位掩碼(bit mask)。

        · 求一個數的反碼。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新平| 防城港市| 华安县| 科技| 高邑县| 德阳市| 离岛区| 信丰县| 正宁县| 乐都县| 佳木斯市| 五河县| 营山县| 灵川县| 榆林市| 余庆县| 兴海县| 乌鲁木齐县| 芮城县| 繁昌县| 宁夏| 延津县| 桓台县| 吴桥县| 泸水县| 尉氏县| 潞城市| 青铜峡市| 延长县| 牡丹江市| 合作市| 台州市| 高雄县| 卢氏县| 南木林县| 鄂托克前旗| 新津县| 连山| 喀喇| 汾西县| 嘉善县|