• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

    5.4.2 用戶模式內存字

    1.LDM(2)指令

    (1)指令編碼格式

    LDM(2)指令將數據從連續的內存單元中讀取到指令中指定的寄存器列表中的各寄存器中。

    注意

    與LDM(1)指令不同,PC不能包含在寄存器列表中。

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

    圖5.17 LDM(2)指令編碼格式

    (2)指令的語法格式

    LDM{cond>}addressing_mode> Rn>, registers_without_pc>ˆˆ

    ① cond>

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

    ② address_mode>

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

    ③ Rn>

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

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

    ④ registers_without_pc>ˆ

    被加載的寄存器列表。不同的寄存器之間用“,”隔開。完整的寄存器列表包含在“{}”中。此寄存器列表中不能包含PC寄存器。

    如果PC包含在寄存器列表中,指令的執行結果不可預知。

    其他細節可參考LDM(1)指令。

    (3)指令操作的偽代碼

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

    If ConditionPassed{cond} then

    Address=start_address

    For i=0 to 14

    If register_list[i]==1

    Ri_usr=Memory[address,4]

    Address=address+4

    Assert end_address == address-4

    2.STM(2)指令

    (1)指令編碼格式

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

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

    圖5.18 STM(2)指令編碼格式

    (2)指令的語法格式

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

    ① cond>

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

    ② address_mode>

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

    ③ Rn>

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

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

    ④ registers >ˆ

    寄存器列表。只能使用用戶模式下的寄存器。

    (3)指令操作的偽代碼

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

    If ConditionPassed{cond} then

    Address=start_address

    For i=0 to 15

    If register_list[i] == 1

    Memory[address,4]=Ri_usr

    Address = address +4

    Assert end_address == address-4



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 揭阳市| 芷江| 大冶市| 宜州市| 玉溪市| 库车县| 遂溪县| 永康市| 衡东县| 平昌县| 渝中区| 霸州市| 内黄县| 永城市| 乐陵市| 康保县| 修水县| 宁海县| 四子王旗| 抚远县| 桐城市| 静海县| 安福县| 东城区| 桓台县| 呈贡县| 罗城| 察哈| 文昌市| 高台县| 西吉县| 通榆县| 哈巴河县| 获嘉县| 太原市| 大足县| 兴国县| 桃源县| 昂仁县| 花垣县| 奈曼旗|