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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 找到地址去送信——單片機尋址方式學習心得

          找到地址去送信——單片機尋址方式學習心得

          作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
          剛開始學單片機時,由于沒有數(shù)字電路和微機原理的基礎,很多概念都不是很清楚,特別是在學習單片機原理的時候,那些概念弄得煩不勝煩。尤其是什么寄存器、尋址、地址、指針……都快把我折磨得瘋掉了。想放棄又覺得不甘心,于是就硬著頭皮狂啃了幾天,才有點了解?,F(xiàn)將心得記錄如下,能力有限,如果有錯誤或不足請指正。
          CPU執(zhí)行指令過程:由程序存儲器(ROM)中讀取指令代碼,送入指令寄存器中,經(jīng)過譯碼器譯后由定時于控制電路發(fā)出相應的控制信號,完成控制功能。
          程序計數(shù)器(PC):存放即將要執(zhí)行的指令地址的地方。
          寄存器:寄存器是CPU在運算過程中用于存放操作數(shù)的地方。相當與一個加工廠的貨物暫時存放點。在這貨物暫時存放點里存放有一些貨物即操作數(shù)。CPU沒執(zhí)行一次運算和命令都會從里邊提取操作數(shù)執(zhí)行指令。CPU中若干個不同的寄存器。可以從不通的寄存器中提取不同的操作指令進行操作。
          存儲器:存儲器就相當余個倉庫,是存儲數(shù)據(jù)的地方。CPU通過指令對存儲器進行訪問。
          指針:這真就相當一個地址,即倉庫里邊存放貨物的地址。和我么寄信的地址一樣,通過他可以尋找到想要的數(shù)據(jù)或者指令。
          立即數(shù):立即數(shù)就是存放在寄存器中的常數(shù)。
          知道這些以后,對于單片機的尋址方式的理解就沒有多大問題。單片機的尋址方式主要有五種:立即數(shù)尋址、存儲器絕對尋址、寄存器直接尋址、寄存器間接尋址、寄存器變址尋址。
          立即數(shù)尋址:將某一立即數(shù)直接賦予到寄存器當中。相當于將一份貨物拿的指定貨物暫時存放點上去。
          存儲器絕對尋址:將存儲器地址指定的操作數(shù)賦予到寄存器當中。這種尋址方式和立即數(shù)尋址方式不通,同樣是直接將操作數(shù)直接賦予寄存器當中,但形式不一樣,立即數(shù)尋址是直接將操作數(shù)賦予寄存器。而直接尋址卻是拿到的只是一個操作數(shù)地址,通過這個地址,在存儲器中尋找到想要的操作數(shù)后,再將操作數(shù)賦予寄存器。這個相當于你拿到倉庫貨物地址后,在倉庫里找到貨物,然后將貨物拿到指定的貨物暫時存放點上。
          寄存器直接尋址:這種方式是指操作數(shù)存放在寄存器中,直接通過尋址寄存器,取出操作數(shù)。這中方式相當直接將特定貨物暫時存放點里的貨物裝車進行處理。
          寄存器間接尋址:這種方式是寄存器里存放的是操作數(shù)在存儲器里存放的地址。通過那在指定的寄存器里拿到地址后,再通過地址到存儲器中尋找到相應的操作數(shù),然后執(zhí)行操作數(shù)。這種方式相當于該貨物暫時存放點存放的并不是貨物,而只是貨物在倉庫存儲的地址,我們還得通過地址到倉庫去尋找到貨物,然后再進行加工。
          寄存器變址尋址:這種尋址方式比較復雜,且很麻煩,好像是故意在繞路一樣,難為人。他首先給定一個基址寄存器,并在基址寄存器中存放一個數(shù)據(jù),然后再給你一個公式和一個操作數(shù),公式是:目的寄存器=基址寄存器中數(shù)據(jù)+給定操作數(shù)。通過計算出公式結果后才能找到目的寄存器當中的操作數(shù)。這就相當于找東西的游戲,不告訴你要找的東西在那你,只是給你一個謎語,你靠著這個謎語的謎底去尋找所要尋找的東西。


          評論


          技術專區(qū)

          關閉
          看屁屁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); })();