新聞中心

        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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 紫金县| 阿坝| 文水县| 略阳县| 曲阳县| 衢州市| 南和县| 五家渠市| 射洪县| 福海县| 策勒县| 伊金霍洛旗| 开平市| 罗田县| 瑞丽市| 土默特左旗| 林州市| 宁海县| 丹江口市| 广河县| 曲麻莱县| 巫山县| 桐乡市| 山西省| 台东县| 珠海市| 龙岩市| 吉木萨尔县| 利川市| 怀安县| 宜城市| 明星| 呼玛县| 封开县| 乾安县| 祥云县| 吉隆县| 新河县| 磴口县| 香河县| 拉萨市|