微機實驗報告_第1頁
微機實驗報告_第2頁
微機實驗報告_第3頁
微機實驗報告_第4頁
微機實驗報告_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

實驗一匯編語言上機操作訓練——比較字符串一、實驗目的1、學習程序設計的基本方法和技能;2、熟練掌握匯編語言設計、編寫、調試和運行;二、實驗內容和要求1、匯編語言程序上機操作方法編寫一程序,比較兩個字符串STRING1和STRING2所含字符是否相同,若相同剛在屏幕上顯示‘MATCH’,否則,顯示‘NOTMATCH’。三、實驗主要儀器設備和材料計算機一臺四、程序略五、調試過程:1、執行程序表示兩字符串相同2、u命令反匯編:3、在程序執行以前的寄存器情況:內存情況:4、用E命令修改數據區字符串及修改前后內存數據區的對比:5、用G命令查看修改后的情況:修改后的字符串不相同了。六、程序功能與調試過程中遇到的問題1、分析程序功能程序的功能是比較string1與string2所含字符是否相同,若相同則在屏幕上顯示‘MATCH’,否則,顯示‘NOTMATCH’。因為string1為‘Movethecursorbackward’,string2為’Movethecursorbackward’。所以string1與string2相同,顯示’MATCH’。后面用重新修改了下這些字符,會顯示“notMatch”2、調試程序過程中遇到的問題對匯編認識停留在上課老師的文字表達,至于實際操作,可以說完全不懂,只能在實驗室里對著實驗書一步步做下去,沒遇到什么問題。但是回到宿舍中,連在哪輸入都不知道,可想而知對匯編的認知度。好在在同學們的幫助下,還是能夠順利的完成了實驗。只是做的時候對有些過程與指令不太明白,經過查閱相關資料后之后,也弄明白了個大概,希望在以后的微機課程學習中多用心。七、思考題1、將內存DATA1單元開始的0~15共16個數傳送到DATA2單元開始的數據區中。MOVAX,DATAMOVDS,AXMOVES,AXLEASI,DATA1LEADI,DATA2MOVCX,16CLDREPMOVSB2、將程序中的指令JZMATCH改為JNZMATCH,程序結果如何?為什么?JZ為零標志為1轉移,而JNZ為零標志為0轉移。所以當為JNZMATCH后,當兩字符串比較時,輸出為‘NOMATCH’,不相同時為‘MATCH’。因此,程序結果為‘NOMATCH’。實驗二分支、循環、及子程序設計實驗目的學習循環程序的基本結構和設計方法;熟練掌握程序的調試方法;實驗內容和要求 本程序采用兩重循環來實現,內層對應學生的名次計算,外層解決所有學生的名次;以GRADE為首地址的10個字保存學生的成績,RANK為地址的10個字填入學生的名次。本程序對應的寄存器分配情況說明如下:AX:存放當前被測學生的成績;BX:存放當前被測學生的相對地址指針;CX:內循環計數值;DX:當前被測學生的名次計算值;SI:內循環測試時的地址指針;DI:外循環計數值;實驗主要儀器設備和材料: 計算機一臺;實驗方法、步驟及結構測試1程序略2程序框圖如下:YYYNNN開始外循環初始化工作:外循環計數器(DI)=10外循環指針(BX)=0AX=學號為[BX]的學生的成績內循環初始化工作:名詞值(DX)=0內循環計數值(CX)=10內循環指針SI=GRADE首地址AX>SI?YYYNNN開始外循環初始化工作:外循環計數器(DI)=10外循環指針(BX)=0AX=學號為[BX]的學生的成績內循環初始化工作:名詞值(DX)=0內循環計數值(CX)=10內循環指針SI=GRADE首地址AX>SI?DX++內循環指針SI+2CX--CX=0?Rank[BX]=DXBX+2DI--DI=0?結束3程序執行在調試模式下,利用反匯編指令(U)得到的程序代碼段如下截圖所示:五實驗報告要求1程序框圖上圖即是,雙重循環結構外循環包含內循環,當外循環結構每執行一次循環時,內循環結構在一般情況下要從循環的開始到循環的正常結束從頭到尾執行一遍。2改變程序的結果為10進制通過修改程序代碼,實現了將程序結果改為10進制形式。程序代碼及運行結果截圖如下(修改或增加部分用下劃線標識):DataSEGMENT Gradedw88H,75H,95H,63H,98H,78H,87H,73H,90H,60H ;實際上,若將兩個十六進制數(各位數字僅限于(0~9))直接看成十進制數用以相比較,則大者恒大。 ;所以可以在定義數據段就直接將分數(十進制數)當十六進制數輸入,雖然縮小了可以支持的數字大小;范圍,但不影響程序功能。通過這樣可以實現輸出結果更加直觀。 Rankdw 10dup(?)DataENDSProgramsegmentMainprocfar Assumecs:program,ds:dataStart: Pushds Subax,ax Pushax Movax,data Movds,ax Movdi,10 Movbx,0Loop1: Movax,grade[bx] Movdx,0 Movcx,10 Leasi,gradeNext: Cmpax,[si] Jgno_count Pushax ;將ax的內容壓入堆棧進行保護 Movax,dx ;將dx的內容傳給ax并加一,同時用Daa指令調整為十進制 Addax,1Daa Movdx,ax ;將調整后的內容返回給dx Popax ;恢復ax的原內容No_count: Addsi,2 LoopNext Movrank[bx],dx Addbx,2 Decdi Jneloop1 retMainendpProgramends endStart結果截圖:六思考題調試程序時,當用戶數據設置好后,程序應運行到什么位置才可以查看結果答:應通過G命令運行到RET指令所在行,并用D指令查看數據段起始地址的內容。程序的數據段定義為字單元,可否用字節來定義?答:可以,只需在數據段定義里把DW修改為DB,并且在程序里作出相應修改則可。七總結兩次微機上機實驗真的讓我受益良多,上課的時候幾乎都不知道那些指令指的的什么意思,按照課本做完了,才回到宿舍去找資料填補這方面的知識欠缺,還有很多不懂的,希望老師能多多指教。實驗三顯示程序設計實驗(一)實驗目的1,學習顯示器I/O程序設計方法;2,了解系統功能中斷的設計方法;3,了解鍵盤光標鍵是如何公職;實驗內容和要求1,用鍵盤上的上下左右鍵控制光標的移動.2,按行號*列號的形式給方塊字符(ACS2碼為0BDH)在屏幕上定位,按上下左右光標鍵使光標在屏幕上移動,光標的移動由方塊字符組成的圖形而在屏幕上保留下軌跡.實驗主要儀器設備和材料計算機實驗方法,步驟及結構測試源程序略運行結果五,實驗報告要求1,顯示器是如何定義窗口的大小的?顯示器根據數據顯示的單元數,v_buff db 25*80*2dup(?)定義窗口大小的.2,在文本方式下,什么是屬性值?blockequ0dbh是定義的屬性值,v_buff+bx+1,是放每個單元(一共25*80個)屬性值的地方,即每個單元的高字節。六,思考題光標軌跡運行到邊界后,為什么光標會閃爍和改變顏色?若要光標不變,應如何修改程序?答:光標移位所使用的語句是循環移位,當光標由邊界移到另一邊邊界時方塊字符的屬性值發生錯位相乘,所以光標會閃爍和改變顏色。若要光標不變,應將循環移位ROL改為邏輯移位SHL。七,實驗心得在第一次按照書上輸入代碼后發現運行不了,檢查后發現書上代碼有誤,根據錯誤顯示排除了錯誤Jnznot_down,還有一些標點加上后,在運行后根據代碼內容了解了光標移位為循環移位.另外根據程序修改了前背景色和后背景色0700h可以根據自己的想法去修改,最后還添加了7色光標效果,感覺很神奇,貪食蛇游戲應該與這個程序有關。顯示程序設計實驗(二)一,實驗目的了解INT21H部分功能號的功能和使用方法掌握字符方式下PC機顯示器顯示控制.實驗程序1運行結果:修改程序:stackSEGMENTDW64DUP(?)stackENDScodeSEGMENTASSUMECS:code,SS:stackstart:MOVCX,0008ha0:PUSHCXMOVBL,31hMOVCX,0009hMOVAH,02ha1:MOVDL,BLINT21hINCBLPUSHCXa2:

溫馨提示

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

評論

0/150

提交評論