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)
為了運用所有的記憶體空間,8086設定了四個段暫存器,專門用來儲存段地址:
CS(Code Segment):程式碼段暫存器;
DS(Data Segment):資料段暫存器;
SS(Stack Segment):堆疊段暫存器;
ES(Extra Segment):附加段暫存器。
當一個程式要執行時,就要決定程式程式碼、資料和堆疊各要用到記憶體的哪些位置,透過設定段暫存器 CS,DS,SS 來指向這些起始位置。通常是將DS固定,而根據需要修改CS。所以,程式可以在可定址空間小於64K的情況下被寫成任意大小。 所以,程式和其資料組合起來的大小,限制在DS 所指的64K內,這就是COM檔案不得大於64K的原因。8086以記憶體做為戰場,用暫存器做為軍事基地,以加速工作
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)
為了運用所有的記憶體空間,8086設定了四個段暫存器,專門用來儲存段地址:
CS(Code Segment):程式碼段暫存器;
DS(Data Segment):資料段暫存器;
SS(Stack Segment):堆疊段暫存器;
ES(Extra Segment):附加段暫存器。
當一個程式要執行時,就要決定程式程式碼、資料和堆疊各要用到記憶體的哪些位置,透過設定段暫存器 CS,DS,SS 來指向這些起始位置。通常是將DS固定,而根據需要修改CS。所以,程式可以在可定址空間小於64K的情況下被寫成任意大小。 所以,程式和其資料組合起來的大小,限制在DS 所指的64K內,這就是COM檔案不得大於64K的原因。8086以記憶體做為戰場,用暫存器做為軍事基地,以加速工作