8086CPU的兩種工作模式 - 8086CPU有哪些寄存器_各有什么用途
8086CPU的兩種工作模式
為了適應各種使用場合,在設計8086CPU芯片時,就考慮了其應能夠使它工作在兩種模式下,即最小模式與最大模式。
所謂最小模式,就是系統中只有一個8086微處理器,在這種情況下,所有的總線控制信號,都是直接由8086CPU產生的,系統中的總線控制邏輯電路被減到最少,該模式適用于規模較小的微機應用系統。
最大模式是相對于最小模式而言的,最大模式用在中、大規模的微機應用系統中,在最大模式下,系統中至少包含兩個微處理器,其中一個為主處理器,即8086/8086CPU,其它的微處理器稱之為協處理器,它們是協助主處理器工作的。
與8086CPU配合工作的協處理器有兩類,一類是數值協處理器8087另一類是輸入/輸出協處理器8089。
8087是一種專用于數值運算的協處理器,它能實現多種類型的數值運算,如高精度的整型和浮點型數值運算,超越函數(三角函數、對數函數)的計算等,這些運算若用軟件的方法來實現,將耗費大量的機器時間。換句話說,引入了8087協處理器,就是把軟件功能硬件化,可以大大提高主處理器的運行速度。
8089協處理器,在原理上有點象帶有兩個DMA通道的處理器,它有一套專門用于輸入/輸出操作的指令系統,但是8089又和DMA控制器不同,它可以直接為輸入/輸出設備服務,使主處理器不再承擔這類工作。所以,在系統中增加8089協處理器之后,會明顯提高主處理器的效率,尤其是在輸入/輸出操作比較頻繁的系統中。
8086CPU寄存器種類及用途
8086有14個16位寄存器,這14個寄存器按其用途可分為通用寄存器、指令指針、標志寄存器和段寄存器等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(StackPointer):堆棧指針,與SS配合使用,可指向目前的堆棧位置;
BP(BasePointer):基址指針寄存器,可用作SS的一個相對基址位置;
SI(SourceIndex):源變址寄存器可用來存放相對于DS段之源變址指針;
DI(DestinationIndex):目的變址寄存器,可用來存放相對于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以內存做為戰場,用寄存器做為軍事基地,以加速工作。
- 第 1 頁:8086CPU有哪些寄存器_各有什么用途
- 第 2 頁:8086CPU的兩種工作模式
本文導航
非常好我支持^.^
(8) 100%
不好我反對
(0) 0%
相關閱讀:
- [電子說] 學習STM32F103的ADC功能 2023-10-24
- [電子說] 學習STM32F103的DAC功能 2023-10-24
- [電子說] 學習STM32F103的定時器功能 2023-10-24
- [電子說] STM32基礎知識:定時器的PWM輸出功能 2023-10-24
- [電子說] 既然ODR能控制管腳高低電平,為什么還需要BSRR寄存器呢? 2023-10-24
- [電子說] ARM系列-P Channel簡析 2023-10-24
- [控制/MCU] 基于STM32F429芯片的單片機芯片內存映射圖 2023-10-23
- [電子說] 軟硬件交互的角度將中斷的知識梳理 2023-10-22
( 發表人:姚遠香 )