哈工程 微機(jī)原理 期末試題--微機(jī)原理習(xí)題(帶答案).doc
《哈工程 微機(jī)原理 期末試題--微機(jī)原理習(xí)題(帶答案).doc》由會員分享,可在線閱讀,更多相關(guān)《哈工程 微機(jī)原理 期末試題--微機(jī)原理習(xí)題(帶答案).doc(28頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第一章 微型計(jì)算機(jī)的基礎(chǔ)知識 習(xí)題 1. 計(jì)算機(jī)分那幾類?各有什么特點(diǎn)? 2. 簡述微處理器、微計(jì)算機(jī)及微計(jì)算機(jī)系統(tǒng)三個(gè)術(shù)語的內(nèi)涵。 3. 80X86微處理器有幾代?各代的名稱是什么? 4. 將十進(jìn)制數(shù) (1)+107/128 (2)―35/64化成二進(jìn)制數(shù),再寫出各自的原碼、反碼、補(bǔ)碼表示(符號位和數(shù)值位共8位)。 5. 將十進(jìn)制數(shù) (1)―52,(2)―127化成二進(jìn)制數(shù),再寫出各自的原碼、反碼、補(bǔ)碼表示(符號位和數(shù)值位共8位)。 6. 下列數(shù)中最小的數(shù)為( )。 A、101001B B、52Q C、101001(BCD) D、233H 7. 下列數(shù)中最大的數(shù)為( )。 A、10010101B B、227Q C、96H D、143 8. 某數(shù)在計(jì)算機(jī)中用8421BCD碼表示為0111 1000 1001,其真值為( )。 A、789 B、789H C、1929 D、11110001001B 9. 計(jì)算機(jī)內(nèi)部采用____數(shù)字進(jìn)行運(yùn)算 A.八進(jìn)制 B.十進(jìn)制 C.二進(jìn)制 D.十六進(jìn)制 10. 英文小寫字母“c”的ASCII碼為1100011,英文字母“f”的ASCII碼為十進(jìn)制____ A.100 B.101 C.102 D.103 11. 按對應(yīng)的ASCII碼值來比較,不正確的是____ A.“b”比”a”大 B.“f”比”F”大 C.“9”比”0”大 D.“F”比”f”大 參考答案 1. 答:傳統(tǒng)上分為三類:大型主機(jī)、小型機(jī)、微型機(jī)。大型主機(jī)一般為高性能的并行處理系統(tǒng), 存儲容量大,事物處理能力強(qiáng),可為眾多用戶提供服務(wù)。小型機(jī)具有一定的數(shù)據(jù)處理能力,提供一定用戶規(guī)模的信息服務(wù),作為部門的信息服務(wù)中心。微型機(jī)一般指在辦公室或家庭的桌面或可移動的計(jì)算系統(tǒng),體積小、價(jià)格低、具有工業(yè)化標(biāo)準(zhǔn)體系結(jié)構(gòu),兼容性好。 2. 答:微處理器是微計(jì)算機(jī)系統(tǒng)的核心硬件部件,對系統(tǒng)的性能起決定性的影響。微計(jì)算機(jī)包括微處理器、存儲器、I/O接口電路及系統(tǒng)總線。微計(jì)算機(jī)系統(tǒng)是在微計(jì)算機(jī)的基礎(chǔ)上配上相應(yīng)的外部設(shè)備和各種軟件,形成一個(gè)完整的、獨(dú)立的信息處理系統(tǒng)。 3. 答:從體系結(jié)構(gòu)上可分為3代:8080/8085:8位機(jī);8086/8088/80286:16位機(jī); 80386/80486:32位機(jī)。 4.答案:(1)原、反、補(bǔ)碼都是:01101011,(2)原碼:11000110,反碼:10111010,補(bǔ)碼:10111001 5.答案:(1)原碼:10110100,反碼:11001011,補(bǔ)碼:11001100 (2)原碼:11111111,反碼:10000000,補(bǔ)碼:10000001 6.C 7.B 8.A 9.C 10.C 11.D 第二章 8086微處理器 習(xí)題 1、8086是多少位的微處理器?為什么? 2、EU與BIU各自的功能是什么?如何協(xié)同工作? 3、8086/8088與其前一代微處理器8085相比,內(nèi)部操作有什么改進(jìn)? 4、8086/8088微處理器內(nèi)部有那些寄存器,它們的主要作用是什么? 5、8086對存儲器的管理為什么采用分段的辦法? 6、在8086中,邏輯地址、偏移地址、物理地址分別指的是什么?具體說明。 7、給定一個(gè)存放數(shù)據(jù)的內(nèi)存單元的偏移地址是20C0H,(DS)=0C00EH,求出該內(nèi)存單元的物理地址。 8、8086/8088為什么采用地址/數(shù)據(jù)引線復(fù)用技術(shù)? 9、8086與8088的主要區(qū)別是什么? 10、怎樣確定8086的最大或最小工作模式?最大最小模式產(chǎn)生控制信號的方法有何不同? 11、8086被復(fù)位以后,有關(guān)寄存器的狀態(tài)是什么?微處理器從何處開始執(zhí)行程序? 12、8086基本總線周期是如何組成的?各狀態(tài)中完成什么基本操作? 13、結(jié)合8086最小模式下總線操作時(shí)序圖,說明ALE、M/IO#、DT/R#、RD#、READY信號的功能。 14、什么是總線請求?8086在最小工作模式下,有關(guān)總線請求的信號引腳是什么? 15、簡述在最小工作模式下,8086如何響應(yīng)一個(gè)總線請求? 16、在基于8086的微計(jì)算機(jī)系統(tǒng)中,存儲器是如何組織的?是如何與處理器總線連接的?BHE#信號起什么作用? 17、“80386是一個(gè)32位微處理器”,這句話的涵義主要指的是什么? 參考答案 1、答:8086是16位的微處理器,其內(nèi)部數(shù)據(jù)通路為16位,對外的數(shù)據(jù)總線也是16位。 2、答:EU是執(zhí)行部件,主要的功能是執(zhí)行指令。BIU是總線接口部件,與片外存儲器及I/O接口電路傳輸數(shù)據(jù)。EU經(jīng)過BIU進(jìn)行片外操作數(shù)的訪問,BIU為EU提供將要執(zhí)行的指令。EU與BIU可分別獨(dú)立工作,當(dāng)EU不需BIU提供服務(wù)時(shí),BIU可進(jìn)行填充指令隊(duì)列的操作。 3〡答:8085為8位機(jī),在執(zhí)行指令過程中,取指令與執(zhí)行執(zhí)令都是串行的。8086/8088由于內(nèi)部有EU和BIU兩個(gè)功能部件,可重疊操作,揔高了處理器的性能。 4、答:執(zhí)行部件有8個(gè)16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作為通用數(shù)據(jù)寄存器。SP為堆棧指針存器,BP、DI、SI在間接尋址時(shí)作為地址寄存器或變址寄存器??偩€接口部件設(shè)有段寄存器CS、DS、SS、ES和指令指針寄存器IP。段寄存器存放段地址,與偏移地址共同形成存儲器的物理地址。IP的內(nèi)容為下一條將要執(zhí)行指令的偏移地址,與CS共同形成下一條指令的物理地址。 5、答:8086是一個(gè)16位的結(jié)構(gòu),采用分段管理辦法可形成超過16位的存儲器物理地址,擴(kuò)大對存儲器的尋址范圍 (1MB,20位地址)。若不用分段方法,16位地址只能尋址64KB空間。 6、答:邏輯地址是在程序中對存儲器地址的一種表示方法,由段地址和段內(nèi)偏移地址兩部分組成,如1234H:0088H。偏移地址是指段內(nèi)某個(gè)存儲單元相對該段首地址的差值,是一個(gè)16位的二進(jìn)制代碼。物理地址是8086芯片引線送出的20位地址碼,用來指出一個(gè)特定的存儲單元。 7、答:物理地址:320F8H。 8、答:考慮到芯片成本,8086/8088采用40條引線的封裝結(jié)構(gòu)。40條引線引出8086/8088的所有信號是不夠用的,采用地址/數(shù)據(jù)線復(fù)用引線方法可以解決這一矛盾,從邏輯角度,地址與數(shù)據(jù)信號不會同時(shí)出現(xiàn),二者可以分時(shí)復(fù)用同一組引線。 9、答:8086有16條數(shù)據(jù)信號引線,8088只有8條;8086片內(nèi)指令預(yù)取緩沖器深度為6字節(jié),8088只有4字節(jié)。 10、答:引線MN/MX#的邏輯狀態(tài)決定8086的工作模式,MN/MX#引線接高電平,8086被設(shè)定為最小模式,MN/MX#引線接低電平,8086被設(shè)定為最大模式。最小模式下的控制信號由相關(guān)引線直接提供;最大模式下控制信號由8288專用芯片譯碼后提供,8288的輸入為8086的S2#~S0#三條狀態(tài)信號引線提供。 11、答:標(biāo)志寄存器、IP、DS、SS、ES和指令隊(duì)列置0,CS置全1。處理器從FFFFOH存儲單元取指令并開始執(zhí)行。 12、答:基本總線周期由4個(gè)時(shí)鐘(CLK)周期組成,按時(shí)間順序定義為T1、T2、T3、T4。在T1期間8086發(fā)出訪問目的地的地址信號和地址鎖存選通信號ALE;T2期間發(fā)出讀寫命令信號RD#、WR#及其它相關(guān)信號;T3期間完成數(shù)據(jù)的訪問;T4結(jié)束該總線周期。 13、答:ALE為外部地址鎖存器的選通脈沖,在T1期間輸出;M/IO#確定總線操作的對象是存儲器還是I/O接口電路,在T1輸出;DT/R#為數(shù)據(jù)總線緩沖器的方向控制信號,在T1輸出;RD#為讀命令信號;在T2輸出;READY信號為存儲器或I/O接口“準(zhǔn)備好”信號,在T3期間給出,否則8086要在T3與T4間插入Tw等待狀態(tài)。 14、答:系統(tǒng)中若存在多個(gè)可控制總線的主模塊時(shí),其中之一若要使用總線進(jìn)行數(shù)據(jù)傳輸時(shí),需向系統(tǒng)請求總線的控制權(quán),這就是一個(gè)總線請求的過程。8086在最小工作模式下有關(guān)總線請求的信號引腳是HOLD與HLDA。 15、答:外部總線主控模塊經(jīng)HOLD引線向8086發(fā)出總線請求信號;8086在每個(gè)時(shí)鐘周期的上升沿采樣HOLD引線;若發(fā)現(xiàn)HOLD=1則在當(dāng)前總線周期結(jié)束時(shí)(T4結(jié)束)發(fā)出總線請求的響應(yīng)信號HLDA;8086使地址、數(shù)據(jù)及控制總線進(jìn)入高阻狀態(tài),讓出總線控制權(quán),完成響應(yīng)過程。 16、答:8086為16位處理器,可訪問1M字節(jié)的存儲器空間;1M字節(jié)的存儲器分為兩個(gè)512K字節(jié)的存儲體,命名為偶字節(jié)體和奇字節(jié)體;偶體的數(shù)據(jù)線連接D7~D0,“體選”信號接地址線A0;奇體的數(shù)據(jù)線連接D15~D8,“體選”信號接BHE#信號;BHE#信號有效時(shí)允許訪問奇體中的高字節(jié)存儲單元,實(shí)現(xiàn)8086的低字節(jié)訪問、高字節(jié)訪問及字訪問。 17、答:指80386的數(shù)據(jù)總線為32位,片內(nèi)寄存器和主要功能部件均為32位,片內(nèi)數(shù)據(jù)通路為32位。 第三章 指令系統(tǒng) 習(xí)題 1. 根據(jù)下列要求編寫一個(gè)匯編語言程序: (1)代碼段的段名為COD_SG (2)數(shù)據(jù)段的段名為DAT_SG (3)堆棧段的段名為STK_SG (4)變量HIGH_DAT所包含的數(shù)據(jù)為95 (5)將變量HIGH_DAT裝入寄存器AH,BH和DL (6)程序運(yùn)行的入口地址為START 2. 指出下列程序中的錯(cuò)誤: STAKSG SEGMENT DB 100 DUP(?) STA_SG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG END CDSEG SEGMENT MAIN PROC FAR START: MOV DS,DATSEG MOV AL,34H ADD AL,4FH MOV DATA,AL START ENDP CDSEG ENDS END 3. 將下列文件類型填入空格: (1) .obj (2) .exe (3) .crf (4) .asm (5) .lst (6) .map 編輯程序輸出的文件有______________________________________; 匯編程序輸出的文件有______________________________________; 連接程序輸出的文件有______________________________________。 4. 下列標(biāo)號為什么是非法的? (1) GET.DATA (2) 1_NUM (3) TEST-DATA (4) RET (5) NEW ITEM 5. 下面的數(shù)據(jù)項(xiàng)定義了多少個(gè)字節(jié)? DATA_1 DB 6 DUP(4 DUP(0FFH)) 6. 對于下面兩個(gè)數(shù)據(jù)段,偏移地址為10H和11H的兩個(gè)字節(jié)中的數(shù)據(jù)是一樣的嗎?為什么? DTSEG SEGMENT | DTSEG SEGMENT ORG 10H | ORG 10H DATA1 DB 72H | DATA1 DW 7204H DB 04H | DTSEG ENDS DTSEG ENDS | 7. 下面的數(shù)據(jù)項(xiàng)設(shè)置了多少個(gè)字節(jié)? (1) ASC_DATA DB ‘1234’ (2) HEX_DATA DB 1234H 8. 執(zhí)行下列指令后, AX寄存器中的內(nèi)容是什么? TABLE DW 10,20,30,40,50 ENTRY DW 3 .......... MOV BX,OFFSET TABLE ADD$ BX,ENTRY "MOV AX,[BX] 9. 指出下列指令的錯(cuò)誤: (1) MOV AH,BX (2) MOV [SI],[BX] (3) MOV AX,[SI][DI] (4) MOV AX,[BX][BP] (5) MOV [BX],ES:AX (6) MOV BYTE PTR[BX],1000 (7) MOV AX,OFFSET [SI] (8) MOV CS,AX (9) MOV DS,BP 10. DATA SEGMENT TABLE_ADDR DW 1234H DATA ENDS ...... MOV BX, TABLE_ADDR LEA BX, TABLE_ADDR 請寫出上述兩條指令執(zhí)行后, BX寄存器中的內(nèi)容。 11. 設(shè)(DS)=1B00H, (ES)=2B00H, 有關(guān)存儲器地址及其內(nèi)容如右圖 所示,請用兩條指令把X裝入AX寄存器。 1B00:2000H 8000H 1B00:2002H 2B00H 2B00:8000H X 12. 變量DATAX和DATAY定義如下: DATAX DW 0148H DW 2316H DATAY DW 0237H DW 4052H 按下述要求寫出指令序列: (1)DATAX和DATAY中的兩個(gè)字?jǐn)?shù)據(jù)相加, 和存放在DATAY和DATAY+2中。 (2)DATAX和DATAY中的兩個(gè)雙字?jǐn)?shù)據(jù)相加, 和存放在DATAY開始的字單元中。 (3)DATAX和DATAY兩個(gè)字?jǐn)?shù)據(jù)相乘(用MUL)。 (4)DATAX和DATAY兩個(gè)雙字?jǐn)?shù)據(jù)相乘(用MUL)。 (5)DATAX除以23(用DIV)。 (6)DATAX雙字除以字DATAY(用DIV)。 13. 試分析下面的程序段完成什么操作? MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 14. 用其他指令完成和下列指令一樣的功能: (1) REP MOVSB (2) REP LODSB (3) REP STOSB (4) REP SCASB 15.編寫程序段, 比較兩個(gè)5字節(jié)的字符串OLDS和NEWS, 如果OLDS字符串與NEWS不同, 則執(zhí)行NEW_LESS, 否則順序執(zhí)行程序。 16. 假定AX和BX中的內(nèi)容為帶符號數(shù), CX和DX中的內(nèi)容為無符號數(shù), 請用比較指令和條件轉(zhuǎn)移指令實(shí)現(xiàn)以下判斷: (1) 若DX的值超過CX的值,則轉(zhuǎn)去執(zhí)行EXCEED (2) 若BX的值大于AX的值,則轉(zhuǎn)去執(zhí)行EXCEED (3) CX中的值為0嗎? 若是則轉(zhuǎn)去執(zhí)行ZERO (4) BX的值與AX的值相減, 會產(chǎn)生溢出嗎? 若溢出則轉(zhuǎn)OVERFLOW (5) 若BX的值小于AX的值,則轉(zhuǎn)去執(zhí)行EQ_SMA (6) 若DX的值低于CX的值,則轉(zhuǎn)去執(zhí)行EQ_SMA 17. 假如在程序的括號中分別填入指令: (1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20 試說明在三種情況下, 當(dāng)程序執(zhí)行完后, AX、BX、CX、DX四個(gè)寄存器的內(nèi)容分別是什么? TITLE EXLOOP.COM CODESG SEGMENT ASSUME CS:CODESG,DS:CODESG,SS:CODESG ORG 100H BEGIN: MOV AX,01 MOV BX,02 MOV DX,03 MOV CX,04 L20: INC AX ADD BX,AX SHR $ DX,1 ( " ) RET CODESG ENDS END BEGIN 18. 變量N1和N2均為2字節(jié)的非壓縮BCD數(shù)碼,請寫出計(jì)算N1與N2之差的指令序列。 19. 有兩個(gè)3位的ASCII數(shù)串ASC1和ASC2定義如下: ASC1 DB ‘578’ ASC2 DB ‘694’ ASC3 DB ‘0000’ 請編寫程序計(jì)算ASC3←ASC1+ASC2。 20. 假設(shè)(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令單獨(dú)執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。 (1) SBB AX,BX (2) CMP AX,WORD PTR[SI+0FA0H] (3) MUL BYTE PTR[BX] (4) AAM (5) DIV BH (6) SAR AX,CL (7) XOR AX,0FFE7H (8) REP STOSB (9) JMP WORD PYR[BX] (10) XCHG AX,ES:[BX+SI} 參考答案 1. 答案: DATSG SEGEMNT HIGH_DAT DB 95 DAT_SG $ ENDS STK_SG " SEGMENT DW 64 DUP(?) STK_SG ENDS COD_SG SEGMENT MAIN PROC FAR ASSUME CS: COD_SG, DS: DAT_SG, SS: STK_SG START: MOV AX, DAT-SG MOV DS, AX MOV AH, HIGH_DAT MOV BH, AH MOV DL, AH MOV AH, 4CH INT 21H MAIN ENDP COD_SG ENDS END START 2. 答案:改正后: STAKSG SEGMENT DB 100 DUP(?) STAKSG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG ENDS CDSEG SEGMENT MAIN PROC FAR ASSUME CS: CDSEG, DS: DTSEG, SS: STAKSG START: MOV AX, DTSEG MOV DS, AX MOV AL, 34H ADD AL, 4FH MOV DATA1, AL MOV AH, 4CH INT 21H MAIN ENDP CDSEG ENDS END START 3. 答案: 編輯程序輸出文件: (4) 匯編程序輸出文件: (1), (3), (5) 連接程序輸出文件: (2), (6) 4. 答案:非法標(biāo)號: (1)因?yàn)椤?’只允許是標(biāo)號的第一個(gè)字符 (2)第一個(gè)字符不能為數(shù)字 (3)不允許出現(xiàn)‘-’ (4)不能是保留字,如助記符 (5)不能有空格 5. 答案:24字節(jié) 6. 答案:不一樣. 分別是72H, 04H和04H, 72H. 存儲字時(shí)低8位存在低字節(jié),高8位存在高字節(jié). 7. 答案:(1) 設(shè)置了4個(gè)字芢 (2) 設(shè)置了2個(gè)字節(jié) 8n 答案:(AX)=40 9. 答案:(1) 源、目的字長不一致 (2) 源、目的不能同時(shí)舉存貯器尋址方式 (3) 基坂變址方式不能有 SI和DI的組合 (4) 基址變址方式不能有 BX和BP的組合 (5) 在8086尋址方式中,AX不能作為基址寄存器使用,而且源、目的不能同時(shí)為存貯器尋址方式 (6) 1000超出一個(gè)字節(jié)的表數(shù)范圍 (7) OFFSET只用于簡單變量,應(yīng)去掉 (8) CS不能作為目的寄存器 (9) 段地址不能直接送入數(shù)據(jù)段寄存器 10. 答案: MOV BX,TABLE_ADDR ; 執(zhí)行后(BX)=1234H LEA BX,TABLE_ADDR ; 執(zhí)行后(BX)=OFFSET TABLE_ADDR 11、答案: LES BX, [2000H] MOV AX, ES: [BX] 12. 答案: (1) MOV AX, DATAX ADD AX, DATAY MOV BX, DATAX+2 ADD BX, DATAY+2 MOV DATAY, AX MOV DATAY+2, BX (2) MOV AX, DATAX ADD DATAY, AX MOV AX, DATAX+2 ADC DATAY+2, AX (3) MOV AX, DATAX MUL DATAY MOV DATAY,AX MOV DATAY+2,DX (4) MOV AX,WORD PTR DATAX MOV BX,WORD PTR DATAY MUL BX MOV RESULT,AX MOV RESULT+2,DX MOV AX,WORD PTR DATAX MOV AX,WORD PTR DATAY+2 MUL BX ADD RESULT+2,AX ADC RESULT+4,DX MOV AX,WORD PTR DATAX+2 MOV BX,WORD PTR DATAY MUL BX ADD RESULT+2,AX ADC RESULT+4,DX MOV AX,WORD PTR DATAX+2 MOV BX,WORD PTR DATAY+2 MUL BX ADD RESULT+4,AX ADC RESULT+6,DX (5) MOV AX, DATAX MOV BL, 23 DIV BL MOV BL,AH MOV AH, 0 MOV DATAY, AX ;存放商 MOV AL,BL MOV DATAY+2, AX ;存放余數(shù) (6) MOV AX, DATAX MOV DX, DATAX+2 DIV DATAY MOV DATAY, AX MOV DATAY+2, DX 13. 答案: 將DX: AX中的雙字左移4位(乘16) 14. 答案: (1)LOOP1: MOV AL,BYTE PTR [SI] MOV ES:BYTE PTR [DI], AL INC SI 或: DEC SI INC DI 或: DEC DI LOOP LOOP1 (2) LOOP1: MOV AL, BYTE PTR [SI] INC SI 或: DEC SI LOOP LOOP1 (3) LOOP1: MOV ES:BYTE PTR [DI], AL INC DI 或: DEC DI LOOP LOOP1 (4) LOOP1: CMP AL,ES:BYTE PTR [DI] JE EXIT INC DI 或: DEC DI LOOP LOOP1 EXIT: 15. 答案: LEA SI, OLDS LEA DI, NEWS MOV CX, 5 CLD REPZ CMPSB JNZ NEW_LESS 16. 答案: (1) CMP DX, CX JA EXCEED (2) CMP BX, AX JG EXCEED (3) CMP CX, 0 JE ZERO (4) SUB BX, AX JO OVERFLOW (5) CMP BX, AX JL EQ_SMA (6) CMP DX, CX JB EQ_SMA 17. 答案: (1)(AX)= 5 (BX)= 16 (CX)= 0 (DX)= 0 (2)(AX)= 2 (BX)= 4 (CX)= 3 (DX)= 1 (3)(AX)= 3 (BX)= 7 (CX)= 2 (DX)= 0 18. 答案: MOV AX, 0 MOV AL, N1+1 SUB AL, N2+1 AAS MOV DL, AL MOV AL, N1 SBB AL, N2 AAS MOV DH, AL 19. 答案: CLC MOV CX, 3 MOV BX, 2 BACK: MOV AL, ASC1[BX] ADC AL, ASC2[BX] AAA OR ASC3[BX+1], AL DEC BX LOOP BACK RCL CX, 1 OR ASC3[BX], CL 20. 答案: (1) (AX)=0F05FH, (SF)=1, (ZF)=0, (OF)=0, (CF)=1 (2) (SF)=1, (ZF)=0, (OF)=1, (CF)=1 (3) (AX)=0240H, (OF)=1, (CF)=1 (4) (AX)=0906H, (SF)=0, (ZF)=0 (5) (AX)=20ACH (6) (AX)=0103H, (CF)=0 (7) (AX)=0DF87H, (CF)=0, (OF)=0, ,SF)=1, (ZF)=0 (8)"(23000H)~(23004H)=60H, 不影響標(biāo)志位 (9) (IP)=0A006H, 不影響標(biāo)志位 (10) (AX)=00B0H, (25060)=2060H, 不影響標(biāo)志位 第四章 匯編語言程序設(shè)計(jì) 習(xí)題 1. 試編寫一個(gè)匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。 2. 編寫程序,比較兩個(gè)字符串STRING1和STRING2所含字符是否完全相同,若相同則顯示“MATCH”,若不同則顯示“NO MATCH”。 3. 試編寫程序,要求從鍵盤輸入3個(gè)16進(jìn)制數(shù),并根據(jù)對3個(gè)數(shù)的比較顯示如下信息: (1)如果3個(gè)數(shù)都不相等則顯示0; (2)如果3個(gè)數(shù)中有2個(gè)數(shù)相等則顯示2; (3)如果3個(gè)數(shù)都相等則顯示3。 4. 已知整數(shù)變量A和B,試編寫完成下述操作的程序: (1)若兩個(gè)數(shù)中有一個(gè)是奇數(shù),則將該奇數(shù)存入A中,偶數(shù)存入B中; (2)若兩個(gè)數(shù)均為奇數(shù),則兩數(shù)分別加1,并存回原變量; (3)若兩個(gè)數(shù)均為偶數(shù),則兩變量不變。 5. 把0~100之間的30個(gè)數(shù),存入首地址為GRAD的字?jǐn)?shù)組中,GRAD+i表示學(xué)號為i+1的學(xué)生成績。另一個(gè)數(shù)組RANK是30個(gè)學(xué)生的名次表,其中RANK+I的內(nèi)容是學(xué)號為i+1的學(xué)生的名次。試編寫程序,根據(jù)GRAD中的學(xué)生成績,將排列的名次填入RANK數(shù)組中(提示:一個(gè)學(xué)生的名次等于成績高于這個(gè)學(xué)生的人數(shù)加1)。 6. 分析下列程序的功能,寫出堆棧最滿時(shí)各單元的地址及內(nèi)容。 SSEG SEGMENT ‘STACK’AT 1000H ; 堆棧的段地址為1000H DW 128 DUP(?) TOS LABEL WORD SSEG ENDS ; - - - - - - DSEG SEGMENT DW 32 DUP(?) DSEG ENDS ; - - - - - - - - - - - CSEG SEGMENT MAIN PROC FAR ASSUME CS:CSEG, DS:DSEG,SS:SSEG START: MOV AX,SSEG MOV SS,AX- MOV AX,DSEG MOV DS,AX MOV AX,4321H $ CALL HTOA RETN: MOV AH,4CH INT 21H MAIN ENDP ; - - - - - - - - - HTOA PROC NEAR CMP AX,15 JLE B1 PUSH AX PUSH BP MOV BP,SP MOV BX,[BP+2] AND BX,0FH MOV [BP+2],BX POP BP MOV CL,4 SHR AX,CL CALL HTOA B1: POP AX B2: ADD AL,30H JL PRT ADD AL,07 PRT: MOV DL,AL MOV AH,2 INT 21H RET HTOA ENDP CSEG ENDS ; ; - - - - - - - - - - - - - END START 7. 寫出分配給下列中斷類型號在中斷向量表中的物理地址。 (1) INT 12H (2) INT 8 8. 試編寫程序,它輪流測試兩個(gè)設(shè)備的狀態(tài)寄存器,只要一個(gè)狀態(tài)寄存器的第0位為1,則與其相應(yīng)的設(shè)備就輸入一個(gè)字符;如果其中任一狀態(tài)寄存器的第3位為1,則整個(gè)輸入過程結(jié)束。兩個(gè)狀態(tài)寄存器的端口地址分別是0024和0036,與其相應(yīng)的數(shù)據(jù)輸入寄存器的端口則為0026和0038,輸入字符分別存入首地址為BUFF1和BUFF2的存儲區(qū)中。 9. 給定(SP)=0100,(SS)=0300,(FLAGS)=0240,存儲單元的內(nèi)容為(00020)=0040,(00022)=0100,在段地址為0900及偏移地址為00A0的單元中有一條中斷指令I(lǐng)NT 8,試問執(zhí)行INT 8指令后,SP,SS,IP,F(xiàn)LAGS的內(nèi)容是什么?棧頂?shù)娜齻€(gè)字是什么? 10. 編寫一個(gè)程序,接收仮鍵盤輸入的10個(gè)十進(jìn)制數(shù)字,輸入回輦符則停止輸入,然后將這些數(shù)字加密后(用XLAT指令變換)存入內(nèi)存緩沖區(qū)BUFFER。加密表為 輾入數(shù)字: 0,1,2,3,4.5,6,7,8,9 密碼數(shù)字: 7,5,9,1,3,6,8,0,2,4 參考答案 1. 答案: abc: mov ah,1 int 21h cmp al,’a’ jb stop cmp al,’z’ ja stop sub al,20h mov dl,al mov ah,2 int 21h jmp abc stop: ret 2. 答案: datarea segment string1 db ‘a(chǎn)sfioa’ string2 db‘xcviyoaf’ mess1 db ‘MATCH’,’$’ mess2 db ‘NO MATCH’,’$’ datarea ends prognam segment main proc far assume cs:prognam, ds:datarea start:push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax begin: mov cx, string2-string1 mov bx, mess1-string2 cmp bx,cx jnz dispno lea dx,addr lea si,string1 lea di,string2 repe cmpsb jne dispno mov ah,9 lea dx,mess1 int 21h ret dispno: mov ah, 9 lea dx, mess2 int 21h ret main endp prognam ends end start 3. 答案: data segment array dw 3 dup(?) data ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov cx,3 lea si,array begin: push cx mov cl,4 mov di,4 mov dl, ‘ ‘ mov ah,02 int 21h mov dx,0 input: mov ah,01 int 21h and al,0fh shl dx,cl or dl,al dec di jne input mov [si],dx add si,2 pop cx loop begin comp: lea si,array mov dl,0 mov ax,[si] mov bx,[si+2] cmp ax,bx jne next1 add dl,2 next1:cmp [si+4],ax jne next2 add dx,2 next2: cmp [si+4],bx jne num add dl,2 num: cmp dx,3 jl disp mov dl,3 disp:mov ah,2 add dl,30h int 21h ret main endp code ends end start 4. 答案: dseg segment a dw ? b dw ? dseg ends cseg segment main proc far assume cs:cseg,ds:dseg start: push ds sub ax,ax push ax mov ax,dseg mov ds,ax begin: mov ax,a mov bx,b xor ax,bx test ax,0001 jz class test bx,0001 jz exit xchg bx,a mov b,bx jmp exit class: test bx,0001 jz exit inc b inc a exit: ret main endp cseg ends end start 5. 答案: dseg segment grade dw 30 dup(?) rank dw 30 dup(?) dseg ends cseg segment main proc far assume cs:cseg, ds:dseg, es:dseg start: push ds sub ax,ax push ax mov ax,dseg mov ds,ax mov es,ax begin: mov di,0 mov cx,30 loop1: push cx mov cx,30 mov si,0 mov ax,grade[di] mov dx,0 loop2: cmp grade[si],ax jbe go_on inc dx go_on: add si,2 loop loop2 pop cx inc dx mov rank[di],dx sdd di,2 loop loop1 ret main endp cseg ends end start 6. 答案: 1000:0F2H B1 1000:0F4H 3 1000:0F6H B1 1000:0F8H 2 1000:0FAH B1 1000:0FCH 1 1000:0FEH RETN 1000:100H 7. 答案: (1) 00048h (2) 00020h 8. 答案: mov si, 0 mov di, 0 test12:in al, 0024h test al, 08 jnz exit in al,0036h test al, 08 jnz exit dev1: in al, 0024h test al, 01 jz dev2 in al, 0026h mov buffer[si], al inc si dev2: in al, 0036h test al, 01 jz test12 in al, 0038h mov buff2[di],al inc di jmp test12 exit: ret 9. 答案: (SP) = 00FA (SS) = 0300 (IP) = 0040 (FLAGS) = 0040 堆棧內(nèi)容: 00A1H 0900H 0240H 10. 答案: scode db 7,5,9,1,3,6,8,0,2,4 buffer db 10 dup(?) ; … … mov si,0 mov cx,10 lea bx,scode input: mov ah,01 int 21h cmp al,0ah jz exit and al,0fh xlat mov buffer[si],al inc si loop input exit: ret 第五章 輸入輸出接口概述 習(xí)題 1.試說明一般中斷系統(tǒng)的組成和功能。 2.什么是中斷類型碼、中斷向量、中斷向量表?在基于8086/8088的微機(jī)系統(tǒng)中,中斷類型碼和中斷向量之間有什么關(guān)系? 3.什么是硬件中斷和軟件中斷?在PC機(jī)中兩者的處理過程有什么不同? 4.試敘述基于8086/8088的微機(jī)系統(tǒng)處理硬件中斷的過程。 5.在PC機(jī)中如何使用“用戶中斷”入口請求中斷和進(jìn)行編程? 6.8259A中斷控制器的功能是什么? 7.8259A初始化編程過程完成那些功能?這些功能由那些ICW設(shè)定? 8.8259A在初始化編程時(shí)設(shè)置為非中斷自動結(jié)束方式,中斷服務(wù)程序編寫時(shí)應(yīng)注意什么? 9.8259A的初始化命令字和操作命令字有什么區(qū)別?它們分別對應(yīng)于編程結(jié)構(gòu)中那些內(nèi)部寄存器? 10.8259A的中斷屏蔽寄存器IMR與8086中斷允許標(biāo)志IF有什么區(qū)別? 11.若8086系統(tǒng)采用單片8259A中斷控制器控制中斷,中斷類型碼給定為20H,中斷源的請求線與8259A的IR4相連,試問:對應(yīng)該中斷源的中斷向量表入口地址是什么?若中斷服務(wù)程序入口地址為4FE24H,則對應(yīng)該中斷源的中斷向量表內(nèi)容是什么,如何定位? 12.試按照如下要求對8259A設(shè)定初始化命令字:8086系統(tǒng)中只有一片8259A,中斷請求信號使用電平觸發(fā)方式,全嵌套中斷優(yōu)先級,數(shù)據(jù)總線無緩沖,采用中斷自動結(jié)束方式。中斷類型碼為20H~27H,8259A的端口地址為B0H和B1H。 13.比較中斷與DMA兩種傳輸方式的特點(diǎn)。 參考答案 1.答:處理器內(nèi)部應(yīng)有中斷請求信號的檢測電路,輸出中斷響應(yīng)信號,保存斷點(diǎn)的邏輯,轉(zhuǎn)向中斷處理程序的邏輯,中斷返回邏輯。系統(tǒng)中要有一中斷控制器,管理多個(gè)中斷源,提供處理機(jī)所需的中斷處理信息。系統(tǒng)中請求中斷處理的I/O接口電路要有提供中斷請求信號及接收中斷響應(yīng)信號的邏輯。 2.答:處理機(jī)可處理的每種中斷的編號為中斷類型碼。中斷向量是指中斷處理程序的入口地址,由處理機(jī)自動尋址。中斷向量表是存放所有類型中斷處理程序入口地址的一個(gè)默認(rèn)的內(nèi)存區(qū)域。在8086系統(tǒng)中,中斷類型碼乘4得到向量表的入口- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
4 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 哈工程 微機(jī)原理 期末試題-微機(jī)原理習(xí)題帶答案 工程 微機(jī) 原理 期末 試題 習(xí)題 答案
鏈接地址:http://italysoccerbets.com/p-1655692.html