一條cpu指令執行過程

2021-08-08 03:31:04 字數 1149 閱讀 3996

計算機每執行一條指令都可分為三個階段進行。即取指令-----分析指令-----執行指令。

取指令的任務是:根據程式計數器pc中的值從程式儲存器讀出現行指令,送到指令暫存器。

計算機執行程式的過程實際上就是逐條指令地重複上述操作過程,直至遇到停機指令可迴圈等待指令。

一般計算機進行工作時,首先要通過外部裝置把程式和資料通過輸入介面電路和資料匯流排送入到儲存器,然後逐條取出執行。但微控制器中的程式一般事先我們都已通過寫入器固化在片內或片外程式儲存器中。因而一開機即可執行指令。

下面我們將舉個例項來說明指令的執行過程:

開機時,程式計算器pc變為0000h。然後微控制器在時序電路作用下自動進入執行程式過程。執行過程實際上就是取出指令(取出儲存器中事先存放的指令階段)和執行指令(分析和執行指令)的迴圈過程。

例如執行指令:mov a,#0e0h,其機器碼為「74h e0h」,該指令的功能是把運算元e0h送入累加器,

0000h單元中已存放74h,0001h單元中已存放e0h。當微控制器開始執行時,首先是進入取指階段,其次序是:

1 程式計數器的內容(這時是0000h)送到位址暫存器;

2 程式計數器的內容自動加1(變為0001h);

3 位址暫存器的內容(0000h)通過內部位址匯流排送到儲存器,以儲存器中位址解碼電跟,使位址為0000h的單元被選中;

4 cpu使讀控制線有效;

5 在讀命令控制下被選中儲存器單元的內容(此時應為74h)送到內部資料匯流排上,因為是取指階段,所以該內容通過資料匯流排被送到指令暫存器。至此,取指階段完成,進入解碼分析和執行指令階段。

由於本次進入指令暫存器中的內容是74h(操作碼),以解碼器解碼後微控制器就會知道該指令是要將乙個數送到a累加器,而該數是在這個**的下乙個儲存單元。所以,執行該指令還必須把資料(e0h)從儲存器中取出送到cpu,即還要在儲存器中取第二個位元組。其過程與取指階段很相似,只是此時pc已為0001h。指令解碼器結合時序部件,產生74h操作碼的微操作系列,使數字e0h從0001h單元取出。因為指令是要求把取得的數送到a累加器,所以取出的數字經內部資料匯流排進入a累加器,而不是進入指令暫存器。至此,一條指令的執行完畢。微控制器中pc="0002h",pc在cpu每次向儲存器取指或取數時自動加1,微控制器又進入下一取指階段。這一過程一直重複下去,直至收到暫停指令或迴圈等待指令暫停。cpu就是這樣一條一條地執行指令,完成所有規定

cpu執行第一條指令時情形

執行的第一條指令不在記憶體中,眾所周知,記憶體是由 組成的 而 不斷電,可以儲存資訊,一旦斷電,中的資訊將會丟失,所以 要執行的第一條指令被固化在 中 以前 年代,由於記憶體是 的,所以 被編址在 的最後的 中,所以它的段位址是0xffff0,這樣就不至於不 分成兩個部分,就是將 設定成0xf000...

CPU加電後第一條指令

當我們按下電源開關時,電源就開始向主機板和其它裝置供電,此時電壓還不太穩定,主機板上的控制晶元組會向cpu發出並保持乙個reset 重置 訊號,讓 cpu內部自動恢復到初始狀態,但cpu在此刻不會馬上執行指令。當晶元組檢測到電源已經開始穩定供電了 當然從不穩定到穩定的過程只是一瞬間的事情 它便撤去r...

一條SQL語句的執行過程

1.1連線層 提供連線協議 tcp ip,socket 提供驗證 使用者 密碼 ip socket 提供專用連線線程 接收使用者sql,返回結果 通過以下語句可以檢視鏈結執行緒的基本情況 mysql show processlist 1.2sql層 重點 接收上層傳送的sql語句 語法驗證模組 驗證...