**8088/8086微處理器功能結構**
**1.總線接口部件(BIU)**
**(1)功能**
~~~
從內存取指令送到指令隊列CPU執行指令時,
總線接口部件要配合執行部件為指定的內存單元或者外設端口收發數據
~~~
**(2)組成**
~~~
4個段地址寄存器,即:
CS,16位代碼段寄存器
DS,16位數據段寄存器
ES,16位附加段寄存器
SS,16位堆棧段寄存器
16位指令指針寄存器
20位地址加法寄存器
4/6字節的指令隊列緩沖器
~~~
(**3)BIU指令隊列和20位地址加法器作用**
~~~
指令隊列,指令一個一個預先排隊等候傳喚,稱為流水線技術
減少了CPU取指令等待的時間,提高了CPU的效率
加法寄存器用來產生20位地址
8086可用20位地址尋址1MB內存空間
但8086內部所有的寄存器都是16位的,
所以需要一個附加機構來根據16位寄存器提供的信息計算出20位的物理地址
這個機構就是20位的地址加法器
~~~
**2.執行部件(EU)**
**1.功能**
~~~
從指令隊列中取出指令
對指令進行譯碼
發出相應的傳送數據或算數運算的控制信號
接收由總線接口部件傳來的數據,或把數據傳送到總線接口部件
進行算數運算
~~~
**2.組成**
~~~
AX,BX,CX,DX--既可作為16位寄存器也可作為8位寄存器,
分別為AH、BH、CH、DH、AL、BL、CL、DL
AX又稱為累加器,8086指令系統許多指令都通過累加器動作來執行
AH為16位累加器,AL為8位累加器
~~~
**(2)四個專用寄存器**
~~~
基址指針寄存器BP
堆棧指針寄存器SP
源變址寄存器SI
目的變址寄存器DI
~~~
**(3)算數邏輯單元ALU**
`它是16位運算器,可用于8位或16位二進制算數和邏輯運算,也可按指令的尋址方式計算尋址寄存器所需的16位偏移量。`
**(4)數據暫存運算器**
`協助ALU完成運算,暫存參加運算的數據`
**(5)EU控制電路。**
~~~
從指令隊列取出指令操作碼
通過電路譯碼,發出相應控制命令
控制ALU的數據的流向。
如果是運算操作,操作數經過暫存寄存器送入ALU
運算結果經過ALU數據總線送到相應寄存器,
同時標志寄存器PSW根據運算結果改變狀態
~~~
**(6)標志寄存器**
~~~
標志寄存器共有16位其中7位未用。
其中6個標志位反應CPU指令運行后的運行狀態信息
SF、ZF、PF、CF、AF、OF這些標志位,
用于根據指令執行后的操作結果進行判斷轉移。
3個控制標志:DF、IF、TF
程序員可通過指令設置控制標志,有專門的標志對控制標志置0或置1
~~~
* * * * *
**寄存器結構**
**1.通用數據寄存器**
~~~
ABCD-X、16位可用作8位寄存器,分高低位,
AX作為累加器
BX作為基址寄存器
CX作為計數寄存器
DX作為數據寄存器
~~~
**2.指針變址寄存器**
~~~
分為兩個指針寄存器SP(stack pointer)、BP(base pointer)
和兩個變址寄存器SI(source index)、DI(destination index)
這組寄存器通常用來存放存儲單元的16位偏移地址
偏移地址:相對起始地址的距離
~~~
**(1)指針寄存器**
~~~
SP用來指示棧頂的偏移地址
BP存放位于堆棧段中一個數據區的"基址"的偏移量
~~~
**(2)變址寄存器**
~~~
SI存放源操作數地址的偏移量
DI存放目標操作數地址的偏移量
~~~
**3.段寄存器(segment registers)**
~~~
CS、DS、SS、ES;代碼段、數據段、堆棧段、附加段
這些寄存器指明了一個特定的現行段,用來存放各段的段基址
~~~
**4.指令指針**
~~~
IP(instruction pointer)為16位指令指針,
ip的內容總是只想BIU將要取的下一條指令代碼的16位偏移地址。
~~~
* * * * *
**8086指令隊列的作用**
> 在執行指令的同時從內存中取了一條指令或下幾條指令,取來的指令放在指令隊列中這樣它就不需要象以往的計算機那樣讓CPU輪番進行取指和執行的工作,從而提高CPU的利用率。
**8086/8088CPU有哪幾個狀態標志位,有哪幾個控制標志位?其意義各是什么?**
> 狀態標志位有6個:ZF、SF、CF、OF、AF、PF。
> 其意思是用來反映指令執行的特征,通常是由CPU根據指令執行結果自動設置的;
> 控制標志位有3個:DF、IF、TF。
> 它是由程序通過執行特定的指令來設置的,以控制指令的操作方式。
**8086/8088微處理器內部有哪些寄存器,他們的主要作用是什么?**
> 執行部件有8個16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI,
> AX、BX、CX、DX一般作為通用數據寄存器。
> SP為堆棧指針存器
> BP、DI、SI在間接尋址時作為地址寄存器或變址寄存器。
> 總線接口部件設有段寄存器CS、DS、SS、ES和指令指針寄存器IP。
> 段寄存器存放段地址,與偏移地址共同形成存儲器的物理地址。
> IP的內容為下一條將要執行指令的偏移地址,與CS共同形成下一條指令的物理地址。
**INTR、INTA、NMI、ALE、HOLD、HLDA引腳的名稱**
> INTR 可屏蔽請求信號
> INTA 中斷請求信號
> NMI 可屏蔽中斷請求信號
> ALE 地址鎖存允許信號
> HOLD 總線請求信號
> HLDA 總線請求響應信號
**什么是中斷?什么是中斷向量?中斷向量表的地址范圍?**
> 中斷就是CPU在執行當前程序時由于內外部事件引起CPU暫時停止當前正在執行的程序而轉向執行請求CPU暫時停止的內外部事件的服務程序,該程序處理完后又返回繼續執行被停止的程序;中斷向量是中斷處理子程序的入口地址;地址范圍是00000H-003FFH。
**中斷向量表的功能是什么?若中斷向量號分為1AH和20H,則他們的中斷向量在中斷向量表的什么位置上?**
> 中斷向量表的功能是當中斷源發出中斷請求時,即可查找該表,找出其中斷向量,就可轉入相應的中斷服務子程序。1AH在中斷向量表的位置是1AH×4=68H在中斷向量表0000H:0068H處;20H在中斷向量表的位置是80H在中斷向量表0000H:0080H處。
**通常解決中斷優先級的方法有哪幾種?**
~~~
3種
軟件查詢確定優先級
硬件優先級排隊電路確定優先級
中斷屏蔽接口電路
~~~
**CPU響應可屏蔽中斷的條件是什么?**
> (1)CPU必須處于開中斷狀態IF=1
> (2)CPU現行指令執行結束
> (3)沒有其他優先級高的中斷請求。
> (沒有內部中斷,沒有非屏蔽中斷,沒有總線請求)
**以可屏蔽中斷為例,說明一次完整的中斷過程主要包括哪些環節?**
> 中斷請求:外設通過硬件信號的形式、向處理器引腳發送有效請求信號。
> 中斷響應:在滿足一定條件時,處理器進入中斷響應總線周期。
> 關中斷:處理器在響應中斷后會自動關閉中斷。
> 斷點保護:處理器在響應中斷后將自動保護斷點地址。
> 中斷源識別:處理器識別出當前究竟是哪個中斷源提出了請求,
> 并明確與之相應的中斷服務程序所在主存位置。
> 現場保護:對處理器執行程序有影響的工作環境(主要是寄存器)進行保護。
> 中斷服務:處理器執行相應的中斷服務程序,進行數據傳送等處理工作。
> 恢復現場:完成中斷服務后,恢復處理器原來的工作環境。
> 開中斷:處理器允許新的可屏蔽中斷。
> 中斷返回:處理器執行中斷返回指令,程序返回斷點繼續執行原來的程序。
**在中斷響應過程中,8086往8259A發的兩個INTA信號分別起什么作用?**
~~~
在中斷響應過程中,CPU向8259A的INTR引腳發2個負脈沖。
作用:
第一個負脈沖通知8259A ,CPU允許中斷請求,要求送中斷類型;
第二個負脈沖,8259傳輸中斷類型碼。
~~~