3.輸入/輸出
8086和8088的1/0口地址,可以采用和存儲器統一編址。這種編址方式,訪問接口和訪問存儲器一樣。口地址也可以單獨編址。采用這種編址方式,訪問1/0時,隻利用地址總線的低16位來對接口進行尋址,與段寄存器無關。因此,1/0地址隻能占據,但屬於存儲器的保留單元,它們是為將來硬件和軟件產品開辟的備用區,用戶最好不要使用。采用1/0編址的尋址方式,通過I尺和01;”指令,實現接口和累加器之間數據的傳送而口地址可以是立即數或內容。
8086每次訪問1/0接口,可以傳送16位或8位數據。傳送16位數據時,應當把1/0地址選為偶數值,以便用一個總線周期傳送16位的數據。如果每次傳送的數據是8位,則1/0口地址可以奇數也可以偶數。8088每個總線周期隻能傳送一個字節數據,所以對於需要16位數據的1/0口,要用二個總線周期來傳送。
4.中斷係統
8086和8088能接受的中斷源,可以來自口外部,稱為外部中斷;也可以來自口內部,稱為內部中斷。中斷申請可以是由硬件產生,也可以是由軟件產生。8086和8088有處理256種中斷類別的能力。下麵分別介紹。
從存儲器單元起總共1024個單元,是用來存放256種中斷類型的中斷服務程序入口地址的表格,稱為中斷矢量表。每一個中斷類型占四個單元,兩個高字節單元用來存放服務程序的段地址,兩個低字節單元用來存放它的位移量。當響應中斷時,在中斷響應周期,由中斷響應信號了八從外部數據總線上,讀取代表中斷源類型的類型號,將類型號乘上四,所得的值就是中斷矢量表的地址。將表中四個單元的內容,即分段地址和位移量相加,就得到中斷服務程序入口地址。中斷矢量表由三部分構成:5個專用的中斷,27個備用中斷。它們的中斷矢量占據,共128個字節。這個區域不許用戶用於其他用途。這是為了保證係統正常操作和能夠與今後比公司開發的軟件或硬件兼容。第三部分是其他用途的中斷矢量共224個,這個區域用戶可以使用。
(1)外部中斷
8086和8088都有兩條中斷申請輸入線:和用來輸入外部中斷源的申請信號。
非屏蔽中斷:
信號采用邊沿觸發,它不能被軟件禁止,而且立即被鎖存起來。即不管標誌位的狀態如何,隻要有效,在現行指令執行結束,立即響應其申請。它的優頭級別高於任何。中斷屬於中斷類型2。這是規定好的,不需要再用去讀取中斷類型代碼。
屏蔽中斷:
有效和允許中斷位,才會響應中斷請求。也是在現行指令執行完後才能響應。但本身不會把信號鎖存起來,所以要求有效信號,應當保持到口對它作出響應後才能撤消。響應請求時,連續執行兩個中斷響應的總線周期。在第一個總線周期,使地址數據總線處於浮空狀態,並在發出中斷響應信號;第二個總線周期再次發出,外部申請中斷的設備就把它的中斷類型號送上數據總線,讀取它,乘上四就找到中斷矢量表入口地址,在進入中斷服務程序之前,口將標誌寄存器保護進入堆棧,然後清除標誌,禁止繼續發生可屏蔽中斷和單步中斷,並把斷點地址也保護進找,最後才從中斷矢量表中,找到中斷服務程序入口地址。
(2)內部中斷
內部中斷是由執行指令、除法出錯和單步引起的中斷。下麵分別介紹。
執行指令而產生的中斷。執行完指令後,會立即發生程序中斷,轉入類型號的中斷,找到中斷服務程序入口,用戶通過設置指令,可以利用軟件的方法,去檢查為外部中斷服務的子程序。
當溢出標誌被置“1”,執行完一條溢出中斷指令,立即發生類型中斷。
當執行除法運算時,如果聽得的商,大於被除數所在寄存器所能容納的最大數值,就立即產生類型為的中斷。
當單步標誌位二“1”,每執行完一條指令,就發生一次類型中斷。這就是單步執行方式。這對調試程序是很有用的操作。當用單步方式來調試程序時。執行完一條指令,就自動產生類型1中斷,口自動將標誌寄存器內容和斷點保護進棧;進入中斷服務程序後,不再執行單步方式。當中斷服務結束時彈出標誌和斷點,於是又重新在單步方式下操作。內部中斷具有如下特點:
“中斷類型代碼包括在指令中,是事先規定的。因此,不需要執行總線周期。
除單步中斷外,其他內部中斷不能被禁止。除單步中斷外,其他內部中斷的優先級高於外部中斷。8086和8088的中斷優先級別是,
5.存儲器編址的段結構
8086和8088把存儲區域分成若幹段,每一段是64的連續存儲單元。每一個段的起始地址稱為基址,它可以用指令來設置。段的基址放在的段寄存器中。有4個段寄存器;可以通過這四個段寄存器來訪問不同的段。存儲器的段結構,對程序的模塊化設計很方便,這四個段可支持64民字節的代碼段:字節的堆棧段和128字節的數據段,
由於存儲器編址的段結構,在涉及存儲器地址時,必須分清是物理地址還是邏輯地址。物理地址是指存儲區域中的某一個單元,地址信息是20位二進製,地址號中的一個。訪問存儲器,采用的是物理地址。但程序設計時,則采用邏輯地址。邏輯地址由段地址和位移量組成。
由於訪問存儲器的操作數類型不同,邏輯地址來源也不一樣。取指令時,用代碼段寄存器提供基址,而提供位移量找操作時是用堆棧段提供基址和提供位移厘訪問變量或操作數時,是由數據段提供基址和由計算得位移量。當去訪問存儲器,它要先把邏輯地址變為物理地址。計算實際地址公式是:物理地址:基地址位移量即將段寄存器中的基地址向左移4位,然後再和位移量相加,結果就是物理地址。
二、8086/8088指令係統的特點
1.指令兼容性
由於8086/8088是由8080發展而來的,它包含了8080/8085的全部指令,使得8080/8085的用戶軟件,很容易移植到8086/8088係統上。
2.指令格式
8086/8088采用變字節的指令格式,指令長度有1字節到6字節。
指令第一字節的2~7位是操作碼,由它來指定本指令操作內容。0是方向位。當0=0,表示1120字段(第二字節的3、4、5位)指定的寄存器是源操作數寄存器,表示1180字段指定的寄存器是目標寄存器。