微機原理習題解答:.doc_第1頁
微機原理習題解答:.doc_第2頁
微機原理習題解答:.doc_第3頁
微機原理習題解答:.doc_第4頁
微機原理習題解答:.doc_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

習題五1匯編程序和匯編語言源程序有什么區別?兩者的作用是什么?答:匯編程序是對匯編源程序進行編譯的系統程序;匯編源程序是編程人員利用匯編語言為解決某些問題而編寫的程序。匯編程序用來對匯編源程序進行編譯,從而產生目標代碼的;而匯編源程序是用來執行程序動作的語句。2匯編語言源程序的語句有哪幾種?各自的作用是什么?答:匯編語言源程序是由指令語句、偽指令語句、宏指令語句組成。指令語句:產生目標代碼,是CPU可以執行的能夠完成特定功能的語句。偽指令語句:在匯編程序對源程序匯編期間由匯編程序處理的操作,它可以完成如處理器選擇、定義數據、分配存儲區、指示程序結束等功能,但不產生目標代碼。宏指令語句:宏指令語句的目的在于簡化匯編語言源程序的書寫,不能縮小目標代碼文件。3標號和變量都有什么屬性?各屬性的作用是什么?答:有段屬性、偏移地址屬性和類型屬性。 段屬性:段屬性定義了標號和變量的段起始地址,其值是在某一段寄存器中。 偏移地址屬性:該屬性表示標號和變量相距段起始地址的字節數,是一個16位無符號數。 類型屬性:對于標號而言:用于指出該標號是在本段內引用還是在其它段中引用。標號的類型有NEAR(段內引用)和FAR(段間引用)兩種;對變量而言:其類型屬性由定義變量的偽指令DB(定義字節型)、DW(定義字型)、DD(定義雙字型)等確定。4試敘述匯編語言源程序的上機過程。答:分四步進行 編輯、匯編、 連接、 調試。編輯:用編輯程序(例如EDIT.COM)建立擴展名為.ASM的匯編語言源程序文件。匯編:用匯編程序(例如MASM.EXE)將匯編語言源程序文件匯編成目標程序文件,其擴展名為.OBJ。如果在匯編過程中出現語法錯誤,根據錯誤信息提示(如錯誤位置、錯誤類型、錯誤說明),用編輯軟件重新調入源程序文件進行修改,直至沒有出現語法錯誤,再進行連接程序。連接:用連接程序(例如LINK.EXE)把目標程序文件轉化成可執行文件,其擴展名為.EXE。調試:用調試程(例如 DEBUG.EXE)序對可執行文件進行調試,直到無錯誤為止。此時的可執行文件在DOS命令下直接執行。5已知數據段DATA從存儲器02000H單元開始,DATA段的定義如下: DATA SEGMENT VAR1 DB 2 DUP(0,1,?) VAR2 DW 50 DUP(?) VAR3 DB 10 DUP(0,1,2 DUP(3),4) DATA ENDS試求出三個變量經SEG、OFFSET、TYPE、LENGTH、SIZE運算的結果。答:運算結果如下表所示:回送符變量SEGOFFSETTYPELENGTHSIZEVAR10200H0000H1H2H2HVAR20200H0006H2H32H64HVAR30200H006AH1H0AH0AH6已知數據段定義如下,試采用圖示說明各變量在內存的分配情況以及數據的預置情況。 DATA SEGMENT A1 DB 50,100,2 DUP(0,1) A2 DB 2 DUP(2,3 DUP(?),10H) A3 DB happy new year! A4 DW 0,2000H A5 DW ?,ABA300H00H00H20HHH42H41HA1A2A4A50000H32H64H00H01H00H01H02HHHH10H02HHHH10H68H 61H70H70H79H20H6EH65H77H20H79H65H61H72H21H001FH0010H DATA ENDS答:B3H64H00H00H00H00H00H00H01H00H01H00H01H00H01H00H01H32H31H34H33H36H35H0100HB1B2B4B57試采用圖示說明各變量在內存的分配情況以及數據的預置情況。 DATA SEGMENT ORG 0100H B1 DB ? B2 DW 100 B3 DW 2 DUP (0) COUNT EQU 5 B4 DB COUNT DUP(0,1) B5 DW 12,34,56 DATA ENDS答:內存的分配情況以及數據的預置情況見右圖8已知變量VAR1、VAR2、VAR3定義如下,試分析下面的指令是否正確,若有錯誤,請進行改正。 DATA SEGMENT VAR1 DB ? VAR2 DB 10 VAR3 EQU 100 DATA ENDS(1) MOV VAR1,AX(2) MOV VAR3,AX(3) MOV BX,VAR1 MOV BX,10(4) CMP VAR1,VAR2(5) VAR3 EQU 50答:(1)類型不匹配,該為:MOV VAR1,AL (2)立即數不能作為目的操作數,該為:MOV AX,VAR3 (3)第一句類型不匹配,改為:MOV BL,VAR1 第二句未指明存儲器操作數的類型,改為:MOV BYTE PTRBX,10 (4)兩個存儲器操作數之間不能直接作比較,改為:MOV AL,VAR1CMP AL,VAR2 (5)符號VAR3 已被定義,不能重復定義,應去掉。9假設VAR1和VAR2為字變量,LAB為標號,試指出下面指令的錯誤之處,并加以改正。(1)ADD VAR1,VAR2答:兩存儲器操作數之間不能直接相加,改為:MOV AX,VAR1 ADD AX,VAR2(2)SUB AL,VAR2答:兩操作數類型不匹配,改為:SUB AX,VAR2(3)MOV CL,VAR1答:兩操作數類型不匹配,改為:MOV CX,VAR1(4)JMP LABSI答:相對寄存器尋址,相對位移量不能為標號,因為數據值。改為:JMP 5SI(5)JNZ VAR1答:條件轉移指令轉移的目標地址,只能是標號或8位位移量。改為:JNZ LAB10試說明下面指令中哪些需要進行PTR說明。VAR1 DB 10H,100VAR2 DW 1000(1)MOV AL,VAR1(2)MOV DH,BX(3)ADD BX,2(4)MOV CL,VAR2(5)SUB AL,VAR1+1答:(3)、(4)條指令需要進行PTR說明11選擇題(1)在順序結構的流程圖中,不包含有( C )。A)起始框 B)終止框 C)判斷框 D)處理框(2)設AL0A8H,CX2,CF1,執行RCL AL,CL指令后,AL(無正確選項)。A)51H B)46H C)47H D)0C5H注:正確的結果為:AL0A3H(3)下述指令的執行結果是( C )MOV AL,0FFHXOR AL,3FHA)AL40H B)AL20H C)AL0C0H D)AL0E0H12在AX和DX中存有一個32位帶符號數(DX中存放高16位),試編寫程序求出它的相反數。答:程序設計如下: CODE SEGMENT ASSUME CS:CODESTART:MOV CX,0CLCSBB CX,AXMOV AX,CXMOV CX,0SBB CX,DXMOV DX,CXMOV AH,4CHINT 21HCODE ENDSEND START13編程實現求S(X2Y2)/ Z的值,并將結果放入RESULT單元。(設:X、Y、Z均為字節數,且Z為無符號數)答:程序設計如下: DATA SEGMENT X DB 20H Y DB 35H Z DB 12H RESULT DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XMUL ALMOV DX,AXMOV AL,YMUL ALADD AX,DXMOV DX,0MOV BL,ZMOV BX,0DIV BXMOV RESULT,AXMOV AH,4CHINT 21HCODE ENDSEND START14試編程實現將鍵盤輸入的小寫字母用大寫字母顯示出來。答:程序設計如下:CLRF MACRO ;宏匯編命令,定義宏MOV DL,0DHMOV AH,02HINT 21H ;回車,使光標回到起始位置MOV DL,0AHMOV AH,02HINT 21H ;光標換行ENDM ;宏定義結束DATA SEGMENT STRING DB 50,?,50 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXLEA DX,STRINGMOV AH,0AHINT 21HCLRF ;宏指令MOV BL,STRING1MOV BH,0LEA SI,STRING2ADD BX,SIMOV BYTE PTRBX,$NEXT:MOV DL,SICMP DL,aJB NEXT1CMP DL,zJA NEXT1SUB DL,20HMOV SI,DLNEXT1:INC SIDEC BLJNZ NEXTLEA DX,STRING2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START15若在數組字變量SQTAB平方表中有十進制數0100的平方值,用查表法找出35這個數的平方值放入字變量NUM中,寫出程序段和有關的偽指令。答:程序設計如下DATA SEGMENT SQTAB DW 0,1,4,9,16,25,36, 10000TAB DB 35 NUM DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV BX,OFFSET SQTABMOV AL,TABSAL AL,1MOV AH,0ADD BX,AXMOV AX,WORD PTRBXMOV NUM,AXMOV AH,4CHINT 21HCODE ENDS END START16試指出下列無條件轉移指令的轉移地址中的轉移地址? (1)JMP BX答:轉移地址為BX寄存器中的值。屬段內間接轉移,IP BX (2)JMP WORD PTRBX答:轉移地址為BX中的值指明的存儲器字單元中的值。屬段內間接轉移,IP (MEM)(3)JMP NEAR PTR FOR答:轉移地址為當前IP16位位移量。標號FOR表示16位位移量,屬段內近轉移。(4)JMP FAR PTR FAR_PRO答:轉移地址為標號FAR_PRO表示的16位段基址和16位偏移量。屬段間直接轉移。(5)JMP SHORT AGAIN答:轉移地址為當前IP8位位移量。標號AGAIN表示8位位移量,屬段內短轉移。(6)JMP DWORD PTRBXDI答:轉移地址為由基址變址尋址方式提供的存儲器操作數(兩個字)17試分析下列程序段,如果AX和BX的內容分別給出如下5種情況,試問程序分別轉向何處?(1)AX1478H,BX80DCH(2)AX0B568H,BX54B5H(3)AX42C8H,BX608DH(4)AX0D023H,BX9FD0H(5)AX94B7H,BX0B568HADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP L5答:(1)轉向L1(2)轉向L1(3)轉向L2(4)轉向L5(5)轉向L518編寫程序,計算下面函數的值。 2X (X 0)S 3X (0 X 10) 4X (X 10)答:程序設計如下DATA SEGMENT X DB 17S DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JGE LOOP1 ADD AL,ALMOV S,AL MOV AH,4CHINT 21H LOOP1:CMP AL,0AHJG LOOP2MUL 3MOV S,AL MOV AH,4CHINT 21H LOOP2:MUL 4MOV WORD PTR S,AXMOV AH,4CHINT 21H CODE ENDS END START19設內存中有三個互不相等的無符號字數據X、Y和Z,存放在X開始的字單元中,編程實現將三個數據從小到大排序后放到X、Y和Z中。答:程序設計如下DATA SEGMENTX DW 25H,27H,18HY DW ?Z DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,XCMP AX,X2JBE LOOP1XCHG AX,X2LOOP1:CMP AX,X4JBE LOOP2 XCHG AX,X4LOOP2:MOV X,AXMOV AX,X2CMP AX,X4JBE LOOP3 MOV Z,AXMOV AX,X4MOV Y,AXJMP LOOP4LOOP3:MOV Y,AXMOV AX,X4MOV Z,AXLOOP4:MOV AH,4CHINT 21HCODE ENDS END START20分析下面程序功能,并指出程序執行后,DAT2數據區中的內容是什么? DAT1 DB 0,1,2,3,4,5,6,7,8,9 DAT2 DB 5 DUP(?) MOV CX,5 MOV BX,5 MOV SI,0 MOV DI,0NEXT:MOV AL,DAT1BX+SI MOV DAT2 DI,AL INC SI INC DI LOOP NEXT HLT答:DAT2數據區中的內容為:5,6,7,8,921編寫程序求出首地址為DAT的100個有符號字數據中的最小偶數,并將這個數存放到DAT1字單元中。答:程序設計如下(提示:偶數的最末為是零)DATA SEGMENTDAT DB 02H,0A8H,34H,23H,23H,34H,26H,0A2H NUM EQU 64HDAT1 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,DATMOV CX,NUMMOV AL,0NEXT:MOV DL,SISHR DL,1JNC NNINC SIDEC CXJNZ NEXTJMP MMNN:MOV AL,SINN1:INC SIDEC CXJZ MMMOV BL,SISHR BL,1JC NN1MOV BL,SICMP AL,BLJLE NN1MOV AL,BLJMP NN1MM:MOV DATI,AL MOV AH,4CHINT 21HCODE ENDS END START22試編寫一個程序段,要求比較兩個字符串STR1和STR2是否完全相等。若完全相等,則置AL=1;若不完全相等,則置AL1。答:程序設計如下DATA SEGMENT STR1 DB FDASFDFDSA,$NUM1 EQU $STR1STR2 DB FDASFDFDSA,$NUM2 EQU $STR2DATA ENDSCODE SEGME

溫馨提示

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

評論

0/150

提交評論