微機原理作業及答案2012資料_第1頁
微機原理作業及答案2012資料_第2頁
微機原理作業及答案2012資料_第3頁
微機原理作業及答案2012資料_第4頁
微機原理作業及答案2012資料_第5頁
已閱讀5頁,還剩40頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第一章作業答案1. 微型計算機系統有哪三個層次 ,簡述其內涵及其聯系與區別。答:微型計算機系統 - 微型計算機- 微處理器微型計算機是以微處理器為核心,配上由大規模集成電路制作的只讀存儲器(ROM)、讀寫存儲器(RAM)、輸入/輸出接口電路及系統總線(計算機中連接各部件的一組公共通訊線)等所組成的計算機。微型計算機系統是以微型計算機為中心,配以相應的外圍設備以及控制微型計算機工作的軟件(軟件分為系統軟件和應用軟件兩大類)構成的。微處理器是由一個大規模集成電路芯片構成的微機中的核心芯片,內含控制器、運算器和寄存器等。2. 試述馮諾依曼計算機體系結構和馮諾依曼存儲程序工作原理。答:馮諾依曼機的體系

2、結構數據和程序以二進制代碼的形式表示數據和程序存放在存儲器中,存放位置由地址指定,地址碼也是二進制形式計算機在程序控制下自動執行,具體來說,即控制器根據存放在存儲器中的指令序列(即程序)工作, 并由一個程序計數器(PC控制指令的執行。馮諾依曼存儲程序工作原理:把程序存儲在計算機內,使計算機能像快速存取數據一樣地快速存取組成程序的指令。為實現控制器自動連續地執行程序,必須先把程序和數據送到存儲器中保存;然后給出程序中第一條指令的地址;控制器依據存儲程序中的指令順序周而復始地取指令、譯碼、執行,直到完成全部指令操作為止,即 控制器通過指令流的串行順序驅動實現程序控制。3. 將二進制數11011.0

3、11轉換成十進制、八進制和十六進制數。答: 27.375D, 33.30, 1B.6H4. 將十進制數240.75轉換成二進制數、八進制和十六進制數答:11110000.11B,360.60, F0.CH5. 設計算機字長為8位,求機器數0E3H分別為原碼、反碼、補碼、無符號數、壓縮BCD碼時對應的真值。答:原碼:227,反碼:-28,補碼:-29,無符號數:227壓縮BCD碼:無5(1).設計算機字長為 8位,求機器數40H分別為原碼、反碼、補碼、無符號數、壓縮BCD碼時對應的真值。答:原碼:64,反碼:64,補碼:65,無符號數:64 壓縮BCD碼:0110 01006. 已知X=87,Y

4、=-56用補碼完成下列運算,并討論結果是否溢出X+YX-Y0101 0111 0101 0111 0101 0111+ 1100 1000+0011 1000 - 1100 100010001 1111( 31D 不溢出)1000 1111(-120D 溢出) 1000 11117. 設計算機字長為 8位,寫出十進制數+1, -1, -126, -127的原碼、反碼和補碼原碼:0000 0001B,1000 0001B,1111 1110B,1111 1111B反碼:0000 0001B,1111 1110B,1000 0001B,1000 0000B補碼:0000 0001B,1111 11

5、11B,1000 0010B,1000 0001B8. 常用的三態門和 D觸發器在計算機總線中有什么作用?緩沖輸出與非緩沖輸出比較,誰的驅動能力強?答:三態門具有高阻狀態,可以增加總線的帶載能力;D觸發器在計算機中常作鎖存器用來鎖存地址信息或 狀態信息。緩沖輸出的驅動能力強。9. 總線通常采用那些復用技術? 答:分時復用和分頻復用。第二章作業答案1. 8086是多少位的微處理器?為什么?答:8086是16位的微處理器,其內部數據通路為16位,對外的數據總線也是 16位。2. EU與BIU各自的功能是什么?如何協同工作?答:EU是執行部件,主要的功能是執行指令。BIU是總線接口部件,與片外存儲器

6、及I/O接口電路傳輸數據。EU經過BIU進行片外操作數的訪問,BIU為EU提供將要執行的指令。EU與BIU可分別獨立工作,當EU不需BIU 提供服務時,BIU可進行填充指令隊列的操作。3. 8086對存儲器的管理為什么采用分段的辦法?答:8086是一個16位的結構,采用分段管理辦法可形成超過16位的存儲器物理地址,擴大對存儲器的尋址范圍(1MB, 20位地址)。若不用分段方法,16位地址只能尋址 64KB空間。4在8086中,邏輯地址、偏移地址、物理地址分別指的是什么?具體說明。答:邏輯地址是在程序中對存儲器地址的一種表示方法,由段地址和段內偏移地址兩部分組成,如1234H:0088H。偏移地

7、址是指段內某個存儲單元相對該段首地址的差值,是一個16位的二進制代碼。物理地址是 8086芯片引線送出的20位地址碼,用來指出一個特定的存儲單元。5. 給定一個存放數據的內存單元的偏移地址是20C0H, ( DS) =0C00EH,求出該內存單元的物理地址。答:物理地址:320F8H。6. 8086被復位以后,有關寄存器的狀態是什么?微處理器從何處開始執行程序?答:標志寄存器、IP、DS SS ES和指令隊列置 0, CS置全1。處理器從FFFFOH存儲單元取指令并開始執 行。7. 8086基本總線周期是如何組成的?各狀態中完成什么基本操作?答:基本總線周期由 4個時鐘(CLK周期組成,按時間

8、順序定義為 T1、T2、T3、T4。在T1期間8086發出訪 問目的地的地址信號和地址鎖存選通信號 ALE; T2期間發出讀寫命令信號 RD# WR#及其它相關信號;T3期間完 成數據的訪問;T4結束該總線周期。8. 結合8086最小模式下總線操作時序圖,說明ALE M/IO#、DT/R#、RD#、READY言號的功能。答:ALE為外部地址鎖存器的選通脈沖,在T1期間輸出;M/IO#確定總線操作的對象是存儲器還是I/O接口電路,在T1輸出;DT/R#為數據總線緩沖器的方向控制信號,在T1輸出;RD#為讀命令信號;在T2輸出;READY8086要在T3與T4間插入 Tw等待狀態。信號為存儲器或I

9、/O接口準備好信號,在T3期間給出,否則9在基于8086的微計算機系統中,存儲器是如何組織的?是如何與處理器總線連接的?BHE#言號起什么作用?答:8086為16位處理器,可訪問1M字節的存儲器空間;1M字節的存儲器分為兩個 512K字節的存儲體, 命名為偶字節體和奇字節體;偶體的數據線連接D7D0,體選信號接地址線 A0;奇體的數據線連接 D15D8,體選信號接BHE#言號;BHE#信號有效時允許訪問奇體中的高字節存儲單元,實現8086的低字節訪問、高字節訪問及字訪問。第三章作業答案3.1簡要分析8086的指令格式由哪些部分組成,什么是操作碼?什么是操作數?尋址和尋址方式的含義是什 么? 8

10、086指令系統有哪些尋址方式?【解答】8086的指令格式由操作碼和操作數字段組成。操作碼:要完成的操作。操作數:參與操作的對象。尋址:尋找操作數或操作數地址的過程。尋址方式:指令中給出的找到操作數或操作數地址采用的方式。8086指令系統的尋址方式主要有立即數尋址、 寄存器尋址、存儲器尋址和I/O端口尋址。其中,存儲器尋址 可進一步分為直接尋址、寄存器間接尋址、寄存器相對尋址、基址變址尋址、相對基址變址尋址;I/O端口指令IN和OUT使用的端口尋址方式有直接尋址和間接尋址。3.2 設(DS)=2000H, (ES)= 2100H, (SS)= 1500H, (Sl)= 00A0H, (BX)=

11、0100H, (BP)= 0010H,數據變量 VAL的偏移 地址為0050H,請指出下列指令的源操作數字段是什么尋址方式?它的物理地址是多少?,21H,VAL,BP MOV AX(5) MOV AX(8) MOV AX,VALBX (11) MOV AX,BX(3) MOV AX,BX(6) MOV AX,SI(9) MOV AX,BXSI (12) MOV AX,1000H,ES: BX,BX+10,VALBXSI【解答】(1) MOV AX ,(2) MOV AX ,(3) MOV AX ,(1) MOV AX MOV AX MOV AX (10) MOV AX直接尋址,MOV AX ,

12、直接尋址,MOV AX ,21H立即尋址,源操作數直接放在指令中BX寄存器尋址,源操作數放在寄存器BX中1000HEA = 1000H , PA = ( DS)XVALEA = VAL = 0050H , PA =BX10H + EA = 2000H X 10H + 1000H = 21000HX 10H + EA = 2000H X 10H + 0050H = 20050H寄存器間接尋址,EA =(BX )=0100H ,PA=(DS)X 10H+EA=2000H X 10H + 0100H=20100H(6) MOV AX , ES :BX寄存器間接尋址,EA =(BX )=0100H ,

13、PA=(ES)X 10H+ EA=2100H X10H+0100H=21100H(7) MOV AX , BP寄存器間接尋址,EA =(BP)=0010H ,PA :=(SS)X 10H+ EA:=1500H X 10H + 0010H :=15010H(8) MOV AX , SI寄存器間接尋址,EA =(SI)=00A0H , PA =(DS)X 10H + EA =2000H X 10H + 00A0H =200A0H(DS)(5)PA = ( DS)X(9) MOV AX , BX+10相對寄存器尋址,EA = ( BX )+ 10D = 0100H + 000AH= 010AH ,1

14、0H + 010AH = 2010AH(10) MOV AX , VALBX相對寄存器尋址,EA = ( BX )+ VAL= 0100H + 0050H= 0150H ,10H + 0150H = 20150H(11) MOV AX , BXSI基址變址尋址,EA = ( BX ) + ( SI) = 0100H + 00A0H = 01A0HX 10H + 01A0H = 201A0H(12) MOV AX , VALBXSI相對基址變址尋址,EA = ( BX ) + ( Sl)+ VAL= 0100H + 00A0H + 0050H = 01F0H , PA = (DS)X 10H +

15、 EA = 2000H X 10H + 01F0H = 201F0HPA = ( DS)X,PA=(DS)10H + EA = 2000H X10H + EA = 2000H XX 10H + EA = 2000H3.3 給定寄存器及存儲單元的內容為:(DS) = 2000H, (BX) = 0100H, (SI) = 0002H, (20100) = 32H, (20101) = 51H,(20102) = 26H, (20103) = 83H , (21200) = 1AH, (21201) = B6H, (21202) = D1H, (21203) = 29H。試說明下列各條指 令執行完

16、后,AX寄存器中保存的內容是什么。 MOV AX , 1200H(2) MOV AX , BX(3) MOV AX , 1200H MOV AX , BX (5) MOV AX, 1100HBX(6) MOV AX, BXSI【解答】(1)MOVAX , 1200H;執行后,(AX):=1200H(2)MOVAX,BX;執行后,(AX )=(BX ) = 0100H(3)MOVAX,1200H直接尋址,EA = VAL = 1200H , PA = (DS )X 10H + EA = 2000H X 10H + 1200H = 21200H,執行后,(AX ) = B61AH(4) MOV A

17、X , BXEA =( BX ) = 0100H , PA = (DS )X 10H + EA = 2000H X 10H + 0100H = 20100H,執行后,(AX )=5132H(5) MOV AX , 1100HBXEA = ( BX )+ 1100H = 0100H + 1100H = 1200H , PA = ( DS )X 10H + EA = 2000H X 10H + 1200H = 21200H,執行后,(AX ) = B61AH(6) MOV AX , BXSIEA = ( BX ) + ( Sl)= 0100H + 0002H = 0102H , PA =( DS)

18、 X 10H + EA = 2000H X 10H + 0102H = 20102H , 執行后,(AX ) = 29D1H3.4分析下列指令的正誤,對于錯誤的指令要說明原因并加以改正。(1) MOVAH,BX(3) MOVAX,SIDI(5) MOVBYTE PTRBX(7) MOVCS,AX(2) MOV BX,SI(4) MOV BX,ES: AX,1000(6) MOV BX,OFFSET MAYDATSI(8) MOV AX,BXBP【解答】(1) MOVAH,BX錯誤,寄存器類型不匹配,可改為MOV AX,BX(2) MOV BX,SI錯誤,兩個操作數不能都為存儲單元,可改為MOV

19、 BX,SI或MOV BX ,SI(3) MOVAX,SIDI錯誤,尋址方式中只能出現一個變址寄存器,可改為MOV AX,BXDI。(4) MOV BX,ES : AX錯誤,AX簽不能有段跨越前綴,去掉ES:,改為MOV ES:BX ,AX(5) MOVBYTE PTRBX ,1000錯誤,1000超出字節空間存儲范圍,改為 MOV word PTRBX ,1000(6) MOV BX,OFFSET MAYDATSI;正確(7) MOVCS,AX錯誤,MOV指令CS不能做目的操作數,可改為 MOV DS,AX(8) MOV AX,BXBP錯誤,只能是基址變址尋址,不能是基址基址尋址 注:本題錯

20、誤改正部分有的答案并不唯一,可參考原題題意改成合法形式。3.5設VAR1、VAR2為字變量,LAB為標號,分析下列指令的錯誤之處并加以改正。(1) ADD VAR1(3) SUB AL(5) JNZ VAR1,VAR2,VAR1(6)(2) MOV AL(4) JMP LABSIJMP NEAR LAB【解答】(1) ADD VAR1,VAR2,VAR2錯誤,兩個操作數不能都為存儲單元,可改為MOV BX,VAR2ADD VAR1,BX(2) MOV AL ,VAR2錯誤,數據類型不匹配,可改為MOV AX,VAR2(3) SUB AL , VAR1錯誤,數據類型不匹配,可改為SUB AX ,

21、 VAR1(4) JMP LABSI錯誤,寄存器相對尋址形式中不能用標號做位移量,可改為JMP VAR1SI(5) JNZ VAR1錯誤,條件跳轉指令只能進行段內短跳轉,所以后面只能跟短標號。可改為JNZ LAB(6) JMP NEAR LAB錯誤,缺少運算符 PTR,可改為JMP NEAR PTR LAB注:本題錯誤改正部分有的答案并不唯一,可參考原題題意改成合法形式。3.6寫出能夠完成下列操作的8086CPU指令。(1) 把4629H傳送給AX寄存器;(2) 從AX寄存器中減去 3218H ; 把BUF的偏移地址送入 BX中。【解答】(1) MOV AX,4629H(2) SUB AX,3

22、218H(3) LEA BX,BUF3.7根據以下要求寫出相應的匯編語言指令。(1) 把BX和DX寄存器的內容相加,結果存入DX寄存器中;(2) 用BX和SI的基址變址尋址方式,把存儲器中的一個字節與AL內容相加,并保存在 AL寄存器中;(3) 用寄存器BX和位移量21B5H的變址尋址方式把存儲器中的一個字和(CX相加,并把結果送回存儲器單 元中;(4) 用位移量2158H的直接尋址方式把存儲器中的一個字與數3160H相加,并把結果送回該存儲器中;(5) 把數25H與(AL)相加,結果送回寄存器 AL中。【解答】(1) ADD DX,BX ADD AL,BXSI(3) ADD 21B5HBX,

23、CX(4) ADD WORD PTR 2158H,3160H(5) ADD AL,25H3.8執行下列指令后,AX寄存器中的內容是什么?TABLE DB 10,20,30,40,50ENTRY DW 3MOV BX,OFFSET TABLEADD BX ,ENTRYMOV AX,BXAX=解答】AX= 3228H 3.9. DATA SEGMENTTABLE_ADDR DW 1234HDATA ENDSMOV BX, TABLE_ADDRLEA BX, TABLE_ADDR 請寫出上述兩條指令執行后,BX寄存器中的內容。答案:MOV BX,TABLE_ADDR;執行后(BX)=1234HLEA

24、 BX,TABLE_ADDR ;執行后(BX)=OFFSET TABLE_ADDR3.10.設(DS)=1B00H, (ES)=2B00H,有關存儲器地址及其內容如下圖所示,請用兩條指令把X裝入AX寄存器。1B00:2000H8000H1B00:2002H2B00H2B00:8000H X 答案:LES BX, 2000H MOV AX, ES: BX3.11 .試分析下面的程序段完成什么操作?CL,04DX,CLBL,AHAX,CLBL,CLDL,BL4位(乘16)MOVSHLMOVSHLSHROR答案:將DX: AX中的雙字左移3.12. 假定AX和BX中的內容為帶符號數,CX和DX中的內

25、容為無符號數,請用比較指令和條件轉移指令實現以 下判斷: 若DX的值超過CX的值,則轉去執行EXCEED(2) 若BX的值大于 AX的值,則轉去執行 EXCEED CX中的值為0嗎?若是則轉去執行 ZERO BX的值與AX的值相減,會產生溢出嗎?若溢出則轉 OVERFLOW 若BX的值小于AX的值,則轉去執行EQ_SMA 若DX的值低于CX的值,則轉去執行EQ_SMA答案:CMPDX, CXJAEXCEEDCMPBX, AXJGEXCEED(3) CMPCX, 0JEZERO(4) SUBBX, AXJOOVERFLOW(5) CMPBX, AXJLEQ_SMA(6) CMPDX, CXJBE

26、Q_SMA3.13. 假如在程序的括號中分別填入指令 :(1) LOOP L20LOOPNE L20 (3) LOOPE L20 試說明在三種情況下,當程序執行完后,AX、BX、CX、DX四個寄存器的內容分別是什么 ?TITLEEXLOO.COMCODESGSEGMENTASSUMECS:CODESG,DS:CODESG. SS:CODESGORG100HBEGIN:MOVAX,01MOVBX,02MOVDX,03MOVCX,04L20:INCAXADDBX,AXSHRDX,1()RETCODESGENDSENDBEGIN答案:(1)(AX)= 5(BX)= 16(CX=0( DX)=0(2)

27、(AX) = 3(BX)= 7(CX)=2( DX)=0(3)(AX)= 2(BX) = 4(CX)=3( DX)=13.14. 假設(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=O, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEHQF)=1, (DF)=1, 請寫出下列各條指令單獨執行完后 ,有關寄存器及存儲單元的內

28、容 ,若影響條件碼請給出條件碼 SF、ZF、OF、CF 的值。(1) SBBAX,BXCMPAX,WORD PTRSI+0FA0H(3) MULBYTE PTRBXDIVBHSARAX,CL(6) XORAX,0FFE7H(7) REPSTOSB(8) JMPWORD PYRBX(9) XCHGAX,ES:BX+SI答案:(AX)=0F05FH, (SF)=1, (ZF)=0, (OF)=0, (CF)=1(SF)=1, (ZF)=0, (OF)=1, (CF)=1(AX)=0240H, (OF)=1, (CF)=1(4) (AX)=20ACH(AX)=0103H, (CF)=0(AX)=0D

29、F87H, (CF)=0, (OF)=0, (SF)=1, (ZF)=0(23000H)(23004H)=60H,不影響標志位(8) (IP)=0A006H,不影響標志位(9) (AX)=00B0H, (25060)=2060H,不影響標志位第四章作業答案4.1分析匯編語言源程序應該由哪些邏輯段組成?各段的作用是什么?語句標號和變量應具備哪3種屬性?【解答】匯編語言源程序應該由若干個邏輯段組成,可以有若干個數據段、代碼段、堆棧段和附加數據段, 至少要有一個代碼段。各段的作用如下:(1 )代碼段用來存放程序和常數。(2)數據段用于數據的保存。(3)堆棧段用于保護數據,尤其在子程序調用、中斷過程中

30、進行現場信息保護。(4 )附加數據段用于數據的保存。語句標號和變量應具備的 3種屬性:段屬性、偏移屬性和類型屬性。AL,34H4.2指出下列程序中的錯誤:STAKSGSEGMENTDB100 DUP(?)STA_SGENDSDTSEGSEGMENTDATA1DB?DTSEGENDCDSEGSEGMENTMAINPROCFARSTART:MOVDS,DATSEGMOVADDMOVAL,4FHDATA,ALSTARTENDPENDSENDCDSEG答案:STAKSGSEGMENTDB100 DUP(?)STAKSGENDSDTSEGSEGMENTDATA1DB?DTSEGENDSCDSEGSEGM

31、ENTMAINPROCFARASSUME CS: CDSEG, DS: DTSEG, SS: STAKSGSTART:MOVAX, DTSEGMOVDS, AXMOVAL, 34HADDAL, 4FHMOVDATA1, ALMOVAH, 4CHINT21HMAINENDPCDSEGENDSENDS4.3.將下列文件類型填入空格:(1) .obj (2) .exe (3) .erf (4) .asm (5)st編輯程序輸出的文件有 ;匯編程序輸出的文件有 ;連接程序輸出的文件有 。答案:編輯程序輸出文件:(4)匯編程序輸出文件:(1), (3), (5)連接程序輸出文件:(2)4.4下面的數據項

32、定義了多少個字節?DATA_1DB答案:24字節6 DUP(4 DUP(OFFH)4.5.對于下面兩個數據段,偏移地址為10H和11H的兩個字節中的數據是一樣的嗎?為什么?DTSEG SEGMENT|DTSEG SEGMENTORG 10H|ORG 10HDATA1 DB 72H|DATA1 DW 7204HDB 04H|DTSEG ENDSDTSEGENDS|答案:不一樣.分別是72H, 04H和04H, 72H.存儲字時低8位存在低字節,高8位存在高字節4.6.下面的數據項設置了多少個字節(1) ASC_DATADB1234(2) HEX_DATADB1234H答案:(1)設置了 4個字節

33、(2)設置了 2個字節4.7.執行下列指令后,AX寄存器中的內容是什么 ?TABLE DW 10,20,30,40,50ENTRY DW 3MOVBX,OFFSET TABLEADDBX,ENTRYMOVAX,BX答案:(AX)=1E00H;堆棧的段地址為1000H4.8.分析下列程序的功能,寫出堆棧最滿時各單元的地址及內容。SSEG SEGMENT STACK AT 1000HDW 128 DUPTOS LABEL WORDSSEG ENDSDSEG SEGMENTDW32 DUPDSEG ENDSCSEG SEGMENTMAINPROC FARASSUME CS:CSEG, DS SEG,

34、SS:SSEGSTART:MOV AX,SSEGMOV SS,AXMOV AX,DSEGMOV DS,AXMOV AX,4321HCALL HTOARETN:MOV AH,4CHINT 21HMAINENDPHTOAPROC NEARCMP AX,15JLEB1PUSH AXPUSHBPMOVBPSPMOVBX,BP+2ANDBX,0FHMOVBP+2,BXPOPBPMOVCL,4SHRAX,CLCALLHTOAB1: POP AXB2: ADD AL,30HJL PRTADD AL,07PRT:MOV DL,ALMOV AH,2INT 21HRETHTOA ENDPCSEG ENDS答案:1

35、000:0F2HB11000:0F6HB11000:0FAHB11000:0FEHRETNEND START1000:0F4H31000:0F8H21000:0FCH11000:100H4.9下面是將內存一字節數據高4位和低4位互換并放回原位置的程序,找出錯誤并改正。DATA SEGMENTDD1 DB 23HDATA ENDSCODE SEGMENTASSUME CS: CODE,DS: DATASTART : MOV AX,DATAMOV DS,AXLEA SI,OFFSET DD1MOV AL,SIMOV CL,4RCR AL,CLMOV SI,ALMOV AH,4CHINT 21HCO

36、DE ENDSEND START【解答】程序第 8行錯誤:LEA SI, OFFSET DD,1應去掉OFFSET 程序第10行錯誤:RCR AL,CL,應使用 ROR或 ROL,改為ROR AL,CL3.11已知用寄存器BX作地址指針,自BUF所指的內存單元開始連續存放著3個無符號數字數據,編程序求它們的和,并將結果存放在這 3個數之后。【解答】參考程序如下:LEABX,BUFMOVAX,BXADDAX,BX+2ADDAX,BX+4MOVBX+6,AX4.10編寫程序,比較兩個字符串STRING1和STRING2所含字符是否完全相同,若相同則顯示MATCH,若不同則顯示NO MATCH。答案

37、:datareasegme ntstri ng1dbasfioastri ng2dbxcviyoafmessldbMATCH,$mess2dbNO MATCH,$datarea endsprog nam segme ntmainproc 1farassume cs:prog nam,ds:datareasta比push dssubax,axpushaxmovax,datareamovds,axmoves,axbegi n:movcx, stri ng2-stri ng1movbx, mess1-stri ng2cmpbx,cxjnzdisp noleasi,stri ng1leadi,stri

38、 ng2repecmpsbjnedisp nomovah,9leadx,mess1int 21hretdisp no:mov ah, 9lea dx, mess2mov ah,09hint 21h ;輸出判斷結果retmain endpprog nam endsend start8個遠過程中的一個。4.11根據字節變量control中的各位被置位情況控制程序轉移到【解答】DATA SEGMENTSUBSTABLE DW SUBR1DW SUBR2DW SUBR3DW SUBR4DW SUBR5DW SUBR6DW SUBR7DW SUBR8CONTROL DB 40HDATA ENDSSS_S

39、EGSEGMENT STACKSTA DB 100 DUP(0)SS_SEGENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:SS_SEGMAIN PROC FARPUSH DSXORAX,AXPUSHAXMOV AX,DATAMOV DS,AXMOV BX,OFFSET SUBSTABLEMOV AL,CONTROLDIVERT: RCR AL,1JC GETAGADDBX,2JMPSHORT DIVERTGETAG:CALL BXRETSUBR1PROCRETSUBR1ENDPRETSUBR2PROCSUBR2ENDPRETSUBR3PROCSUBR3EN

40、DPRETSUBR4PROCSUBR4ENDPRETSUBR5PROCSUBR5ENDPRETSUBR6PROCSUBR6ENDPRETSUBR7PROCSUBR7ENDPRETSUBR8PROCSUBR8ENDPCODEENDSEND MAIN4.12編寫一個程序,接收從鍵盤輸入的10個十進制數字,輸入回車符則停止輸入,然后將這些數字加密后(用XLAT旨令變換)存入內存緩沖區BUFFER加密表為;輸入數字:0, 1, 2, 3, 4, 5, 6, 7, 8, 9密碼數字:7, 5, 9, 1 , 3, 6, 8, 0, 2, 4答案:SS_SEG SEGMENT STACK scode db

41、 7,5,9,1,3,6,8,0,2,4buffer db 10 dupSS_SEG ENDSCODE SEGMENTASSUME CS:CODE,SS:SS_SEGMAIN PROC FARmov si,0mov cx,10lea bx,scodein put:mov ah,01int 21hcmp al,0ahjz exitand al,Ofhxlatmov buffersi,alinc siloop in putexit: retmain endpcode endsend main4.13從鍵盤輸入一系列字符,以回車符結束,編程統計其中非數字字符的個數。【解答】DATA SEGMENTB

42、LOCK DB 100 DUP (?)COUNT DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE START:MOV AX,DATAMOV DS,AXMOV DL,0LEA SI,BLOCKLP: MOV AH,1INT 21HCMP AL,0DHJZ EXITMOV SI,ALCMP AL,30HJAE NEXTCMP AL,39HJBE NEXTINC DLNEXT: INC SIJMP LPEXIT: MOV COUNT,DLMOV AH,0INT 16HMOV AH,4CHINT 21HCODE ENDSEND START4.14請用16

43、進制和10進制分別顯示內存單元中一個自己的有符號數。【解答】DATASEGMENTDATA1DATASTACKSTASTACKCODEMAINHEXN:DDD:EEE:FFF:DECN:GGG:DB 9EHENDSSEGMENT PARA STACK STACKDB 100 DUPENDSSEGMENTASSUME CS:CODE,DS:DA TA,SS:STACKPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVBL,DATA1CALLDISPL1SHRBL,1MOVCX,0MOVDL,10HMOVAL,BLINCCXMOVAH,0DIVDLAD

44、DAH,30HCMPAH,39HJNAEEEADDAH,07HMOVBL,AHPUSHBXANDAL,ALJNZDDDMOVAH,2POPDXINT21HLOOPFFFMOVDL,48HINT21HMOVDL,0AHINT21HMOVDL,0DHINT21HMOVBL,DATA1CALLDISPL1SHRBL,1MOVCX,0MOVDL,0AHMOVAL,BLINCCXMOVAH,0DIVDLADDAH,30HMOVBL,AHPUSHBXANDAL,ALJNZGGGMOVAH,2HHH:POPDXINT21HLOOPHHHMOVDL,44HINT21HMOVDL,0AHINT21HMOVDL,

45、0DHINT21HJMPZZZDISPL1PROCSHLBL,1JNCBBBMOVDL,2DHJMPCCCBBB:MOVDL,2BHCCC:MOVAH,2INT21HRETDISPL1ENDPQQQ:RETMAINENDPCODEENDSEND MAIN4.15在數據段中以buffer單元開始連續存放 10個8位二進制無符號數,將其中最大數找出來,存于max單元中, 試編程。【解答】datasegme ntbuffer dw 10, 16, 100, 0, 6, 78, 32, 48,45,37max dw ?data endsstack segme nt para stack stackdb

46、 100 dup(O)stack endscode segme ntassume cs:code, ds:data, ss:stackmai n proc farmovax, datamovds, axmovcx, 9movbx, 0movax, bufferbxmai n1:addbx, 2cmpax, bufferbxjgen extmovax, bufferbxn ext:loopmain1movmax, axmovax,4c00hint21hmain endp code endsend mai n4.16在數據段longdata中存放32位二進制無符號數(低位在前),將該變量以16進制形式顯示輸出,試編程。【解答】DATASEGMENTLONGDATADD 321AED5FHSTRING DB THE NUBER IS:$DATA ENDSSTACK SEGMENT PARA STACK STACKSTA DB 100 DUPSTACK ENDSCODEBBB:ASSUMECS:CODE,DS:DA TA,SS:STACKMAINPROCFARPUSHDSXORAX, AXPUSHAXMOVAX, DATAMOVDS, AXMOVDX, OFFSET STRINGMOVAH, 9INT21HMOVBX, OFFSET LONGDATAADDBX, 3MOVCX, 0

溫馨提示

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

評論

0/150

提交評論