新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 數據傳送指令之:多寄存器Load/Store內存訪問指令

        數據傳送指令之:多寄存器Load/Store內存訪問指令

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

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

        (3)指令操作的偽代碼

        指令操作偽代碼如下面程序段所示。

        If ConditionPass{cond} then

        Address=start_address

        For i=0 to 14

        If register_list[i]==1 then

        Ri=Memory[address,4]

        Address=address+4

        If register_list[15]==1 then

        Value = Memory[address,4]

        If(architecture version 5 or above) then

        Pc= value AND 0xfffffffe

        T bit=value[0]

        Else

        Pc= value AND 0xfffffffc

        Address=address+4

        Assert end_address=address+4

        2.STM(1)指令

        (1)指令編碼格式

        STM(1)指令將指令中寄存器列表中的各寄存器數值寫入到連續的內存單元中。主要用于塊數據的寫入、數據棧操作以及進入子程序時保存相關寄存器的操作。

        指令編碼格式如圖5.16所示。

        圖5.16 STM(1)指令編碼格式

        (2)指令的語法格式

        STM{cond>}addressing_mode> Rn>{!}, registers>

        ① cond>

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

        ② address_mode>

        指令的尋址方式。確定編碼格式中的P、U和W位。

        ③ Rn>

        確定尋址模式所使用的基址寄存器。

        如果r15作為指令的基址寄存器,指令的執行結果不可預知。

        ④ !

        設置指令編碼格式中的W位。它使指令執行后將操作數的內存地址寫入基址寄存器Rn>中;如果!被忽略,W位為0,指令執行完后,不修改基址寄存器的值。

        ⑤ registers>

        被加載的寄存器列表。不同的寄存器之間用“,”隔開。完整的寄存器列表包含在“{}”中。編號低的寄存器對應于內存中低地址單元,編號高的寄存器對應于內存中高地址單元。

        寄存器r0~r15分別對應于指令編碼中bit[0]~bit[15]位。如果Ri存在于寄存器列表中,則相應的位等于1,否則為0。

        (3)指令操作的偽代碼

        指令操作偽代碼如下面程序段所示。

        If ConditionPassed{cond} then

        Address=Start_address

        For i=0 to 15

        If register_list[i]==1

        Memory[address,4]=Ri

        Address=address+4

        Assert end_address==address-4



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兰西县| 会东县| 葫芦岛市| 嘉鱼县| 剑阁县| 高密市| 杂多县| 汝州市| 克什克腾旗| 中山市| 澎湖县| 海伦市| 利辛县| 镇远县| 洛南县| 英吉沙县| 化隆| 成安县| 台东市| 神木县| 武功县| 元阳县| 邵阳市| 淄博市| 交口县| 清水河县| 峨边| 长葛市| 呼伦贝尔市| 中宁县| 莒南县| 柯坪县| 邛崃市| 朝阳市| 罗江县| 青河县| 涞源县| 会昌县| 凤凰县| 宁南县| 简阳市|