首頁>Club>
6
回覆列表
  • 1 # 老馬識途微控制器

    一、微控制器程式執行過程

    微控制器的工作過程實質就是執行程式的過程,也就是我們常說的逐條執行指令的過程。微控制器每執行一條指令均可分為三個階段:取出指令、分析(譯碼)指令、執行指令。

    大多數8位微控制器的取指、譯碼、執行這三步都是按照序列順序依次進行的。32位微控制器的這三步也是必不可少的,但是它是採用預取指令的流水線方式操作,並採用精簡指令集,每條指令都是單週期指令,所以它允許指令並行操作。例如再取出第一條指令後,開始對這條指令譯碼的同時,取出第二條指令;在第一條指令執行時,第二條指令開始譯碼,然後取出第三條指令,第二條指令同時執行。。。如此迴圈。從而使CPU在同一時間對不同指令實現不同操作,這樣就實現了指令的並行處理,大大加快指令的執行速度。

    二、微控制器執行指令的三個階段

    下面分別說說微控制器執行指令的三個階段。

    1、取指令階段

    根據程式計數器PC的值,從程式儲存器讀出當前要執行的指令,並將該指令送到指令暫存器。

    2、指令譯碼階段

    取出指令暫存器中的指令操作碼進行譯碼,解析出指令要實現那種操作。(例如是執行資料傳送還是進行資料的加減運算)

    3、執行指令階段

    執行指令規定的操作。(例如對於帶運算元的指令,先取出操作碼,再取出運算元,然後按照操作碼的型別對運算元進行操作)

    三、微控制器工作過程

    微控制器採用“儲存程式”的工作方式,即事先把程式載入到微控制器的儲存器中,當啟動執行後,計算機便自動進行工作。

    1、微控制器的模型機指令表

    下表是微控制器的模型機指令表,我們以LDA 23這條指令為例,來說明微控制器的指令執行過程。

    2、執行一條指令的順序

    微控制器執行程式是一條指令一條指令執行的,執行一條指令的過程可分為兩個階段。

    在微控制器中,“儲存程式”第一條指令的第一個位元組一定是操作碼。這樣,CPU首先進入取指階段,從儲存器中取出指令,並透過CPU譯碼後,轉入執行指令階段,在這期間,CPU執行指令指定的操作。

    取指階段是由一系列相同的操作組成的,因此,取指階段的時間總是相同的。而執行指令的階段是由不同的事件順序組成的,它取決於被執行指令的型別。執行完一條指令後接著執行下一條指令,如此迴圈往復。

    3、執行一條指令的過程

    指令“LDA 23”的執行過程是怎樣的呢?這是一條直接定址指令,執行的過程如下圖所示。

    LDA指令的指令週期由3個CPU週期(即機器週期)組成。其中,第一個CPU週期為取指令週期;執行指令階段由2個CPU週期組成,第二個CPU週期中將運算元的地址送往地址暫存器並完成地址譯碼,在第三個CPU週期中,從記憶體取出運算元並執行裝入的操作。

    4、執行一個程式的過程

    採用直接定址方式,執行“7+10”的程式如下表所示。

    加入程式存放在起始地址為00010000B(16)的儲存單元中。地址16和17存放第一條指令“LDA 23”,執行第一條指令的過程如下圖所示。

    微控制器啟動後,PC中的地址即為16,將16送地址暫存器,接著16被放入地址總線上,找到操作碼地址00010000B(16),PC自動加1為17,做好取下一位元組的準備;取出“LDA 23”的操作碼10010110B放入資料匯流排;操作碼經資料匯流排裝入資料暫存器,因為是操作碼,所以還需要裝入指令譯碼器進行指令譯碼,得到“裝入”的操作。

    此時PC中的內容已經是17,地址17送入地址暫存器並放到地址總線上,找到操作碼地址23,PC又自動加1,做好取第二條指令“ADD 24”的準備,如下圖。

    找到運算元地址23後,因為是直接定址,取出23單元中的運算元7放到資料匯流排,再裝入資料暫存器中,經資料暫存器將運算元7裝入累加器,如下圖所示。至此,第一條指令“LDA 23”執行完畢。

    第2,3條指令也是直接定址方式,執行的過程類似。

  • 中秋節和大豐收的關聯?
  • 木星和土星有多少顆衛星?是如何發現的?