<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM數(shù)據(jù)加載與存儲(chǔ)指令(一)

          ARM數(shù)據(jù)加載與存儲(chǔ)指令(一)

          作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
          數(shù)據(jù)加載存儲(chǔ)指令時(shí)ARM在寄存器與存儲(chǔ)器之間實(shí)現(xiàn)數(shù)據(jù)傳送的一類指令。

          實(shí)驗(yàn)?zāi)康模?br />l 單寄存器數(shù)據(jù)傳送指令的運(yùn)用和各種變址尋址模式的掌握
          l 多寄存器數(shù)據(jù)傳送指令的運(yùn)用和各種變址尋址模式的掌握
          l 單個(gè)數(shù)據(jù)復(fù)制和數(shù)據(jù)塊復(fù)制的方法。
          l 利用調(diào)試器中各種窗口觀察完成各指令操作后寄存器、存儲(chǔ)器、標(biāo)簽地址、機(jī)器指令等的變化情況。
          一、 單寄存器的加載和存儲(chǔ)指令LDR|STR
          AREA Lab1,CODE
          ENTRY
          START
          ADR R1,SRC
          ADR R2,DST
          COPY
          LDR R0,[R1]
          STR R0,[R2]
          ADD R1,R1,#0x4
          ADD R2,R2,#0x4
          LDR R0,[R1]
          STR R0,[R2]
          ADD R1,R1,#0x4
          ADD R2,R2,#0x4
          LDR R0,[R1]
          STR R0,[R2]

          STOP
          B STOP


          SRC DCB "one small!"
          ALIGN
          DST DCB "three big!"
          END
          程序說明:
          1. 偽指令A(yù)DR是將一個(gè)寄存器相關(guān)變大時(shí)或程序相關(guān)表達(dá)式的地址存入寄存器中,在例子中相當(dāng)于使R1指向SRC,R2指向DST地址,即初始化地址指針。
          2. DCB的作用是分配一組字節(jié)內(nèi)存并定義其內(nèi)容為指定字符串,也可以用“=”代替:
          SRC = “one small!”
          DST =“three big!”

          完成下列任務(wù)
          1.閱讀程序exp6_1.s,寫出程序的功能。設(shè)置代碼段的基地址為0x8000。用AXD單步調(diào)試程序,觀察每執(zhí)行一步以后,相應(yīng)的寄存器和存儲(chǔ)器的變化情況,完成表格。
          打開的process view窗口如下:register,disassembly,low lever symbols,memory
          序號(hào)執(zhí)行指令指令執(zhí)行后變化情況
          寄存器存儲(chǔ)器
          R0R1R2PC0x80400x80410x80420x80430x80440x80450x80460x80470x80480x8049
          00x00x00x00x80000x74
          t
          0x68
          H
          0x72
          r
          0x65
          e
          0x65
          e
          0x20
          _
          0x62
          b
          0x69
          i
          0x67
          g
          0x21
          !
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          2.程序中使用的尋址方式是間接尋址中的零變址方式,請(qǐng)將程序改為前變址形式和后變址形式。(繪圖分析各種變址尋址形式,并設(shè)計(jì)程序驗(yàn)證。)
          3.用多寄存器傳送指令修改程序。

          答案:
          1. 程序的功能是將存儲(chǔ)器中SRC處的源數(shù)據(jù)通過數(shù)據(jù)傳送指令傳送到DST處。
          2. 前變址和后變址
          方法一
          COPY LDR R0,[R1],#4
          STR R0,[R2],#4
          LDR R0,[R1],#4
          STR R0,[R2],#4
          LDR R0,[R1],#4
          STR R0,[R2],#4
          方法二
          SUB R1,R1,#4
          SUB R2,R2,#4
          MOV R3,#1
          CPY
          LDR R0,[R1,#4]!
          STR R0,[R2,#4]!
          CMP R3,#3
          ADD R3,R3,#1
          BNE CPY
          方法三
          LDR R0,[R1]
          STR R0,[R2]
          LDR R0,[R1,#4]
          STR R0,[R2,#4]
          LDR R0,[R1,#8]
          STR R0,[R2,#8]
          3. 多寄存器傳送指令
          LDMIA R1!,{R3-R5}
          STMIA R2!,{R3-R5}


          一、 多寄存器的加載和存儲(chǔ)指令
          AREA Lab2,CODE
          ENTRY
          START
          LDR sp,=NUM
          LDMFD SP!,{R0-R4}
          ADD R4,R0,R1
          ADD R4,R4,R2
          ADD R4,R4,R3
          MOV R4,R4,LSR #2
          STR R4,[SP]
          STOP
          B STOP

          AREA Dblock,DATA
          NUM DCD 0x12,0x34,0x56,0x78
          END
          程序說明:
          1. 定義一個(gè)名為Dblock的數(shù)據(jù)區(qū)域
          2. 偽指令DCD的作用是分配一組字內(nèi)存并定義其內(nèi)容,分配的內(nèi)存一定是4的倍數(shù)。也可以用&替代。
          NUM & 0x12, 0x34,0x56,0x78


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();