問題描述:學習x86的過程中對cpu的取指、執行工作原理一直是一知半解,上網查了很多相關,發現都講的不全或者說很模糊。所以,經過自己長時間的查閱總結,終於畫出了下圖。在此之前需要說明下:
cs:**段暫存器 ip:指令指標暫存器
x86cpu:位址寬度20,但是cpu只能提供16位的訪問寬度,因此cpu把兩個16位數乙個當作段位址,乙個當作偏移位址合成乙個20位數.
段位址 * 16 + 偏移位址 = 20位指令首位址(cs*16+ip)
注:16等於2的4次方,乘以16就是左移4位(可以模擬十進位制)
附:biu:[cs:ip]取指放進排隊棧,ip自增指令長度。 eu:從排隊棧取出執行
請教各位大神:我常常看到程式計數器pc,其功能好比是這裡的[cs:ip]
本人初學至今不懂pc,還有這裡涉及到了排隊棧,biu、eu並行,那麼[cs:ip]的指令就不一定是eu當前執行的指令,也就是說[cs:ip]可能是比eu執行的指令超前的,那麼呼叫、中斷等操作儲存現場時儲存的是cs:ip,這樣不是可能會跳過一些本該執行的指令麼,或者說儲存的不是cs:ip.
聞道有先後,術業有專攻,求教求教!!!
8086CPU暫存器總結
通用暫存器 ax,bx,cx,dx ax可以分成ah和al各8bit來用,bx可以分成bh和bl各8bit來用,cx可以分成ch和cl各8bit來用,dx可以分成dh和dl各8bit來用,如cs內容為m,ip內容為n,則cpu將從m 16 n位址讀取指令執行 mov bx,1000h mov ds,...
8086CPU的段暫存器
段位址由段寄存器提供。8086cpu的段暫存器有4個,包括 cs,ds,ss,es。cs 而cs是提供 段的段位址 code segment 而偏移位址是由ip 暫存器提供。在8086cpu中,任意時刻,設cs中的內容為m,ip中的內容為n,8086cpu將從記憶體m x 16 n單元開始讀取一條指...
8086CPU各暫存器的用途
8086 有14個16位暫存器,這14個暫存器按其用途可分為 1 通用暫存器 2 指令指標 3 標誌暫存器和 4 段暫存器等4類。1.通用暫存器有8個,又可以分成2組,一組是資料暫存器 4個 另一組是指標暫存器及變址暫存器 4個 資料暫存器分為 ah al ax accumulator 累加暫存器,...