王勇劉輝
上海電力學院計算機系
2023年10月
目錄實驗一 debug命令實驗 1
實驗二字串傳遞實驗 7
實驗三迴圈程式實驗 15
實驗四多重迴圈實驗 21
實驗五分支程式實驗 28
實驗六子程式引數傳遞實驗 34
實驗七子程式巢狀實驗 37
實驗八中斷處理實驗 42
實驗九 bios中斷實驗 46
實驗十建立檔案實驗 50
實驗十一讀檔案實驗 55
實驗十二綜合性實驗 60
一.實驗目的:
掌握debug 的基本命令及其功能
二.實驗內容:
debug是專門為組合語言設計的一種除錯工具,它通過步進,設定斷點等方式為組合語言程式設計師提供了非常有效的除錯手段。
1、debug程式的啟動
debug的命令格式:
[drive:][path] debug [d:][p][filename][.ext][param...]
其中:drive: 是指定debug檔案的磁碟驅動器識別符號,debug是外部dos命令,所以必須把它從磁碟讀入記憶體。若未指定,dos將使用當前預設磁碟驅動器。
path: 是dos查詢debug檔案的乙個子目錄串表示的路徑。若未指定,dos將使用當前工作目錄。
d: 是debug將要除錯的檔案所在的磁碟驅動器。
p: 是查詢debug將要除錯的檔案所需的子目錄路徑,若未指定,dos使用當前目錄。
filename[.ext] 是debug將要除錯的檔名。
param 是將被除錯的程式(或檔案)的命令列引數。
例如:在dos提示符下,可鍵入命令:
c>debug
debug所完成的初始化動作,假定檔名沒有,啟動debug:
段暫存器cs、ds、es和ss置為debug程式後的第乙個段。
指令指標暫存器ip置為100h(程式段字首psp後的第乙個語句)。
堆疊指標sp置為段末或暫駐部分的結束位址(其中較小的那個位址)。
其餘通用暫存器均置為0,標誌暫存器置為下述狀態。
nv up ei pl ne na po nc
如果在dos提示符下,可鍵入命令,包含檔名:
c>debug name.exe
段暫存器ds和es指向psp。暫存器bx和cx含有程式長度。
2、debug的主要命令
(1) 彙編命令a,格式為:
-a[位址]
該命令從指定位址開始允許輸入彙編語句,把它們彙編成機器**相繼存放在從指定位址開始的儲存器中。
例如:-a
136b:0100 mov ax,100
136b:0103 mov bx,200
136b:0106 mov cx,300136b:0109 mov dx,400
136b:010c
-(2) 反彙編命令u,有兩種格式:
1)-u[位址]
該命令從指定位址開始,反彙編32個位元組,若位址省略,則從上乙個u命令的最後一條指令的下乙個單元開始顯示32個位元組。
例如:-u
13c9:0000 1epush ds
13c9:0001 2bc0sub ax,ax
13c9:0003 50push ax
13c9:0004 b8c313 mov ax,13c3
13c9:0007 8ed8mov ds,ax
13c9:0009 b8c613 mov ax,13c6
13c9:000c 8ec0mov es,ax
13c9:000e 8d360000 lea si,[0000
13c9:0012 8d3e0000 lea di,[0000
13c9:0016 fccld
13c9:0017 b92800 mov cx,0028
13c9:001a f3repz
13c9:001b a4movsb
13c9:001c cbretf
13c9:001d 0000add [bx+si],al
13c9:001f 0000add [bx+si],al
2)-u範圍
該命令對指定範圍的記憶體單元進行反彙編,
例如:-u 13c9:000e 001b
13c9:000e 8d360000 lea si,[0000
13c9:0012 8d3e0000 lea di,[0000
13c9:0016 fccld
13c9:0017 b92800 mov cx,0028
13c9:001a f3repz
13c9:001b a4movsb
-(3) 執行命令g,格式為:
-g [=位址1][位址2[位址3。。。]]
其中位址1規定了執行起始位址,後面的若干位址均為斷點位址。
例如:-g1c
ax=13c6 bx=0000 cx=0000 dx=0000 sp=fffc bp=0000 si=0028 di=0028
ds=13c3 es=13c6 ss=13c3 cs=13c9 ip=001c nv up ei pl zr na pe nc
13c9:001c cbretf
-(4) 追蹤命令t,有兩種格式:
1)逐條指令追蹤:
-t[=位址]
該命令從指定位址起執行一條指令後停下來,顯示暫存器內容和狀態值。
-tax=0000 bx=0000 cx=007d dx=0000 sp=fffe bp=0000 si=0000 di=0000
ds=13b3 es=13b3 ss=13c3 cs=13c9 ip=0001 nv up ei pl nz na po nc
13c9:0001 2bc0sub ax,ax
-2)多條指令追蹤:
-t[=位址][值]
該命令從指定位址起執行n條命令後停下來,n由[值]確定。
-t 3
ax=0000 bx=0000 cx=007d dx=0000 sp=fffe bp=0000 si=0000 di=0000
ds=13b3 es=13b3 ss=13c3 cs=13c9 ip=0001 nv up ei pl nz na po nc
13c9:0001 2bc0sub ax,ax
ax=0000 bx=0000 cx=007d dx=0000 sp=fffe bp=0000 si=0000 di=0000
ds=13b3 es=13b3 ss=13c3 cs=13c9 ip=0003 nv up ei pl zr na pe nc
13c9:0003 50push ax
ax=0000 bx=0000 cx=007d dx=0000 sp=fffc bp=0000 si=0000 di=0000
ds=13b3 es=13b3 ss=13c3 cs=13c9 ip=0004 nv up ei pl zr na pe nc
13c9:0004 b8c313 mov ax,13c3
(5) 顯示記憶體單元內容的命令d,格式為:
-d[位址]或-d[範圍]
組合語言實驗報告組合語言實驗指導書
實驗報告 實驗課程組合語言程式 學生代號信念 學號5215201314 專業班級網路間諜088班 2009年 12月 25日 實驗1 利用debug除錯組合語言程式段54 實驗3 初級程式的編寫與除錯實驗 二59 實驗5 分支程式實驗65 實驗6 迴圈程式實驗68 實驗7 子程式實驗69 實驗8 字...
組合語言實驗指導書
前言組合語言是計算機專業的一門重要的專業基礎課,主要介紹組合語言程式設計的基本原理和方法。組合語言是一門理論性和實踐性較強的課程,輔助課堂教學的實驗有助於幫助學生理解組合語言的基本原理,鍛鍊學生的動手能力,提高學生的綜合應用知識的能力。本實驗指導書按照組合語言程式設計的教學大綱要求編寫。依據循序漸進...
《微機原理及組合語言》實驗指導書
微機原理和組合語言 實驗指導書 資訊與通訊工程學院電氣工程系 目錄實驗須知3 實驗一資料求和實驗4 實驗二迴圈與分支程式設計實驗8 實驗三中斷程式設計實驗12 實驗四螢幕顯示程式設計實驗14 第一部分實驗須知 1 預習要求 實驗前認真閱讀實驗教程中有關內容,明確實驗目的和實驗任務。每次實驗前應有預習...