《微型計算機(jī)原理與接口技術(shù)》第二版答案張榮標(biāo).doc
微型計算機(jī)原理與接口技術(shù)第二版答案 張榮標(biāo) 機(jī)械工業(yè)出版社第一章1.5 練習(xí)題1選擇題(1)B C A (2) A (3) D A (4) C2填空(1) 10, 12(2) 階數(shù)(3) 10011100B,01000100B,1110000B,01000000(4) 3F7H,1C3H,243H,277H, 3簡答題(1)微處理器,微型計算機(jī)和微型計算機(jī)系統(tǒng)三者有何聯(lián)系與區(qū)別?微處理器是把原來的中央處理單元CPU的復(fù)雜電路(包括運算器和控制器)做在一片或幾片大規(guī)模集成電路的芯片上。把這種微縮的CPU大規(guī)模集成電路稱為微處理器。微型計算機(jī)是以微處理器為核心,再配備上用大規(guī)模集成電路工藝制成的存儲器和 I/O接口就構(gòu)成了微型計算機(jī)。以微計算機(jī)為核心,再配備上系統(tǒng)軟件、I/O設(shè)備、輔助電路和電源就構(gòu)成了微機(jī)系統(tǒng)。微型計算機(jī)系統(tǒng)包括硬件和軟件了兩大部分。(2)計算機(jī)中為什么采用二進(jìn)制數(shù)表示?(3)簡述程序的運行過程。第2章2.10 練習(xí)題1. 選擇題1. B 2.D 3.C 4.B 5.C 6.C 7.B 8.A 9.A2填空題(1) 地址總線的寬度,00000H0FFFFFH(2) 寄存器,運算器,控制器;運算和控制(3) SS,DS,CS,ES(4) MN/MX(5) SS,DS(7) 奇區(qū),偶區(qū),高8位,低8位3簡答題(1) 什么是指令周期?什么是總線周期?一個總線周期至少包括幾個時鐘周期?指令周期是一條指令執(zhí)行所需的時鐘周期,cpu在執(zhí)行指令過程中,凡需執(zhí)行訪問存儲器或訪問I/O端口的操作都統(tǒng)一交給BIU的外部總線完成,進(jìn)行一次訪問所需的時間稱為一個總線周期。一般一個基本的總線周期由4個時鐘周期組成。(2) 8086CPU在最小模式下構(gòu)成計算機(jī)系統(tǒng)至少應(yīng)該包括哪幾個基本的部分?(3) 8086CPU中,標(biāo)志寄存器包含哪些標(biāo)志位?各標(biāo)志位為0,1分別表示什么含義?(4) 8086CPU中有哪些通用寄存器和專用寄存器?說明他們的作用。(5) 在8086CPU中,已知CS寄存器和IP寄存器的內(nèi)容分別如下所示,請確定其物理地址.1) CS=1000H ,IP=2000H 物理地址: CS*16+IP=10000H+2000H=12000H2) CS=1234H ,IP=0C00H物理地址: CS*16+IP=12340H+0C00H=12F40H(6)設(shè)(AX)=2345H,(DX)=5219H,請指出兩個數(shù)據(jù)相加或相減后,FLAG中狀態(tài)標(biāo)志位的狀態(tài).相加 :CF=0,SF=0,ZF=0,AF=0,OF=0,PF=0相減: 0010 0011 0100 0101 1101001000011001 補(bǔ) 1010 1101 1110 0111 1101 0001 0010 1110CF=0,SF=1,ZF=0,AF=0,OF=0,PF=0(7)8086CPU工作在最小模式下:訪問存儲器要利用:M/IO、ALE、BHE、RD、WR、DT/R、DEN、READY和數(shù)據(jù)、地址總線。訪問I/O要利用:M/IO、ALE、BHE、RD、WR、DT/R、DEN、READY和數(shù)據(jù)、地址總線。當(dāng)HOLD有效并得到響應(yīng)時,CPU置高阻的信號有:數(shù)據(jù)/地址總線、數(shù)據(jù)狀態(tài)總線及M/IO、BHE、RD、WR、DT/R、DEN、INTA。第三章3.7練習(xí)題P1201選擇題 (1)D (2)C (3)A (4)A2填空題 (1)遞增 1A,3B,5C,8D (2)60H 0 (3)1F02CH4請指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式。 (1)源操作數(shù)為立即尋址,目的操作數(shù)為寄存器尋址 (2)源操作數(shù)為立即尋址,目的操作數(shù)為寄存器間接尋址 (3)源操作數(shù)為寄存器間接尋址,目的操作數(shù)為寄存器尋址 (4)源操作數(shù)為寄存器尋址,目的操作數(shù)為寄存器尋址 (5)單一操作數(shù)(源操作數(shù))為寄存器尋址 (6)單一操作數(shù)(目的操作數(shù))為寄存器尋址 (7)源操作數(shù)為相對基址變址尋址,目的操作數(shù)為寄存器尋址 (8)源操作數(shù)為寄存器間接尋址,目的操作數(shù)為寄存器尋址 (9)源操作數(shù)為立即尋址和寄存器尋址,目的操作數(shù)寄存器尋址 (10)單一操作數(shù)為段間直接尋址(相對變址尋址)5請寫出如下程序片段中每條邏輯運算指令執(zhí)行后標(biāo)志ZF、SF、和PF的狀態(tài):MOV AL, 0AH ; 各標(biāo)志位保持不變AND AL, 0FH ; ZF=0 SF= 0 PF=1OR AL, 04BH ; ZF=0 SF= 0 PF=1XOR AL, AL ; ZF=1 SF= 0 PF=16請寫出如下程序片段中每條算術(shù)運算指令執(zhí)行后標(biāo)志CF、ZF、SF、OF、PF和AF的狀態(tài):MOV AL, 54H ; 各標(biāo)志位保持不變ADD AL, 4FH ; CF=0 ZF=0 SF= 1 OF=1 AF=1 PF=1CMP AL, 0C1H ; CF=1 ZF=0 SF=1 OF=0 AF=0 PF=1SUB AL, AL ; CF=0 ZF=1 SF= 0 OF=0 AF=0 PF=1INC AL ; CF=0 ZF=0 SF= OF=0 AF=0 PF=07.(DS)=3000H,(SS)=1500H,(SI)=010CH,(BX)=0870H,(BP)=0500H,指出下列指令的目的操作數(shù)字段尋址方式,并計算目的操作數(shù)字段的物理地址。(1) MOV BX, CX 目的操作數(shù)為寄存器間接尋址目的操作數(shù)的物理地址為:DS16+0870H=30870H (2) MOV 1000H, BX 目的操作數(shù)為直接尋址目的操作數(shù)的物理地址為:DS16+1000H=31000H(3) MOV BP, BX 目的操作數(shù)為寄存器間接尋址目的操作數(shù)的物理地址為:SS16+0500H=15500H(4) MOV BP+100, CX 目的操作數(shù)為寄存器相對尋址目的操作數(shù)的物理地址為:SS16+0500H+64H=15564H(5) MOV BX+100SI, CX 目的操作數(shù)為相對基址加變址尋址目的操作數(shù)的物理地址為:DS16+0870H+64H+010CH=309E0H8指出如下指令哪些是錯誤的,并說明原因:(1)MOV SP, BX錯。 (2)MOV CS, BX錯。CS寄存器不能賦值,要由裝入程序確定(3)POP CS錯。CS寄存器不能賦值,要由裝入程序確定(4)JMP BX對。(5)SUB BP+DI-1000,AL錯。偏移量不能為負(fù)。但編譯能通過。(6)SHL AX,CX錯。源操作數(shù)最大為255,只能是CL,不能是CX(7)XCHG ES:BX,AL對。(8)LEA AX,BX+DI對。9已知(SS)=2800H,(SP)=0010H,(AX)=0FA0H,(BX)=1002H,下列指令連續(xù)執(zhí)行,請指出每條指令執(zhí)行后SS、SP、AX、BX寄存器中的內(nèi)容是多少?PUSH AX ;(SS)=2800H,(SP)=000EH,(AX)=0FA0H,(BX)=1002HPUSH BX ;(SS)=2800H,(SP)=000CH,(AX)=0FA0H,(BX)=1002HPOP AX ;(SS)=2800H,(SP)=000EH,(AX)=1002H,(BX)=1002HPOP BX ;(SS)=2800H,(SP)=0010H,(AX)= 1002H,(BX)= 0FA0H10.閱讀下列各小題的指令序列,在后面空格中填入該指令序列的執(zhí)行結(jié)果。(1)MOV BL,26H MOV AL,95H ADD AL,BLDAAAL= 21H BL= 26H CF=1(2)MOV AX,1E54H STC MOV DX,95 XOR DH,0FFHSBB AX,DX AX= 1EF5H CF=111.已知程序段如下: CMP AX,BX JNC K1 JNO K2 JMP K3假設(shè)有以下三組AX、BX值,那么在程序執(zhí)行后,分別轉(zhuǎn)向哪里?(1)(AX)=0E301H,(BX)=8F50H轉(zhuǎn)向K1(2)(AX)=8F50H,(BX)=0E301H轉(zhuǎn)向K2(1)(AX)=147BH,(BX)=80DCH轉(zhuǎn)向K3第四章4.9練習(xí)題P1601選擇題 (1)C B (2)B (3)B (4)D3(1) DATA1 EQU THIS BYTE DA1 DW 1234H,567H,89ABH(2) DATA2 DW 56H,0BCH,79H,14H(3) DATA3 DB 6DUP(c),2DUP(3,3,1), 20DUP(?)(4) STRING DB HELLO WORLD!4. DATA1 DB 00H,0AH,10H DATA2 DB 15 DUP(04H,3DUP(08H),09H) DATA3 DW 6577H,636CH,6D6FH5.LEA BX,TABLEMOV BX,OFFSET TABLE8. (1)宏展開: + PUSH AX + MOV AX,AX + SUB AX,AX + CMP AX,0 + JGE NEXT(0014) + MOV BX,AX + POP AX (2)調(diào)用無效。語法錯誤(立即數(shù)的使用)。 (3) 宏展開: + PUSH AX + MOV AX,BX+SI + SUB AX, BX+SI+X + CMP AX,0 + JGE NEXT(0025) + MOV CX,AX + POP AX調(diào)用無效。相對基址加變址尋址方式形成的值在匯編時是不知道的。11.CMPN MACRO X,Y,SUM PUSH AX PUSH DXMOV AL,X CMP AL,Y JNC K1 MOV DL,5 MUL DL ADD AX,Y JMP K2K1: MOV AL,Y MOV DL,5 MUL DL ADD AX,XK2: MOV SUM,AX POP AX ENDM12.DSEG SEGMENTCHAR DB 61 DUP(?)DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART PROC FAR MOV AX,DSEG MOV DS,AXMOV DX,OFFSET CHARMOV AH,0AHINT 21HMOV DX,OFFSET CHARMOV AH,09HINT 21HMOV AH,4CHINT 21HSTART ENDP CSEG ENDS END START 第五章5.8練習(xí)題4、試編寫一匯編程序,要求實現(xiàn)將ASCII碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換為一字節(jié)二進(jìn)制數(shù)。DATA SEGMENT ASC DB 36H,35H ASCEND DB ?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATADECIBIN PROC FAR MOV AX,DATA MOV DS,AX MOV BX,OFFSET ASC MOV AL,BX CMP AL,30H JL EXIT CMP AL,39H JG EXIT SUB AL,30H MOV DL,BX+1 CMP DL,30H JL EXIT CMP DL,39H JG EXIT SUB DL,30H MOV CL,10 MUL CL ADD AL,DL MOV ASCEND,AL EXIT: MOV AH,4CH INT 21H DECIBIN ENDP CODE ENDS END DECIBIN5.某存儲區(qū)中存有20個單字節(jié)數(shù),試編寫一匯編語言分別求出其絕對值并放回原處。DSEG SEGMENT MUM DB 1,2,3,-9,0,7,5,-4,-7,-11,34,-67,-44,-51,1,3,6,8,9,3DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG, DS:DSEGSTART PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV CX,20 MOV SI,OFFSET MUMLP1: MOV AL,SI AND AL,AL JNS DONE NEG ALDONE: MOV SI,AL INC SI LOOP LP1 MOV AH,4CH INT 21HSTART ENDPCSEG ENDS END START6、試編寫一匯編程序,將AX中的各位取反,然后統(tǒng)計出AX中“0”的個數(shù),將結(jié)果保存到CL中。CODE SEGMENTMAIN PROC FAR ASSUME CS:CODESTART: MOV AX,0E001H MOV DL,0 MOV CL,16 NOT AXRETEST: AND AX,AX JS SKIP INC DLSKIP: SHL AX,1 LOOP RETEST MOV CL,DLEXIT: MOV AH,4CH INT 21HMAIN ENDPCODE ENDS END START12 已知a1a20依次存放在以BUF為首址的數(shù)據(jù)區(qū),每個數(shù)據(jù)占兩個字節(jié),SUM也是兩個字節(jié)。試編程計算SUM=a1+a2+a3+.+a20DATA SEGMENT DAT DW 0,1,8,27,64,-9,-5,6,77,-5,55,88,99,33,55,1,3,5,6,87 SUM DW ?DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,0 MOV SUM,AX MOV SI,OFFSET DAT MOV CX,20LP1: ADD AX,SI INC SI INC SI LOOP LP1 MOV SUM,AX MOV AH,4CH INT 21HMAIN ENDPCODE ENDS END START14 編一字程序,計算f(t)=at3+bt2+ct+d。設(shè)a,b,c,d,t均為一位十進(jìn)制數(shù),結(jié)果存入RESULT單元。DATA SEGMENT AA1 DB 8 BBB DB 5 CCC DB 5 DDD DB 5 TTT DB 2 QQQ DW 3 DUP(?) RESULT DW ?DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI, OFFSET QQQ MOV BL,TTT MOV BH,0 MOV AX,BX MUL BX MOV SI,AX ;存t2 MUL BX MOV SI+2,AX ; 存t3 MOV AL,AA1 MOV AH,0 MUL WORD PTRSI+2 MOV RESULT,AX MOV AL,BBB MOV AH,0 MUL WORD PTRSI ADD RESULT,AX MOV AL,CCC MUL TTT ADD RESULT,AX MOV AL,DDD MOV AH,0 ADD RESULT,AX MOV CX,RESULT MOV AH,4CH INT 21HMAIN ENDPCODE ENDS END START15 求出前20個Fibonacci數(shù),存入數(shù)據(jù)變量FN開始的區(qū)域中。Fibonacc數(shù)的定義為:f0=0,f1=1,fn+2=fn+fn+1DATA SEGMENT F1 DW 0 F2 DW 1 FN DW 20 DUP(?) RESULT DW ?DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,18 MOV AX,F1 MOV BX,F2 MOV SI,OFFSET FN MOV SI,AX INC SI INC SI MOV SI,BXLL: ADD AX,BX ADD SI,2 MOV SI,AX MOV BX,SI-2 LOOP LL MOV AH,4CHINT 21HMAIN ENDPCODE ENDS END START第6章 (p231)6.8練習(xí)題1. 填空題(1) 隨機(jī)存取存儲器,消失,只讀存儲器,不會改變和消失(2) 8,13,8(3) 0.1452. 簡答題(3)9,4,14,7(4)8,128*8第七章7.6練習(xí)題1.選擇題(1)B(2)C D(3) B2,(1)0100:48B0 0100:48B3 4(2)8 57 (3)中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷服務(wù)、中斷返回4,PORT0 EQU 40HPORT1 EQU 41H;設(shè)置I/O地址號為40H和41H MOV AL,13HMOV DX,PORT0OUT DX,AL ;設(shè)置ICW1命令字 邊沿觸發(fā)方式,單片無級聯(lián),需要設(shè)置ICW4 INC DX;DX增1,為設(shè)置下面的命令字做準(zhǔn)備 MOV AL,08HOUT DX,AL;設(shè)置ICW2,中斷類型號為從08H開始的8個 MOV AL,09HOUT DX,AL; 設(shè)置ICW4 一般EOI緩沖方式,全嵌套方式5,MOV DX,1207HIN AL,DXOR AL,0101 1000B(或者58H)OUT DX,AL7,(1)主片:08H0FH 從片:80H87H (2)譯碼器輸入可任選6個地址信號,從片的INT輸入可以任選主片除IR5的中斷源,下面的程序中選的是IR2 (3)主片初始化程序:MOV AX,00HMOV DS,AXMOV BX,0DH*4MOV AX,1260HMOV DS:BX,AXMOV AX,4310HMOV DS:BX+2,AX MOV AL,11HOUT 30H,AL MOV AL, 08HOUT 31H, AL MOV AL,04HOUT 31H,ALMOV AL,1DHOUT 31H,AL 從片初始化程序:MOV AX,00HMOV DS,AXMOV BX,85H*4MOV AX,2340HMOV DS:BX,AXMOV AX,4310HMOV DS:BX+2,AX MOV AL,11HOUT 36H, ALMOV AL, 80HOUT 37H ,ALMOV AL, 02HOUT 37H, ALMOV AL,01HOUT 37H,AL第8章2、I/O接口的主要功能有哪些? 一般有哪兩種編址方式?兩種編址方式各自有什么特點?I/O接口的主要功能有:(l)解決CPU與外設(shè)之間速度不匹配問題(2)實現(xiàn)信號電平的轉(zhuǎn)換(3)實現(xiàn)信號格式的轉(zhuǎn)換 I/O端口的編址方式有兩種:統(tǒng)一編址方式和獨立編址方式。(1)統(tǒng)一編址方式(存儲器映像尋址)優(yōu)點:1)簡化了指令系統(tǒng)的設(shè)計,在微處理器指令集中不必包含I/O操作指令;2)訪問I/O設(shè)備的指令類型多、功能強(qiáng),能用訪問存儲器指令,對I/O設(shè)備進(jìn)行方便、靈活的操作;3)I/O地址空間可大可小,能根據(jù)實際系統(tǒng)上的外設(shè)數(shù)目來調(diào)整。缺點:I/O端口占用了存儲單元的地址空間,且I/O譯碼電路變得較復(fù)雜。其次,訪問存儲器的指令一般要比較長,這樣延長了輸入輸出操作時間。(2)獨立編址方式優(yōu)點:1)可讀性好,輸入輸出指令和訪問存儲器的指令有明顯的區(qū)別,使程序清晰;2)I/O指令長度短,執(zhí)行的速度快,占用內(nèi)存空間少;3)I/O地址譯碼電路較簡單。缺點:CPU指令系統(tǒng)中必須有專門的IN和OUT指令,而且這些指令的功能沒有訪問存儲器的指令強(qiáng)。 4、什么是直接存儲器存取方式(DMA)?DMA控制器在CPU與外設(shè)的數(shù)據(jù)傳送過程中發(fā)揮怎樣的作用?直接存儲器傳送DMA指將外設(shè)的數(shù)據(jù)不經(jīng)過 CPU直接送入內(nèi)存儲器,或者,從內(nèi)存儲器不經(jīng)過CPU直接送往外部設(shè)備。DMA控制器的功能:(1)能向CPU發(fā)出總線請求信號(2)能實行對總線的控制(3)能發(fā)送地址信號并對內(nèi)存儲器尋址(4)能修改地址指針(5)能向存儲器和外設(shè)發(fā)出讀寫控制信號(6)能判斷DMA傳送是否結(jié)束(7)能發(fā)出DMA過程結(jié)束信號,使CPU能正常工作 7、在8086微機(jī)系統(tǒng)中,有一外設(shè)的接口地址為2A8H2AFH,請用74LS128譯碼器設(shè)計符合要求的地址譯碼電路. 9、一個采用查詢式數(shù)據(jù)傳送的輸出接口,其數(shù)據(jù)端口地址為300H,狀態(tài)端口地址為301H,外設(shè)狀態(tài)位用D7位表示。如果要將存儲器緩沖區(qū)DATA中的200個字節(jié)數(shù)據(jù)通過該輸出口輸出,畫出流程圖,編寫控制程序段。程序段為: LEA SI,DATAMOV CX,200LP1: MOV DX,301HNR: IN AL,DX SHL AL,1JNC NRDEC DXMOV AL,SIOUT DX,ALINC SILOOP LP1第9章1、(1)D(2)C(3)B(4)D2、填空題(1)3,基本輸入/輸出方式,選通輸入/輸出方式,雙向總線I/O方式(2)外設(shè)響應(yīng)信號(3)方式選擇控制字,置位/復(fù)位控制字(4)中斷允許信號,PC6 3、設(shè)8255A的端口A和B均工作與方式1,端口A輸出,端口B和C為輸入,端口A地址為00C0H。(1)寫出工作方式控制字。0AFH(2)編寫8255A的初始化程序。MOV DX,00C3 HMOV AL,0AFHOUT DX,AL(3)若要用置位/復(fù)位方式將PC2置為1,PC7清0,試寫出相應(yīng)程序。MOV DX,00C3HMOV AL,05HOUT DX,ALMOV AL,0EHOUT DX,AL 4、現(xiàn)擬用8255A設(shè)計一個3X3的鍵盤,并通過發(fā)光二極管顯示按鍵狀態(tài)。要求該鍵盤能表示數(shù)字19,且按下18按鍵時,有一個相應(yīng)的發(fā)光二極管點亮,若按下按鍵9,則8個二極管同時發(fā)亮。設(shè)計并畫出相應(yīng)接口電路。第十章3、試編程,要求將8253計數(shù)器0設(shè)置為方式0,計數(shù)初值為3000H,計數(shù)器1設(shè)置為方式2,計數(shù)初值為2010H,計數(shù)器2設(shè)置為方式4,計數(shù)初值為4030H。假設(shè)端口地址為284H287HMOV AL,30H ;計數(shù)器0MOV DX,287HOUT DX,ALMOV DX,284HMOV AL,00HOUT DX,ALMOV AL,30HOUT DX,AL MOV AL,74H;計數(shù)器1MOV DX,287HOUT DX,ALMOV DX,285HMOV AL,10HOUT DX, ALMOV AL,20HOUT DX, AL MOV AL,0B8H;計數(shù)器2MOV DX,287HOUT DX,ALMOV DX,286HMOV AL,30HOUT DX, ALMOV AL,40HOUT DX, AL 4、8253利用軟件產(chǎn)生一次性中斷,最好采用哪種方式?若將計數(shù)初值送到某端口的計數(shù)值寄存器后經(jīng)過20ms產(chǎn)生一次中斷,如何進(jìn)行編程?設(shè)時鐘頻率CLK為1MHz。N=20000 MOV AL,38H;計數(shù)器0方式4MOV DX,287HOUT DX,ALMOV DX,284HMOV AX,20000 ;初值為20000OUT DX, ALMOV AL,AH OUT DX, AL注:答案部分是自己做得,有些許錯誤,歡迎指出并修改,