- 論壇徽章:
- 0
|
在翻看微機原理過程中,有介紹微機簡化結(jié)構(gòu)模型下,取指和執(zhí)行周期
時鐘脈沖由環(huán)形計數(shù)器來驅(qū)動,T0-T5共6個時鐘
在 地址階段(T0 = 1)時候,將 PC內(nèi)容送入 MAR中(MAR中同時會進入到 PROM中)
在 存儲節(jié)拍(T1 = 1)時候,將 PROM中由PC送來的地址碼指定內(nèi)存內(nèi)容送到 IR中,同時 IR會將 IR高4位數(shù)據(jù)送至 控制部件中
在 增量節(jié)拍(T2 = 1)時候,PC加1
以上三個是取指周期,將指令獲取到 IR中,對于任何指令都相同
剩下三個是執(zhí)行周期
在 T3 = 1時候,(現(xiàn)在假設(shè)是 LDA,load 數(shù)據(jù)到 AL中)控制部件分析高四位后得知是一個 LDA指令,于是將 IR中的低四位重新發(fā)送到 MAR中,最后到達 PROM中來獲取 ROM中的對應(yīng)數(shù)據(jù)
在 T4 = 1時候,將 PROM中對應(yīng)的數(shù)據(jù)發(fā)送到 AL中
在 T5 = 1時候,對于該 LDA是個空閑的時鐘周期
以上的是針對簡化結(jié)構(gòu)來說明的
對于 8086架構(gòu)中,看到其中沒有類似 PC或者 IR的寄存器
想問,對于 8086或者后續(xù)的 x86,其過程是否也是類似的
因為對于8086中,有IP(指令指針寄存器)。我們知道,一般 IP是指向下一個將會需要執(zhí)行的代碼(該代碼存儲于內(nèi)存中)
比如對于下面的一個反匯編代碼:
- 1000:0 b8 00 00 mov ax,0 ax=0 ip指向1000:3
- 1000:3 e8 01 00 call s pop ip ip指向1000:7
- 1000:6 40 inc ax
- 1000:7 58 s:pop ax ax=6
復(fù)制代碼 理論上,在cpu讀取完 call s指令后,ip就會指向下一條內(nèi)存中的代碼 inc ax的地址
因為現(xiàn)在是 call指令,所以會執(zhí)行 push ip, jmp s的動作,跳到 s去執(zhí)行
然后在s位置執(zhí)行完后,會使用ret來返回到call s的下一條指令位置來繼續(xù)執(zhí)行,也就是 inc ax的位置來執(zhí)行。通過 pop ip的方式來恢復(fù)壓棧后的 ip來完成
這些是我們比較籠統(tǒng)的來解釋的
那么,如果對應(yīng)到這個取指然后執(zhí)行周期來說明的話,對于8086系統(tǒng)為例,應(yīng)該是怎么樣的一個過程呢???其中是否還會有 PC,IR寄存器的參與?? |
|