微型計算機原理及應用課后答案侯曉霞_第1頁
微型計算機原理及應用課后答案侯曉霞_第2頁
微型計算機原理及應用課后答案侯曉霞_第3頁
微型計算機原理及應用課后答案侯曉霞_第4頁
微型計算機原理及應用課后答案侯曉霞_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、CH01微型計算機概述習題與思考題1 微型計算機由哪些部件組成?各部件的主要功能是什么? 解答:2. 8086/8088 CPU由哪兩部分組成?它們的主要功能各是什么?是如何協(xié)調工作的? 解答:協(xié)調工作過程:總線接口部件和執(zhí)行部件并不是同步工作的,它們按以下流水線技術原則來協(xié)調管理: 每當8086的指令隊列中有兩個空字節(jié),或者 8088的指令隊列中有一個空字節(jié) 時,總線接口部件就會自動把指令取到指令隊列中。 每當執(zhí)行部件準備執(zhí)行一條指令時,它會從總線接口部件的指令隊列前部取出 指令的代碼,然后用幾個時鐘周期去執(zhí)行指令。在執(zhí)行指令的過程中,如果必須訪問存 儲器或者輸入/輸出設備,那么,執(zhí)行部件就

2、會請求總線接口部件進入總線周期,完成 訪問內存或者輸入/輸出端口的操作;如果此時總線接口部件正好處于空閑狀態(tài),那 么,會立即響應執(zhí)行部件的總線請求。但有時會遇到這樣的情況,執(zhí)行部件請求總線接 口部件訪問總線時,總線接口部件正在將某個指令字節(jié)取到指令隊列中,此時總線接口 部件將首先完成這個取指令的操作,然后再去響應執(zhí)行部件發(fā)出的訪問總線的請求。 當指令隊列已滿,而且執(zhí)行部件又沒有總線訪問請求時,總線接口部件便進入 空閑狀態(tài)。 在執(zhí)行轉移指令、調用指令和返回指令時,由于程序執(zhí)行的順序發(fā)生了改變, 不再是順序執(zhí)行下面一條指令,這時,指令隊列中已經按順序裝入的字節(jié)就沒用了。遇 到這種情況,指令隊列中的

3、原有內容將被自動消除,總線接口部件會按轉移位置往指令 隊列裝入另一個程序段中的指令。3. 8086/8088 CPU中有哪些寄存器?各有什么用途?標志寄存器F有哪些標志位?各在 什么情況下置位?解答:寄存器功能數(shù)據(jù) 寄存器AX字乘法,字除法,字I/OBX查表轉換CX串操作,循環(huán)次數(shù)DX字節(jié)相乘,字節(jié)相除,間接I/O變址 寄存器SI源變址寄存器,用于指令的變址尋址DI目的變址寄存器,用于指令的變址尋址指針 寄存器SP堆棧指針寄存器,與SS起來確定堆棧在內存中的位置BP基數(shù)指針寄存器,用于存放基地址,以使8086/8088尋址更加靈活控制 寄存器IP控制CPU的指令執(zhí)行順序PSW用來存放8086/

4、8088CPU在工作過程中的狀態(tài)段寄存 器CS控制程序區(qū)DS控制數(shù)據(jù)區(qū)SS控制堆棧區(qū)ES控制數(shù)據(jù)區(qū)標志寄存器 F的標志位:控制標志:OF DF、IF、TF;狀態(tài)標志:SF、ZF、AF、PF、CE標志寄存器F的各標志位置位情況: CF:進位標志位。做加法時出現(xiàn)進位或做減法時出現(xiàn)借位,該標志位置1否則清0。 PF:奇偶標志位。當結果的低 8位中I的個數(shù)為偶數(shù)時,該標志位置 1否則清 0。 AF:半進位標志位。在加法時,當位 3需向位4進位,或在減法時位3需向位4借位時,該標志位就置1;否則清0。該標志位通常用于對 BCD算術運算結果的 調整。 ZF:零標志位。運算結果各位都為 0時,該標志位置1,

5、否則清0。 SF:符號標志位。當運算結果的最高位為 1時,該標志位置1,否則清0。 TF:陷阱標志位(單步標志位)。當該位置1時,將使8086/8088進入單步指令工作 方式。在每條指令開始執(zhí)行以前,CPU總是先測試TF位是否為1,如果為1,則在 本指令執(zhí)行后將產生陷阱中斷,從而執(zhí)行陷阱中斷處理程序。該程序的首地址由內 存的00004H00007H 4個單元提供。該標志通常用于程序的調試。例如,在系統(tǒng)調 試軟件DEBUGS的T命令,就是利用它來進行程序的單步跟蹤的。 IF :中斷允許標志位。如果該位置1,則處理器可以響應可屏蔽中斷,否則就不能響應可屏蔽中斷。 DF:方向標志位。當該位置1時,串

6、操作指令為自動減量指令,即從高地址到低地址處理字符串;否則串操作指令為自動增量指令。 OF溢出標志位。在算術運算中,帶符號的數(shù)的運算結果超出了8位或16位帶符號數(shù)所能表達的范圍時,即字節(jié)運算大于十127或小于-128時,字運算大于十32767或小于32768時,該標志位置位。4. 8086/8088系統(tǒng)中存儲器的邏輯地址和物理地址之間有什么關系?表示的范圍各為多少?解答:邏輯地址:段地址:偏移地址物理地址:也稱為絕對地址,由段基址和偏移量兩部分構成。物理地址與系統(tǒng)中的 存儲空間是一一對應的。邏輯地址與物理地址兩者之間的關系為:物理地址二段地址x16+偏移地址每個邏輯段的地址范圍: 0000:

7、0000HFFFFH 0001: 0000FHFFFFH ;FFFF:0000HFFFFH共有232個地址,但其中有許多地址是重疊的(體現(xiàn)出邏輯地址的優(yōu) 勢,可根據(jù)需要方便地寫出邏輯地址,又不影響其準確的物理地址,邏輯地址與物理地 址的關系為多對一的關系)。物理地址的地址范圍:OOOOOHH FFFFFH5. 已知當前數(shù)據(jù)段位于存儲器的 A1000H到BOFFFH范圍內,問DS=解答:A1OOOFRA1OO OOOO以A1OOH為段地址的64K物理地址的范圍是:偏移地址為OOOOHFFFFH 即 A1OO: OOOOH- A1OO: FFFFH A1OOO卅 OOOOHA1OOO卅 OFFFF

8、* AIOOOH BOFFFH: DS= A1OOH6. 某程序數(shù)據(jù)段中存有兩個字數(shù)據(jù)1234H和5A6BH若已知DS=5AAO,它們的偏移地 址分別為245AH和3245H,試畫出它們在存儲器中的存放情況解答:存放情況如圖所示(左右兩側的寫法均可):7. 8O86/8O88CPU有哪兩種工作模式,它們各有什么特點?解答:為了適應各種不同的應用場合,8O86/8O88CPU芯片可工作在兩種不同的工作模式下,即最小模式與最大模式。所謂最小模式,就是系統(tǒng)中只有一個 8O86/8O88微處理器,在這種情況下,所有的 總線控制信號,都是直接由這片 8O86/8O88CPU產生的,系統(tǒng)中的總線控制邏輯電

9、路被 減到最少。該模式適用于規(guī)模較小的微機應用系統(tǒng)。最大模式是相對于最小模式而言的,最大模式用在中、大規(guī)模的微機應用系統(tǒng)中。在最大模式下,系統(tǒng)中至少包含兩個微處理器,其中一個為主處理器,即 8O86/8O88CPU其它的微處理器稱之為協(xié)處理器,它們是協(xié)助主處理器工作的。8. 若8O86CPI工作于最小模式,試指出當 CPU完成將AH的內容送到物理地址為91OO1H的存儲單元操作時,以下哪些信號應為低電平:M/IO、Rd、WR、bhe /S7、DT/R。若CPU完成的是將物理地址91OOOH單元的內容送到AL中,則上述哪些信號 應為低電平。若 CPU為8O88呢?(略)9. 什么是指令周期?什么

10、是總線周期?什么是時鐘周期?它們之間的關系如何?解答:指令周期-CPU執(zhí)行一條指令所需要的時間稱為一個指令周期(InstructionCycle)。總線周期-每當CPU要從存儲器或I/O端口存取一個字節(jié)稱為一次總線操作, 相應于某個總線操作的時間即為一個總線周期 (BUS Cycle)。時鐘周期-時鐘周期是CPU處理動作的最小時間單位,其值等于系統(tǒng)時鐘頻率 的倒數(shù),時鐘周期又稱為T狀態(tài)。它們之間的關系:若干個總線周期構成一個指令周期,一個基本的總線周期由4個T組成,我們分別稱為T4,在每個T狀態(tài)下,CPU完成不同的動作。10. 8086/8088 CPU有哪些基本操作?基本的讀/寫總線周期各包

11、含多少個時鐘周期? 什么情況下需要插入Tw周期?應插入多少個Tw取決于什么因素?解答:8086/8088CPU最小模式下的典型時序有:存儲器讀寫;輸入輸出;中斷響應; 系統(tǒng)復位及總線占用操作。 一個基本的CPU總線周期一般包含四個狀態(tài) 、t2、t3、t4,即四個時鐘周期; 在存儲器和外設速度較慢時,要在 T3之后插入1個或幾個等待狀態(tài)Tw ; 應插入多少個Tw取決于READY言號的狀態(tài),CPU沒有在T3狀態(tài)的一開始采樣到READY言號為低電平,就會在T3和T4之間插入等待狀態(tài)Tw,直到采樣到READY言號為咼電平。11. 試說明8086/8088工作在最大和最小模式下系統(tǒng)基本配置的差異。808

12、6/8088微機系統(tǒng)中為什么一定要有地址鎖存器?需要鎖存哪些信息?(略,見書)12 .試簡述8086/8088微機系統(tǒng)最小模式下從存器儲讀數(shù)據(jù)時的時序過程。(略,見書)CH02 8086/8088 指令系統(tǒng)習題與思考題1.假定 DS=2000H ES=2100H SS=1500H SI=00A0H, BX=0100H BP=0010H 數(shù)據(jù)變量VAL的偏移地址為0050H,請指出下列指令源操作數(shù)是什么尋址方式?源操作數(shù)在哪 里?如在存儲器中請寫出其物理地址是多少?(1)(3)(5)(7)解答:(1)MOV AX,0ABHMOV A,VALMOV AL VALBXMOV VALSI,BX(2)(

13、4)(6) MOV(8)MOVAX 100HMOVBX SICL,BXSIMOV BPSI,100MOV AX 0ABH尋址方式:立即尋址;物理地址:無MOV AX 100H尋址方式:直接尋址;源操作數(shù)在存儲器中;物理地址:2000H*16+100* 20100H(3) MOV AX VAL尋址方式:直接尋址;源操作數(shù)在存儲器中;物理地址:2000H*16+0050卡 20050H(4) MOV BX SI尋址方式:寄存器間接尋址;源操作數(shù)在存儲器中;物理地址:2000H*16+00A0 出 200A0H(5) MOV AL VALBX尋址方式:變址尋址;源操作數(shù)在存儲器中;物理地址:(2)D

14、S* 16+100H=DS* 16+VALDS* 16+SI =DS* 16+VAL+BXf2000H*16+0050H+0100=20150H(6) MOV CL BXSI尋址方式:基址加變址尋址;源操作數(shù)在存儲器中;物理地址:DS* 16+BX+SI=2000H*16+0100H+00A0H=201A0H(7) MOV VALSI, BX尋址方式:寄存器尋址;源操作數(shù)在寄存器中;物理地址:無(8) MOV BPSI , 100尋址方式:立即尋址;物理地址:無2 設有關寄存器及存儲單元的內容如下:DS=2000H, BX=0100H, AX=1200H, SI=0002H , 20100H=

15、12H , 20101H=34H , 20102H=56H , 20103=78H, 21200=2AH , 21201H=4CH ,21202H=0B7H ,21203H=65H。試說明卜列各條指令單獨執(zhí)仃后相關寄存器或存儲單元的內容。(1) MOVAX 1800H(2) MOVAX,BX(3) MOVBX 1200H(4) MOVDX1100BX(5) MOVBXSI , AL(6) MOVAX1100BXSI解答:題號指令執(zhí)行結果(1)1 MOVAX, 1800HAX= 1800H(2)MOVAX, BXAX= 0100H(3)MOVBX 1200HBX=4C2AH(4)1 MOVDX

16、1100BXDX=4C2AH(5)MOVBXSI , AL20102H = 00H(6)MOVAX,1100BXSIAX= 65B7H3 假定BX=0E3H變量VALUE=79H確定下列指令執(zhí)行后的結果 (操作數(shù)均為無符號 數(shù)。對3、6 ,寫出相應標志位的狀態(tài))。(1) ADDVALUE BX(2) ANDBX, VALUE(3)CMPBX VALUE(4)XOR BX, 0FFH(5)DECBX(6) TESTBX, 01H解答:題號指令執(zhí)行結果(1)ADDVALUE BXBX= 015CH(2)ANDBX, VALUEBX= 0061H(3):CMPBX, VALUEBX= 00E3H(C

17、F=ZF=OF=SF=0AF=PF=1)(4)XORBX, 0FFHBX= 001CH(5):DECBXBX= 00E2H(6)TESTBX, 01HBX= 00E3H(CF=ZF=OF=SF=AF=PF=0)4.已知SS=0FFA0H SP=00B0H先執(zhí)行兩條把 8057H和0F79H分別進棧的PUSH指令,再執(zhí)行一條POP指令,試畫出堆棧區(qū)和SP內容變化的過程示意圖。(標出存儲單元的地址)解答:5 已知程序段如下:MOVAX1234HMOVCL,4ROLAXCLDECAXMOVCX4MULCX試問:(1)每條指令執(zhí)行后,AX寄存器的內容是什么?( 2)每條指令執(zhí)行后,CF, SF 及ZF

18、的值分別是什么? ( 3)程序運行結束時,AX及DX寄存器的值為多少?指令執(zhí)行結果AX:CF :SFZFMOV AX, 1234HAX= 1234HXXXMOV JCL, 4AX= 1234HXXXROLAX, CLAX= 2341H100DECAXAX= 2340H100MOVCX 4 nAX= 2340Hr 1 :0r 0 :MUL CXAX= 8D00H DX=0000H0006寫出實現(xiàn)下列計算的指令序列。(假定X、丫、Z、W R都為字變量)(1) Z=W+(Z+X(2) Z=W-(X+6) - (R+9(3) Z= (W*X / (R+6(4) Z= (W-X /5*Y ) *2解答:

19、(1) z=w+(z+x題號指令題號指令(1)Z=W+( Z+X)T(2)Z=W-( X+6) - (R+9MOVAX, ZMOVDX RMOVBX, XADDDX 9MOVCX WMOVr BX, xADDBXADD:BX, 6ADCCXMOVAX WMOVZ, AXSUBAX BXSUBAX DXMOVZ, AX(3)Z= (W*X / ( R+(4)Z= (W-X /5*Y) *2MOVDX 0MOVAX WMOVAX, WMOVr bx xMOVBX XSUBAX BXMULBXMOVDX 0PUSHAXMOVCL, 5MOVAX RDIVCLADDAX, 6MOVBX, YMOVCX

20、 AXMULP BXPOPAXMOVCL,2DIVCXMUL1 CLMOV乙AXMOVr z,axMOVZ+1,DXMOVZ+1,DX7 假定,CL=3 CF=1,試確定下列各條指令單獨執(zhí)行后 DX的值(1) SHRDX 1(2) SHLDL,1(3) SALDH,1(4) SARDX CL(5) RORDX CL(6)ROL DL,CL(7) RCRDL,1(8) RCLDX CL解答:題號指令執(zhí)行結果(1)SHRDX 1DX=0110 0100 1101 1100(64DCH)(2)SHLDL,1DX=1100 1001 0111 0010(C972H)(3)SALDH,1DX=1001

21、0010 1011 1001(92B9H)(4):SARDX CLDX=1111 1001 0011 0111(F937H):(5)RORDX CLDX=0011 1001 0011 0111(3937H)(6)ROLDL,CLDX=1100 1001 1100 1101(C9CDH)(7):RCRDL,1DX=1100 1001 1101 1100(C9DCH) 1(8)RCLDX CLDX=0100 1101 1100 1011(4DCFH)8 已知DX=1234H AX=5678H試分析下列程序執(zhí)行后 DX AX的值各是什么?該程序完 成了什么功能?MOV CL,4SHL DX CLMO

22、V BL,AHSHL BL,CLSHR BL,CLORDL,BL解答:DX=2345H AX=6780H該程序完成的功能如圖所示,將 DX AX拼裝成雙字后, 左移四位。9 試分析下列程序段:ADDAX BXJNCL2SUBAX BXJNCL3JMPSHORTL5如果AX BX的內容給定如下:AXBX(1) 14C6H80DCH 問該程序在上述情況下執(zhí)行后,程序轉向何處?解答:(1) AXAX+BXf 14C6H+80DCH95A2H CF= 0;無進位,轉移至 L2;(2)方法同(1),略10. 編寫一段程序,比較兩個 5字節(jié)的字符串OLDS和NEWS如果OLDS字符串不同于 NEW字符串,

23、則執(zhí)行NEW_LESS否則順序執(zhí)行。解答:編程如下,(說明:左測程序為常規(guī)編法,兩個字符串在一個數(shù)據(jù)段中;右測的程序要求OLDS在數(shù)據(jù)段中,NEWSE附加段中,利用串操作的指令是可行的)LEA SI,OLDSLEA SI,OLDSLEA DI,NEWSLEA DI,NEWSMOV CX 5;MOV CX, 5NEXT MOV AL SI;CLDMOV BL DI;REPE CMPSBCMP AL,BL;JNZ NEW_LESSJNZ NEW_LESSINC SI ;JMP EXITINC DI ;NEW_LESS :LOOP NEXTexitJMP EXITNEW_LESSEXIT:11. 若

24、在數(shù)據(jù)段中從字節(jié)變量 TABLE相應的單元開始存放了 015的平方值,試寫出包 含有XLAT指令的指令序列查找N(015)的平方。(設N的值存放在CL中)解答:MOV BX OFFSET TABLE lea bx,tableMOV CL NMOV AL CLXLAT12. 有兩個雙字數(shù)據(jù)串分別存放在 ASC1和ASC2中(低字放低地址),求它們的差,結 果放在ASC3中 (低字放低地址)。ASC1 DW578,40(0ASC2DW694, 12ASC3DW?,?解答:編程如下,LEASI,ASC1LEADI,ASC2LEAbx,ASC3NEXT:MOVCX,2CLCMOVAX,SIMOVDX,

25、DISBBAX,DXMOV BX ,AXINC SIINC SIINC DIINC DIINC BXINC BXLOOP NEXTCH03 匯編語言程序設計習題與思考題1下列語句在存儲器中分別為變量分配多少字節(jié)空間?并畫出存儲空間的分配圖VAR1 DB10, 2VAR2 DW5 DUP(?), 0VAR3 DB HOW ARE YO?U, $, 3 DUP( 1 , 2)VAR4 DD-1 , 1, 0解答: 字節(jié)空間VAR1 :2; VAR2:12; VAR3:19; VAR4:12。存儲空間的分配圖:DS: 00000A 02 00 00 00 00 00 000000 0000 00 0

26、0 484F001057 20 41 52 45 20 59 4F553F 2401 02 01 0201002002 FF FF FF FF 01 00 0000 0000 00 002 假定VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤之處。(1)ADDVAR1, VAR2(2)SUBAL, VAR1(3)JMPLABCX(4)JNZVAR1(5) MOV 1000H , 100(6)SHL AL,4解答: (1) 兩個操作數(shù)中至少有一個為寄存器;(2) AL為字節(jié),VAR1為字變量,不匹配;(3) 中不能用 CX;(4) 轉向地址應為標號;(5) 目的操作數(shù)的類型不確定;

27、(6) SHL指令中,當所移位數(shù)超過1時,必須用CL或CX來取代所移位數(shù) 3對于下面的符號定義,指出下列指令的錯誤。A1 DB ?A2DB 10K1EQU 10241)MOVK1,AX(2)MOV A1, AX3)CMPA1,A2(4)K1EQU 2048解答:K1為常量,不能用MOV指令賦值;(2) A1為字節(jié),AX為字變量,不匹配;(3) A1 未定義,無法做比較指令;(4) K1重新賦值前,必須用PURG釋放。4數(shù)據(jù)定義語句如下所示 :FIRST DB 90H, 5FH, 6EH, 69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)自FIRST單元開始存放的是一

28、個四字節(jié)的十六進制數(shù)(低位字節(jié)在前),要求:編一段程序將這個數(shù)左移兩位后存放到自SECONDS始的單元,右移兩位后存放到自THIRD開始的單元。(注意保留移出部分)解答:DATA SEGMENTFIRST DB 90H , 5FH, 6EH, 69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME C:S COD,E DS: DATASTART: MOV AX, DATAMOV DS, AXLEA SI , FIRSTLEA DI , SECONDMOV CX, 2CLC;左移 2 位MOV AX, SIINC SII

29、NC SIMOV DX, SIPUSH DXPUSH AXROL DX, CLAND DL , 03HMOV DI+4, DLROLAX,CLANDAL,O3HMOVBL,ALPOPAXPOPDXSHLDX,CLSHLAX,CLORDL,BLMOVDI,AXMOV DI+2 , DX;右移 2 位,類同左移的方法,略MOV AH,4CHINT 21HCODE ENDSEND START5(原 14)在當前數(shù)據(jù)區(qū)從 400H 開始的 256 個單元中存放著一組數(shù)據(jù),試編程序將它 們順序搬移到從AOOOH開始的順序256個單元中。解答:DATA SEGMENTORG 4OOHDAT1 DB .;2

30、56 DUP (?)ORG OAOOOHDAT2 DB .;256 DUP (?)DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AX;CH3-14LEA SI,DAT1LEA DI,DAT2MOV CX,128AGAIN: MOV AL,SIMOV DI,ALINC SIINC DILOOP AGAIN;CH3-15,將兩個數(shù)據(jù)塊逐個單元進行比較,若有錯 BL=OOH否則BL=FFHLEA SI,DAT1LEA DI,DAT2

31、MOV CX,128NEXT: MOV AL,SIMOV BL,DICMP AL,BLJNZ ERRORINC SIINC DILOOP NEXTMOV BL,OFFHJMP EXITERROR: MOV BL,OOHEXIT: MOV AX,4COOHINT 21HCODE ENDSEND START6試編程序將當前數(shù)據(jù)區(qū)從 BUFF開始的4K個單元中均寫入55H,并逐個單元讀出比 較,看寫入的與讀出的是否一致。若全對,則將ERF單元置0H;如果有錯,則將ERR單元置 FFH。解答:DATA SEGMENTBUFF DB 1000H DUP(?)ERR DB ?DATA ENDSCODE S

32、EGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;將55H依次放入BUFF開始的4K個單元LEA SI,BUFFMOV CX,1000HMOV AL,55HNTXT: MOV SI,ALINC SILOOP NEXT;取出與55H比較,全對貝U ERR=O否貝U ERR=FFHLEA DI,BUFFLEA SI,ERRMOV CX,1000HNEXT1: MOV AL,DIINC DICMP AL,55HJNZ ERROR若有一個不同,即置 ERR=FFHLOOP NEXT1MOV AL,00HMOV SI,AL ;全比較完無錯,則置

33、 ERR=0JMP EXITERROR:MOV AL,0FFHMOV SI,AL; 返回 DOSEXIT: MOV AH,4CHINT 21HCODE ENDSEND STARTEND7 在上題中,如果發(fā)現(xiàn)有錯時,要求在ERR單元中存放出錯的數(shù)據(jù)個數(shù),則程序該如何修改?解答:DATA SEGMENTBUFF DB 1000H DUP(?)ERR DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;將55H依次放入BUFF開始的4K個單元LEA SI,BUFFMOV CX,1000HMOV AL,55

34、HNTXT: MOV SI,ALINC SILOOP NEXT;取出與55H比較LEA DI,BUFFLEA SI,ERRMOV DX,0000HMOV CX,1000HNEXT1: MOV AL,DIINC DICMP AL,55HJZ NEXT2 ;若相同,則比較下一個INC DX ;否則將放出錯個數(shù)的DX加1NEXT2:LOOP NEXT1MOV SI,DXEXIT: MOV AH,4CHINT 21HCODE ENDSEND STARTEND8試編寫程序段,完成將數(shù)據(jù)區(qū)從 0100H開始的一串字節(jié)數(shù)據(jù)逐個從 FOH端口輸出, 已知數(shù)據(jù)串以OAH為結束符。(略)9.(原24)內存中以FI

35、RST和SECON開始的單元中分別存放著兩個 4位用壓縮BCD碼表 示的十進制數(shù),低位在前。編程序求這兩個數(shù)的和,仍用壓縮BCD碼表示,并存到以THIRD開始的單元。解答:DATA SEGMENTFIRST DW 3412HSECOND DW 7856HTHIRD DB ?,?,?DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,FIRSTLEA DI,SECONDLEA BX,THIRDMOV CX,2CLCA

36、GAIN: MOV AL,BYTE PTRSIMOV DL,BYTE PTRDIADC AL,DLDAAMOV BYTE PTRBX,ALINC SIINC DIINC BXLOOP AGAINJC AAMOV BYTE PTRBX,0JMP EXITAA: MOV BYTE PTRBX,1EXIT: MOV AX,4C00HINT 21HCODE ENDSEND START10( 原 27) 設字變量單元 A、B、C 存放有三個數(shù),若三個數(shù)都不為零,則求三個數(shù)的 和,存放在D中;若有一個為零,則將其余兩個也清零,試編寫程序。解答:DATA SEGMENTA DB ?B DB ?C DB ?D

37、 DW ?DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,ALEA DI,DMOV AL,SICMP AL,00JZ ZEROADC DX,ALLEA SI,BMOV AL,SICMP AL,00JZ ZEROADC DX,ALLEA SI,CMOV AL,SICMP AL,00JZ ZEROADC DX,ALMOV DI,DXJMP EXITZERO: MOV AL,0MOV A,ALMOV B,ALMOV

38、C,ALEXIT: MOV AX,4C00HINT 21HCODE ENDSEND START11. (16)試編程序,統(tǒng)計由TABLE開始的128個單元中所存放的字符“ A”的個數(shù),并 將結果存放在DX中。解答:DATA SEGMENTTABLE DB X1,X2,.X128DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,TABLEMOV DX,0MOV CX,128AGAIN: MOV AL,SICMP A

39、L,AJNZ NEXTINC DXNEXT: INC SILOOP AGAINMOV AX,4C00HINT 21HCODE ENDSEND START12 .試編制一個匯編語言程序,求出首地址為DATA勺1000個字數(shù)組中的最小偶數(shù),并把它存放于MIN單元中。(方法:禾I用書上排序的例題做相應的修改即可,略)13. 在上題中,如果要求同時找出最大和最小的偶數(shù),并把它們分別存放于MAX和MIN 單元中,試完成程序。解答: 略(方法同第 12題)。14. (28)在DATA字數(shù)組中存放有100H個16位補碼數(shù),試編寫一程序求它們的平均值,放在AX中,并求出數(shù)組中有多少個數(shù)小于平均值,將結果存于B

40、X中。(略)15. (17) 編寫一個子程序,對 AL 中的數(shù)據(jù)進行偶校驗,并將經過校驗的結果放回 AL 中。解答:DATA SEGMENTCOUNT EQU 7DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXPUSH AXMOV DX,0MOV CX,COUNTAGAIN: RCR AL,1JNC LINC DXL: LOOP AGAINPOP AXTEST DX,01JZ EXITOR AL,80EXIT: MOV AX

41、,4C00HINT 21H;ANOTHER METHORDJP EXITOR AL,80HEXIT: MOV AX,4C00HINT 21HCODE ENDSEND START16. (18)利用上題的予程序,對 DATA開始的256個單元的數(shù)據(jù)加上偶校驗,試編程 序。解答:DATA SEGMENTDAT DB .;256 DUP (?)RESULT DB .;256 DUP (?)NUM EQU 256COUNT EQU 7DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATAST

42、ART: MOV AX,DATAMOV DS,AXLEA SI,DATLEA DI,RESULTMOV CX,NUMNEXT: MOV AL,SICALL SUB1MOV DI,AL;MOV SI,ALINC SIINC DILOOP NEXTMOV AX,4C00HINT 21HSUB1 PROCPUSH AXMOV DX,0MOV CX,COUNTAGAIN: RCR AL,1JNC LINC DXL: LOOP AGAINPOP AXTEST DX,01JZ QUITOR AL,80HQUIT: RETSUB1 ENDPCODE ENDSEND START17(19) 試編寫程序實現(xiàn)將鍵

43、盤輸入的小寫字母轉換成大寫字母并輸出 解答:DATA SEGMENTMESS DB THE INPUT IS NOT CORRECT.,0DH,0AH,$DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXNEXT: MOV AH,01HINT 21HCMP AL,QJZ EXITCMP AL,aJB ERRORCMP AL,zJA ERRORSUB AL,20HMOV AH,02HMOV DL,ALINT 21HJMP NEX

44、TERROR: MOV AH,09HLEA DX,MESSINT 21HJMP NEXTEXIT: MOV AX,4C00HINT 21HCODE ENDSEND START18從鍵盤接收 20 個字符,按鍵入順序查找最大的字符,并顯示輸出 解答:DATA SEGMENTDAT DB 20 DUP(?)DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AX;從鍵盤接收20個字符,并送DAT中保存LEA SI,DATMOV CX,2

45、0NEXT: MOV AH,01HINT 21HMOV SI,ALINC SILOOP NEXT;比較20個字符中的最大字符,并放入 AL中MOV CX,19LEA SI,DATMOV AL,SIINC SINEXT1:CMP AL,SIJAE LLMOV AL,SILL:INC SILOOP NEXT1;將最大的字符的ASCII碼由AL送DL顯示MOV DL,ALMOV AH,2HINT 21H; 返回 DOSMOV AX,4C00HINT 21HCODE ENDSEND START19(29) 編寫匯編程序,接收從鍵盤輸入的 10 個數(shù),輸入回車符表示結束,然后將這 些數(shù)加密后存于BUFF

46、緩沖區(qū)中。加密表為:輸入數(shù)字: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;密碼數(shù)字: 7, 5, 9, 1, 3, 6, 8, 0,2,4解答:DATA SEGMENTBUFF DB 10 DUP(?)TABLE DB 7,5,9,1,3,6,8,0,2,4DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXJLEA DI,BUFFNEXT: MOV AH,01HINT 21H ;從鍵盤上接收單個字符CMP AL

47、,OAH與OAH比,判是否要結束JZ EXITSUB AL,30H;否則,將09的ASCII碼轉換為十進制數(shù)LEA BX,TABLEXLAT用查表指令進行加密MOV DI,ALINC DIJMP NEXT; 退出并返回 DOSEXIT: MOV AX,4C00HINT 21HCODE ENDSEND START20(23) 有一個 100 個字節(jié)的數(shù)據(jù)表,表內元素已按從大到小的順序排列好,現(xiàn)給定一 元素,試編程序在表內查找,若表內已有此元素,則結束;否則,按順序將此元素插 入表中適當?shù)奈恢茫⑿薷谋黹L。 (略)21. (26)在當前數(shù)據(jù)段(DS,偏移地址為DATABff始的順序80個單元中,存

48、放著某班80個同學某門考試成績。按要求編寫程序: 編寫程序統(tǒng)計90分;80分89分;70分79分;60分69分,V 60分的人數(shù)各為多少,并將結果放在同一數(shù)據(jù)段、偏移地址為BTRX開始的順序單元中。 試編程序,求該班這門課的平均成績?yōu)槎嗌?,并放在該?shù)據(jù)段的AVE*元中。解答:;統(tǒng)計學生成績DATA SEGMENTDATAB DB X1,X2,.,X80NEQU $-DATABORG 100HBTRXDW 0S8DW 0S7DW 0S6DW 0S5DW 0ORG 110HAVERDW ?DATAENDSSTACK SEGMENT STACKSTADB 20 DUP (0)TOP EQU $ ST

49、ASTACK ENDSCODE SEGMENTMAIN PROC FARASSUME C:S COD,E DS:DATA, SS:STACK START: PUSH DSSUB AX ,AXPUSH AXMOVAX,DATAMOVDS,AXMOVCX,NMOVBX,0000HMOVDX,0000HLEASI,DATAB;成績表首地址COMPAR:EMOV AL ,SICMPAL , 60;60?JLFIVECMPAX ,70;70?JLSIXCMPAX ,80;80?JLSEVENCMPAX ,90;90?JLEIGHTINCS9JMPCHAJMPCHASEVEN:INC S7JMPCHASI

50、X:INCS6JMPCHAFIVE:INC S5JMPCHACHA:ADDBX,ALJNCNEXTADCDX,0XT:INC SILOOPCOMPAREMOVAX,BXMOVCX,NDIVCXMOVAVER,AXMOVAH,4CHINT21HEIGHT: INCS8RET;循環(huán)學生人數(shù)MAIN ENDPCODE ENDSEND STARTCH04 存儲系統(tǒng)習題與思考題1存儲器的哪一部分用來存儲程序指令及像常數(shù)和查找表一類的固定不變的信息?哪部分用來存儲經常改變的數(shù)據(jù)?解答:只讀存儲器ROM隨機存儲器RAM2 術語“非易失性存儲器”是什么意思? PROM EPRO分別代表什么意思?解答:“非易失性存儲器”是指當停電后信息會丟失;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論