第二章 8086微處理器
1、8086 CPU為什么要有EU和BIU兩個單元?每個單元都由哪幾部分組成?它們的作用是什么?兩者之間有何聯系?
2、為什么設置段寄存器?它們的主要特點是什么?
3、為什么設置堆棧?堆棧操作有何特點?
4、8086預取指令隊列有什么好處?簡述預取指令機構的工作情況。
5、分別簡述AX、BX、CX、DX、SP、BP、DI的用途。
6、設CS的內容為A000H,試說明現行代碼段可尋址的存儲空間范圍是多少?
7、設現行數據段位于存儲器B0000H和BFFFFH存儲單位,問DS的內容是多少?
8、8086系統中,存儲器的物理地址由哪兩部分組成?每一個段和寄存器間有何對應要求?
9、CPU執(zhí)行轉移指令時是,指令隊列寄存器內容將如何發(fā)生變化?
10、在指令執(zhí)行過程中,EU能直接存取存儲器中操作數嗎?EU是如何得到指令中的操作數的?它有是有什么方法將指令執(zhí)行結果寫入存儲單元中?
11、有兩個16位字902AH和903BH,它們在一個8086系統存儲器中的地址分別是00020H和00023H,請用圖示標出它們在存儲器中的位置。
12、在一個8086系統中,存放如下信息,現在處理器要讀一個地址為000A3H的字,試寫出該字內容,并指出讀該字的過程。
13、設雙字12345678H的起始地址是0A001H,說明這個雙字在存儲器中是如何存放的?
14、說明8086最小模式系統和最大模式系統之間的差別。
15、試說明8086與8088微處理器之間的主要差別。
16、將兩數相加(用加法指令),即01001100B加01100101B,執(zhí)行加法指令后,CF、PF、AF、ZF、SF、OF各為何值?
第二章 自測題
1、8086CPU由哪兩部分組成?它們的主要功能是什么?8086CPU與8088CPU的主要區(qū)別是什么?
答案
8086CPU內部由執(zhí)行部件和總線接口部件兩部分組成。總線接口部件的任務是負責在I/O接口、存儲器及CPU之間進行數據傳送。執(zhí)行部件負責分析指令并執(zhí)行指令。8088CPU內部的指令隊列寄存器只有4個(8086為6個)8088的數據總線僅有8位(8086為16位)。
2、8086/8088和傳統的計算機相比,在執(zhí)行指令方面有什么不同?這種設計的優(yōu)點何在?
答案
傳統的計算機在執(zhí)行指令時取指令、分析指令和執(zhí)行指令均由內部一次完成。而 8086/8088CPU內部由EU和BIU兩個部件組成,二者間用指令隊列寄存器進行聯系。BIU由存儲器中取出指令后放入指令對列寄存器中,EU再由指令隊列中取出指令然后分析指令并執(zhí)行指令。即是說,在8086/8088CPU內部取指令和分析指令是同時進行的,這樣,CPU執(zhí)行完一條指令后馬上就可以執(zhí)行下一條指令,故可以提高運算速度。
3、8086/8088微處理器內部有哪些寄存器?其主要作用是什么?
答案
8086/8088內部的寄存器陣列可以分為四組,它們是:通用寄存器組AX,BX,CX,DX;指示器和變址寄存器SP,BP,SI,DI;段寄存器CS,DS,SS,ES;指令指示器和標志寄存器IP,FLAG。簡單地說,通用寄存器用作常規(guī)運算,寄存中間結果。指示器和變址寄存器在對寄存器的操作數尋址時,用以形成20位物理地址的偏移量,任何情況下都不能單獨形成或訪問內存的地址碼。段寄存器用以指明8086/8088 20位物理地址的高16位,它們使用專一,不可互換。指令寄存器IP用以指明要執(zhí)行指令的偏移量(段地址由CS提供)。標志寄存器用以存放運算過程中的狀態(tài)。
4、設某臺微處理器有20條地址總線和16條數據總線:
(1)若存儲器尋址空間和I/O地址的尋址空間是分開的,問存儲器空間有多大?
(2)經由數據總線可傳送的帶符號數的范圍是多大?
答案
(1)存儲器的尋址空間為220=1MB。
(2)可傳送的帶符號數的范圍為-32768~+32767。
5、有兩個16位字1EF5H和2A3DH分別存放在00B0H和00BCH單元中,用圖表表示它們在存儲器里存放情況。
答案

6、存儲器里存放的信息如圖所示。試讀出30022H,30024H單元字節(jié)的內容及30021H及30022H單元字的內容。
答案
(30022H)=ABH (30024H)=EFH
(30021H)=AB34H (30022H)=CDABH
7、寫出下列存儲器地址的短地址、偏移地址和物理地址。
(1)2314H:0035;(2)1FD0H:00A0H;(3)0000H:0100H;(4)3FB0H:0053H
答案
題號段地址偏移地址物理地址
(1)2314H0035H23175H
(2)1FD0H00A0H1FDA0H
(3)0000H0100H00100H
(4)3FB0H0053H3FB53H
8、如果在一個程序段開始執(zhí)行之前,(CS)=0A7EH,(IP)=2B40H。試問:該程序段的第一個字的物理地址?指向這一物理地址的CS值和IP值是唯一的嗎?
答案
該程序段第一個字節(jié)的物理地址為(CS)×16+IP=0D320H,該字節(jié)的物理地址是唯一的,但段地址和偏移地址不是唯一的。例如(CS)=0D301H,IP=0020H,其物理地址亦為0D320H。
9、狀態(tài)標志和控制標志有何不同?程序中如何利用這兩類標志?8086/8088的狀態(tài)標志和控制標志有哪些?
答案
狀態(tài)標志表示前面的操作執(zhí)行后,算術邏輯部件處在怎樣一個狀態(tài),這種狀態(tài)會像某種先決條件一樣影響后面的操作??刂茦酥臼侨藶樵O置的,8086/8088指令系統中有專門的指令用于控制標志的設置與清除。每個控制標志都對某種特定的功能起控制作用。
10、將十六進制數62A0H與下列各個數相加,試給出和數及標志AF,SF,ZF,CF,OF和PF的狀態(tài):
(1)1234H;(2)4321H;(3)CFA0H;(4)9D60H
答案
(1)0111010011010100
SF=0 ZF=0 PF=1 CF=0 AF=0 OF=0
(2)1010010111000001
SF=1 ZF=0 PF=0 CF=0 AF=0 OF=1(用雙高位判別)
(3)10011001001000000
SF=0 ZF=0 PF=0 CF=1 AF=0 OF=0
(4)0000000000000000
SF=0 ZF=1 PF=0 CF=1 AF=0 OF=0
11、在某個程序的運行過程中,堆棧的棧頂單元偏移地址為7F80H,而堆棧中相應數據區(qū)存放一個偏移地址為74CAH的數。試問:當執(zhí)行程序要引用該數據區(qū)中的數據時,上述兩個地址應防在寄存器中?提示:棧中的數據為程序的偏移地址。
答
在堆棧操作中,段地址只能用在SS,而偏移地址只能由SP來提供,故棧頂單元的偏移地址7F80H只能放在SP中,根據題意,堆棧中存放的數為程序的偏移地址,因此它也只能放在指令寄存器IP中。即74CAH在引用此數時放入IP中。
12、試述8086/8088中SP,BP,SI,DI有何特殊用途。
答
SP,BP,SI,DI分別叫做指示器和變址寄存器。它們的通常用法是在尋址過程中作為偏移得罪寄存器。此外它們還有自己的特殊用法。SP和BP在運算中訪問當前堆棧數據提供了方便,把堆棧段作為一個“數據區(qū)”,對執(zhí)行高級語言很有用途。這樣,除非特別指定,存放在指示器中的偏移量,總是假定為引用當前的數據段。有些指令又把SP和BP加以區(qū)分,如PUSH,POP,只用SP作偏移量。BP不能用作這個目的,但卻可以用著堆棧段中一個數據區(qū)的“基址”的偏移量。SI和BI一般是假定為引用當前數據段基址的偏移量。另外在數據串操作指令中,SI和DI的使用非常專一。SI只能作為源操作數的偏移地址,而DI只能作為目標操作數的偏移地址。而者絕對不可以互換。還應當指出,在串操作指令中,串操作指令不能直接地指定它們,因它們是被隱含指定的。
13、現有8個字節(jié)的數據為:34H,45H,56H,67H,78H,89H,9AH,ABH,假定它們在存儲器中的物理地址為400A5H~400ACH。若當前(DS)=4002H,試求各存儲單元的有效地址;若從存儲器中讀出這些數據,試問需要訪問幾次存儲器?
答案
根據題意,該數據段第一字節(jié)的物理地址為400A5H,而段地址為4002H,故第一個字節(jié)的有效地址為400A5H-4002H×16=0085H。依次類推,各個字節(jié)的有效地址分別為0085H,0086H,0087H,0088H,0089H,008AH,008BH和008CH。
由于數據是以字節(jié)的形式存放的。因此每讀一個字節(jié)需訪問一次存儲器,共需8個總線周期。若是以字節(jié)的方式讀出這些數據,由于存放的格式為非對準字,每讀出一個非對準字需要兩個總線周期,四個非對準字共需8個總線周期。
14、選擇題:
(1)計算機使用總線結構的優(yōu)點是便于實現積木化,同時( )。
(A)減少了信息傳輸量;(B)提高了信息傳輸速度;(C)減少了信息傳輸線的條數。
其缺點是( )。
(D)地址信息、數據信息結合控制信息不能同時出現;(E)地址信息和數據信息不能同時出現;(F)兩種信息源的代碼在總線中不能同時傳遞。
(2)微型計算機的控制總線提供( )。
(A)數據信息流;(B)存儲器和I/O設備的地址碼;(C)所有存儲器和I/O設備的時序信號;(D)所有存儲器和I/O設備的控制信號;(E)來自I/O設備和存儲器的響應信號;(F)上述各項;(G)上述C、D項;(H)上述C、D和E三項。
(3)總線中地址線的功能是( )。
(A)用于選擇存儲器單元;(B)用于選擇進行信息傳輸的設備;(C)用于指定存儲單元和I/O設備接口電路的選擇地址。
(4)微型計算機中讀/寫控制信號的作用是( )。
(A)決定數據線上的數據流方向;(B)控制存儲器或I/O接口操作(R/W)的類型;(C)控制流入、流出存儲器或I/O接口信息的方向;(D)以上任意用。
答案
(1)C,F (2)H (3)C (4)A,B,C
15、填空題:
(1)8086工作在最小模式下,控制數據流方向的信號是 、 、 、 、 。
(2)為了減輕總線負載,總線上的不見大都應具有三態(tài)邏輯,三態(tài)邏輯電路輸出信號的三個狀態(tài)是 、 、 。
(3)微處理器總線響應物理上的含義是 。
答案
(1)M/IO,RD,WR,DT/R,DEN
(2)高電平,低電平,高阻
(3)CPU的地址總線、數據總線和三態(tài)的控制總線已處于高阻狀態(tài)。
16、在8086/8088中RESET信號來到后,CPU的狀態(tài)有哪些特點?
答案
(1)把CPU內部寄存器置初值:指令隊列及FLAG,IP,DS,ES和SS均清零,CS置為FFFFH。
(2)由于狀態(tài)標志被清0,故不能響應可屏蔽中斷。
(3)將所有的三態(tài)輸出線置成成高阻狀態(tài),包括:AD0~AD15。A16/S3~A19/S6,BHE/S7,M/IO,DT/R,DEN,WR,RD,INTA。
(4)其它信號線狀態(tài):ALE,HLDA,QS0,QS1置為邏輯“0”,RQ/GT0,RQ/GT1置為邏輯“1”。
17、BHE信號和A0信號是通過怎樣的組合解決存儲器和I/O端口讀/寫操作的?這種組合決定了8086系統中存儲器偶地址及奇地址之間應該用什么信號區(qū)分?怎樣區(qū)分?
答案
在8086中把1MB的存儲空間分為512KB的存儲體,一個用于存放偶數地址字節(jié)(低字節(jié)),一個用于存放奇數字節(jié)(高字節(jié)),兩個存儲體之間采用交叉編址方式,即用地址線A0作為偶存儲體的地址選通信號。A0=0選通偶存儲體,偶存儲體的數據線與數據總線的高8位(D8~D15)相連。CPU可以訪問任何一個存儲體,讀/寫一個字節(jié),也可以同時訪問兩個存儲體讀寫一個字節(jié)。
18、試說明空閑周期的含義。
答案
所謂空閑狀態(tài)是指總線接口部件BIU不和總線交換信息的狀態(tài)。由于當BIU需要補充指令隊列流的空缺或當EU執(zhí)行指令過程中需經外部總線與存儲器或I/O接口之間進行信息傳輸時,CPU才執(zhí)行總線周期。在不執(zhí)行總線周期時,就不存在總線周期,但卻存在時鐘周期。沒有總線活動的周期被稱為總線空閑周期T1。
在總線空閑周期,雖然不進行總線操作,但CPU內部的EU卻仍在進行著有效的操作。因此總線空閑周期是總線接口部件BIU對執(zhí)行部件的等待。
*19、時鐘發(fā)生器8284的功能是什么?畫出它的電路圖。
答案
時鐘發(fā)生器8284的作用是為8086/8088CPU提供頻率恒定的時鐘信號;同時還提供了復位信號發(fā)生電路和“準備好”信號控制電路,復位信號發(fā)生電路提供系統復位信號RESET,“準備好”信號控制電路用于對存儲器或I/O口產生 的“準備好”信號READY進行同步。關于線路圖及引腳的使用請參考資料。
20、總線周期的含義是什么?8086/8088的基本總線周期由幾個時鐘周期組成?假定某8086CPU的時鐘頻率為24MHz,試問它的一個時鐘周期是多少?一個基本總線周期是多少?
答案
CPU訪問存儲器或I/O端口存取一個字節(jié)所需的時間稱為一個總線周期。8086/8088的基本總線周期由4個時鐘周期組成,分別叫做T1,T2,T3,T4。8086/8088的讀周期和寫周期是有差別的。
當8086的時鐘頻率為24MHz時,一個時鐘周期為1us/24,一個基本的總線周期為1us/24×4=1us/6。
21、從引腳上看,8086和8088有什么區(qū)別?
答案
8086和8088引腳的差別如下(均為最小方式比較):
比較項80868088
數據線168
地址/數據復用線168
存儲器/I/O接口選通線M/IOIO/M
高位地址選通信號BHE/S7選通寄存儲體無,SS0與IO/M,DT/R組合產生控制信號
22、在8086的微機系統中,為什么采用AD0作為低8位數據的選通信號?
答案
在8086中,存儲器結構有奇偶之分,又規(guī)定,當讀/寫一個字時,若從偶地址開始,則只需一個總線周期;若從奇地址開始,則需兩個總線周期。數據存放格式又規(guī)定為低字節(jié)在地址的低位,高字節(jié)在地址的高位。上述因素決定了能滿足系統規(guī)定的要求,又能加快信息的存取時間,用AD0=0作為偶存儲體(存放低8位數據)的選通信號。
23、8086和8088在最大模式和最小模式下,引腳信號分別有什么不同?
24、8086和8088如何解決地址線和數據先的復用問題?ALE信號何時處于有效狀態(tài)?
答案
8086/8088通過外接地址鎖存器解決地址線和數據線的復用問題。當ALE處于有效狀態(tài)時,CPU地址/數據復用線上輸出的為地址信息。
*25、試述總線控制器8288的功能;并說明8086在最大模式下為什么一定要用總線控制器;總線控制起輸入及輸出信號各是什么?
答案
簡單地說,總線控制器8288用來對8086/8088的CPU控制信號進行轉換,以使8086/8088工作在最大模式時能完成對多CPU處理系統中的總線爭用問題,同時保證各處理器之間能正常通信。具體地說,8288有如下6種功能:
(1)產生系統總線控制信號或僅訪問I/O設備的I/O控制信號(INTA,IORC,IOWC)。即可選擇8288是工作于系統總線方式還是I/O總線工作方式。
(2)使總線控制信號浮空,以允許DMA操作或決定總線優(yōu)先權。
(3)提供超前控制信號,以便和慢速存儲器及I/O設備交換信息。
(4)實現使控制信號無效控制,以供多CPU結構使用。
(5)產生ALE地址鎖存允許信號和雙向數據驅動的控制信號DEN和DT/R。
(6)產生簡單或級聯中斷邏輯所需的控制信號。
8288輸入、輸出信號(略)。
*26、8086系統在最小模式下的基本配置如何?試畫出這種配置的連接關系。
答案
8086系統在最小模式時需配備如下器件:8284時鐘發(fā)生器,20位地址鎖存器(用3片8282或8283完成,亦可用74LS373完成),用以鎖存有效地址。用ALE作為選通信號,用2片8286(或8287,74LS245)作為數據總線驅動器,其控制信號有DT/R或DEN。
連線圖請參考相關資料。此處略。
27、試述T1狀態(tài)下地址/數據總線上的信息類型及鎖存信號狀態(tài)。數據信息在何時有效。用時序圖表示。
答案
在T1狀態(tài)下,首先由M/IO指明是進行的I/O操作還是存儲器操作。地址/數據復用線給出進行操作的地址(存儲器操作20位,I/O操作16位),地址鎖存信號ALE處于有效狀態(tài)(高電平)以鎖存地址。BHE信號為有效狀態(tài)(低電平)以便輸入/輸出數據的高8位。
在T3狀態(tài)下,數據線上出現有效數據。
*28、畫出8086在最小模式下的讀周期時序。
答案
8086在最小模式下的讀周期時序如圖所示:

