福建農林大學_匯編實驗二_debug的使用_第1頁
福建農林大學_匯編實驗二_debug的使用_第2頁
福建農林大學_匯編實驗二_debug的使用_第3頁
福建農林大學_匯編實驗二_debug的使用_第4頁
福建農林大學_匯編實驗二_debug的使用_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、福建農林大學計算機與信息學院實驗報告系: 計算機 專業: 計算機 年級: 2014 姓名: 學號: 實驗室號_ 計算機號 實驗時間: 2016-10-24指導教師簽字: 劉慶連 成績: 實驗二 DEBUG的使用1實驗目的和要求 (1)學習使用DEBUG的命令;(2)使用DEBUG命令在數據段中查看程序運行的結果;(3)利用DEBUG運行簡單的程序段。2實驗環境IBMPC機及其兼容機實驗的軟件環境是: 操作系統:DOS 2.0以上;調試程序:DEBUG.COM;文本編程程序:EDIT.EXE、WPS.EXE;宏匯編程序:MASM.EXE(或ASM .EXE);連接裝配程序:LINK .EXE;交

2、叉引用程序:CREF.EXE(可有可無)。3實驗內容及實驗數據記錄1)輸入程序觀察寄存器變化 使用DEBUG,將下面的程序段寫入內存,逐條執行,觀察每條指令執行后,CPU中相關寄存器的內容變化。注意用T命令執行時,CS: IP寄存器的內容使用DEBUG,將下面的程序段寫入內存,逐條執行,觀察每條指令執行后,CPU中相關寄存器的內容變化。注意用T命令執行時,CS: IP寄存器的內容MOVAX, 4E20ADDAX, 1416MOVBX, 2000ADDAX, BXMOVBX, AXADDAX, BXMOVAX, 001AMOVBX, 0026ADDAL, BLADDAH, BL ADDBH, A

3、L MOVAH, 0 ADDAL, BL ADDAL, 9C2)下列程序單步運行,注意AL,BX,CX寄存器的變化,并觀察數據段字母的變化。如果是將小寫字母改成大寫字母帶注釋的語句該如何修改?DSEGSEGMENTMSG1DBabcDSEGENDSCSEGSEGMENT ASSUMECS: CSEG, DS: DSEGSTART:MOVAX, DSEG MOVDS, AX LEABX, MSG1 MOVCX, 3 S:MOVAL, BX ANDAL, 11011111B ;將AL中的ASCII碼的第5位置0,;變成大寫字母。 MOV BX, AL INCBX LOOPS MOVAL, 0 MO

4、VAH, 4CH INT 21HCSEGENDS ENDSTART3)程序的跟蹤執行操作在DOS下直接輸入文件主名就可以執行文件了,有的程序會顯示結果,可能執行后什么結果都沒有,是因為程序中沒有顯示命令。那么如何查看程序的運行結果呢?程序執行過程的跟蹤操作步驟如下:(1)在DOS下輸入:DEBUG 文件名.EXE(2)在DEBUG提示符下輸入U命令如果程序中有數據段,可以看到反匯編后第一句可執行語句為:A地址:B地址 MOV AX, K地址 如:1261:0000 MOVAX, 1260其中:K地址就是數據段的段寄存器內容,A地址為代碼段段寄存器地址,B地址為程序第一條指令的偏移地址。(3)可

5、以用T命令單步執行指令,執行到 MOV AH, 4CH時結束,也可以用G命令執行整個程序,輸入:G=B地址(如:G=0000)(4)用D命令查看程序執行后數據段的變化輸入:D K地址:0 (如:D1260:0)在顯示的數據中,對照源程序或LST文件查看結果所在的偏移地址的內容4)輸入下面的程序,按實驗一和上面的步驟運行一遍。這是一個兩個數相與的程序。結果存放在MSG2單元中,偏移地址為?值為多少?DSEGSEGMENTMSG1DW7856H, 2038HMSG2DW?DSEGENDSCSEGSEGMENT ASSUMECS: CSEG, DS: DSEGSTART:MOVAX, DSEG MO

6、V DS, AX MOVAX, MSG1 ANDAX, MSG1+2 MOVMSG2, AX MOVAL, 0 MOVAH, 4CH INT21HCSEG ENDS ENDSTART3.編寫調試下面的程序,用DEBUG查看數據段中的結果1),X,Y,W為字節類型變量,結果存于Z單元,寫出數據段和代碼段。2)X,Y為字節類型數,求,寫出完整的數據段和代碼段,不用乘除指令。4算法描述及實驗步驟【實驗一】輸入程序觀察寄存器變化步驟:win +R 調出運行窗口->在打開中輸入cmd->確定->進入masm5的目錄下運行debug ->debug命令窗口->輸入-a開始輸入

7、命令->依次輸入以下代碼并按 enter鍵結束->之后輸入-t 觀察每條指令執行后各寄存器的變化.【實驗二】程序單步運行與實驗一同理,在masm5 for windows軟件中輸入要求指令代碼->運行->調試->輸入-t觀察個寄存器結果變化【實驗三】兩數相與操作與實驗一同理,在masm5 for windows軟件中輸入要求指令代碼->運行->調試->輸入-t觀察個寄存器結果變化【實驗四】編寫調試程序步驟:按要求即可1),X,Y,W為字節類型變量,結果存于Z單元,寫出數據段和代碼段。2)X,Y為字節類型數,求,寫出完整的數據段和代碼段,不用乘除指

8、令。5調試過程(1)剛開始使用masm5 指令不熟悉,在目標操作數和源操作數之間少了“,”號導致出錯,如下圖(2)定于的數據x,y必須有值才能編譯成功.6實驗結果實驗一【輸入程序觀察寄存器變化】用-a輸入指定指令及用 t 步驟執行結果如下圖【實驗二】2.1使用masm5 for windows 2015軟件并輸入代碼如下2.2調試結果 t步驟執行觀察,結果是將存儲在DS中的abc 依次換成ABC,即大小寫的切換,執行主要結果如下圖如果將小寫字母改成大寫字母 則應做如下變化ANDAL, 11011111B 替換成 OR AL, 00100000B 代碼如下圖運行結果如下圖(大寫變小寫)實驗三【兩

9、數相與】-T分步執行結果如下圖有下圖可知偏移地址:0004;值:2010實驗四【編寫程序】代碼如下圖所示調試主要結果如下圖, 即(Z =(2-1)*10+5)/(1+2) Z的結果是5 和al中的結果為5 與預期一致.由圖可知道,運算結果確實為5 并將結果存放Z2)X,Y為字節類型數,求,寫出完整的數據段和代碼段,不用乘除指令。Z = (2+1)*8-(2-1)*2)/16 =1(al).6(余數) 并存與Z執行結果如下圖7. 總結通過本實驗,首先就是掌握了masm5 以及masm5 for windows2015的基本使用,能通過debug工具來進行編譯指令和執行指令,對一些指令有了些了解,

10、能通過-t步驟執行來理解匯編指令的具體含義及其相應寄存器中的數據變化,能自己手動輸入編譯指令來對基本的運算進行演示和觀察相應的結果,總之,此次實驗讓我受益匪淺,為以后進一步學習匯編打下基礎附錄:代碼(1),X,Y,W為字節類型變量,結果存于Z單元,寫出數據段和代碼段如下DATAS SEGMENT x db 1 y db 2 w db 2 z db ? DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX

11、 MOV AL,W SUB AL,X MOV BH,10 MUL BH ADD AX,5 MOV BL,X ADD BL,Y DIV BL MOV Z,AL MOV Z+1,AH MOV AH,4CH INT 21HCODES ENDSEND START(2)X,Y為字節類型數,求,寫出完整的數據段和代碼段,不用乘除指令。DATAS SEGMENT x db 2 y db 1 z db ?DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DAT

溫馨提示

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

評論

0/150

提交評論