8086 有14個16位暫存器,這14個暫存器按其用途可分為(1)通用暫存器、(2)指令指標、(3)標誌暫存器和(4)段暫存器等4類。
(1)通用暫存器有8個, 又可以分成2組,一組是資料暫存器(4個),另一組是指標暫存器及變址暫存器(4個).
資料暫存器分為:
ah&al=ax(accumulator):累加暫存器,常用於運算;在乘除等指令中指定用來存放運算元,另外,所有的i/o指令都使用這一暫存器與外界裝置傳送資料.
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)
cs(code segment):**段暫存器;
ds(data segment):資料段暫存器;
ss(stack segment):堆疊段暫存器;
es(extra segment):附加段暫存器。
當乙個程式要執行時,就要決定程式**、資料和堆疊各要用到記憶體的哪些位置,通過設定段暫存器 cs,ds,ss 來指向這些起始位置。通常是將ds固定,而根據需要修改cs。所以,程式可以在可定址空間小於64k的情況下被寫成任意大小。 所以,程式和其資料組合起來的大小,限制在ds 所指的64k內,這就是com檔案不得大於64k的原因。8086以記憶體做為戰場,用暫存器做為軍事基地,以加速工作。
彙編暫存器 8086
一 組合語言中,為什麼si和di不能同時使用彙編 其實你可以想一下,這兩個暫存器的意思,si源變址暫存器,di目地變址暫存器,既然是變址暫存器,那麼他們肯定是在某個位址的基礎上進行偏移變化,由此我們就得出了需要基址暫存器。你要是把這兩個暫存器同時使用,那你位址變化的基址都沒有,你該怎麼變化呢?你在誰...
8086暫存器組
學習源於 ibm pc 組合語言程式設計 傳說中的cpu有很多組成部分 其中一部分叫作暫存器 cpu裡面有很暫存器 暫存器作用是什麼?顧名思義,就是寄與存資料啦 它的訪問速度比在儲存器快很多 組合語言需要用到暫存器,有一部分暫存器用到,有一部分用不到 因此分為程式可見暫存器,程式不可見暫存器 程式可...
8086暫存器簡介
暫存器 這裡討論的暫存器都是 cpu 中的暫存器,不包括外設上的暫存器 位於 cpu 內部,而記憶體位於 cpu 外部,而且,暫存器比記憶體可是珍貴得多啊,就拿記憶體和硬碟來比,肯定是內存在使用上珍貴得多,是 pc 中的稀有資源,而暫存器是 cpu 中的稀有資源,記憶體和暫存器相比就像硬碟和記憶體相...