8086 有14個16位暫存器,這14個暫存器按其用途可分為(1)通用暫存器、(2)指令指標、(3)標誌暫存器和(4)段暫存器等4類。
1.通用暫存器有8個, 又可以分成2組,一組是資料暫存器(4個),另一組是指標暫存器及變址暫存器(4個).
資料暫存器分為:
ah&al=ax(accumulator):累加暫存器,常用於運算;在乘除等指令中指定用來存放運算元,另外,所有的i/o指令都使用這一暫存器與外界裝置傳送資料.
bh&bl=bx(base):基址暫存器,常用於位址索引;
ch&cl=cx(count):計數暫存器,常用於計數;常用於儲存計算值,如在移位指令,迴圈(loop)和串處理指令中用作隱含的計數器.
dh&dl=dx(data):資料暫存器,常用於資料傳遞。
他們的特點是,這4個16位的暫存器可以分為高8位: ah, bh, ch, dh.以及低八位:al,bl,cl,dl。這2組8位暫存器可以分別定址,並單獨使用。
另一組是指標暫存器和變址暫存器,包括:
sp(stack pointer):堆疊指標,與ss配合使用,可指向目前的堆疊位置;
bp(base pointer):基址指標暫存器,可用作ss的乙個相對基址位置;
si(source index):源變址暫存器可用來存放相對於ds段之源變址指標;
di(destination index):目的變址暫存器,可用來存放相對於 es 段之目的變址指標。
這4個16位暫存器只能按16位進行訪問操作,主要用來形成運算元的位址,用於堆疊操作和變址運算中計算運算元的有效位址。
2.指令指標ip(instruction pointer)
指令指標ip是乙個16位專用暫存器,它指向當前需要取出的指令位元組,當biu從記憶體中取出乙個指令位元組後,ip就自動加1,指向下乙個指令位元組。注意,ip指向的是指令位址的段內位址偏移量,又稱偏移位址(offset address)或有效位址(ea,effective address)。
3.標誌暫存器fr(flag register)
8086有乙個18位的標誌暫存器fr,在fr中有意義的有9位,其中6位是狀態位,3位是控制位。
of: 溢位標誌位of用於反映有符號數加減運算所得結果是否溢位。如果運算結果超過當前運算位數所能表示的範圍,則稱為溢位,of的值被置為1,否則,of的值被清為0。
df:方向標誌df位用來決定在串操作指令執行時有關指標暫存器發生調整的方向。
if:中斷允許標誌if位用來決定cpu是否響應cpu外部的可遮蔽中斷發出的中斷請求。但不管該標誌為何值,cpu都必須響應cpu外部的不可遮蔽中斷所發出的中斷請求,以及cpu內部產生的中斷請求。具體規定如下:
(1)、當if=1時,cpu可以響應cpu外部的可遮蔽中斷發出的中斷請求;
(2)、當if=0時,cpu不響應cpu外部的可遮蔽中斷發出的中斷請求。
tf:跟蹤標誌tf。該標誌可用於程式除錯。tf標誌沒有專門的指令來設定或清楚。
(1)如果tf=1,則cpu處於單步執行指令的工作方式,此時每執行完一條指令,就顯示cpu內各個暫存器的當前值及cpu將要執行的下一條指令。
(2)如果tf=0,則處於連續工作模式。
sf:符號標誌sf用來反映運算結果的符號位,它與運算結果的最高位相同。在微機系統中,有符號數採用補碼表示法,所以,sf也就反映運算結果的正負號。運算結果為正數時,sf的值為0,否則其值為1。
zf: 零標誌zf用來反映運算結果是否為0。如果運算結果為0,則其值為1,否則其值為0。在判斷運算結果是否為0時,可使用此標誌位。
af:下列情況下,輔助進製標誌af的值被置為1,否則其值為0:
(1)、在字操作時,發生低位元組向高位元組進製或借位時;
(2)、在位元組操作時,發生低4位向高4位進製或借位時。
pf:奇偶標誌pf用於反映運算結果中「1」的個數的奇偶性。如果「1」的個數為偶數,則pf的值為1,否則其值為0。
cf:進製標誌cf主要用來反映運算是否產生進製或借位。如果運算結果的最高位產生了乙個進製或借位,那麼,其值為1,否則其值為0。)
4.段暫存器(segment register)
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 取指令 執行 暫存器 理解
問題描述 學習x86的過程中對cpu的取指 執行工作原理一直是一知半解,上網查了很多相關,發現都講的不全或者說很模糊。所以,經過自己長時間的查閱總結,終於畫出了下圖。在此之前需要說明下 cs 段暫存器 ip 指令指標暫存器 x86cpu 位址寬度20,但是cpu只能提供16位的訪問寬度,因此cpu把...