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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 數(shù)據(jù)傳送指令之:單寄存器的Load/Store指令

          數(shù)據(jù)傳送指令之:單寄存器的Load/Store指令

          作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257080.htm

          2.STR指令

          (1)指令編碼格式

          STR指令用于將一個32位的字?jǐn)?shù)據(jù)寫入到指令中指定的內(nèi)存單元。

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

          圖5.4 STR指令編碼格式

          (2)指令的語法格式

          STR{cond>} Rd>,addr_mode>

          ① cond>

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

          ② Rd>

          確定使用哪個通用寄存器作為目標(biāo)寄存器。

          ③ addr_mode>

          它確定了指令編碼中的I、P、U、W、Rn和addr_mode>位。所有的尋址模式中,都會確定一個基址寄存器Rn。

          (3)指令操作的偽代碼

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

          If ConditionPassed{cond} then

          Memory[address,4]=Rd

          (4)指令舉例

          LDR/STR指令用于對內(nèi)存變量的訪問、內(nèi)存緩沖區(qū)數(shù)據(jù)的訪問、查表、外圍部件的控制操作等等,若使用LDR指令加載數(shù)據(jù)到PC寄存器,則實現(xiàn)程序跳轉(zhuǎn)功能,這樣也就實現(xiàn)了程序散轉(zhuǎn)。

          ① 變量訪問

          NumCount EQU 0x40003000 ;定義變量NumCount

          LDR R0,=NumCount ;使用LDR偽指令裝載NumCount的地址到R0

          LDR R1,[R0] ;取出變量值

          ADD R1,R1,#1 ;NumCount=NumCount+1

          STR R1,[R0] ;保存變量

          ② GPIO設(shè)置

          GPIO—BASE EQU 0xe0028000 ;定義GPIO寄存器的基地址

          ……

          LDR R0,=GPIO—BASE

          LDR R1,=0x00ffff00 ;將設(shè)置值放入寄存器

          STR R1,[R0,#0x0C] ;IODIR=0x00ffff00,IOSET的地址為0xE0028004

          ③ 程序散轉(zhuǎn)

          MOV r2,r2,LSL #2 ;功能號乘以4,以便查表

          LDR PC,[PC,r2] ;查表取得對應(yīng)功能子程序地址,并跳轉(zhuǎn)

          NOP

          FUN—TAB DCD FUN—SUB0

          DCD FUN—SUB1

          DCD FUN—SUB2

          存儲器相關(guān)文章:存儲器原理




          評論


          相關(guān)推薦

          技術(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); })();