組合語言實驗報告

2021-03-04 02:32:27 字數 5336 閱讀 9441

組合語言課程設計

學院:專業:

姓名:學號:

組合語言是計算機專業的一門重要的專業基礎課,主要介紹組合語言程式設計的基本原理和方法。組合語言是一門理論性和實踐性較強的課程,輔助課堂教學的實驗有助於幫助學生理解組合語言的基本原理,鍛鍊學生的動手能力,提高學生的綜合應用知識的能力。

1 利用debug除錯組合語言程式段

3 初級程式的編寫與除錯實驗(二

5 分支程式實驗

6 迴圈程式實驗

1 利用debug除錯組合語言程式段

一.課程目的

1.熟悉debug有關命令的使用方法;

2.利用debug掌握有關指令的功能;

3.利用debug執行簡單的程式段。

二.課程內容

1.進入和退出debug程式;

2.學會debug中的

1)d命令(顯示記憶體資料d 段位址:偏移位址)

例1:-d100

2)e命令(修改指定記憶體)

例1:-e100 41 42 43 44 48 47 46 45

d 100,l08

結果:08f1:0100 41 42 43 44 48 47 46 45

例2: -e 100:

08f1:0100 76 42 :42是操作員鍵入

此命令是將原100號記憶體內容76修改為42,用d命令可察看。

3)r命令(顯示當前暫存器的內容)

4)t命令(設定陷井,單步執行)

5)a命令(將指令直接彙編成機器碼輸入到記憶體中。)

6)g命令等的使用(執行a命中輸入的彙編指令)

3.用debug,驗證乘法、除法、加法、減法、帶進製加、帶借位減、堆疊操作指令、串操作指令的功能。

三.課程要求

1.仔細閱讀有關debug命令的內容,對有關命令,要求事先準備好使用的例子;

四.環境

pc微機

dos作業系統或 windows 作業系統

ma**.exe,link.exe,或巨集彙編整合環境

五.方法步驟

1.在dos提示符下,進入debug程式;

2.在dos目錄下啟動debug;

3.詳細記錄每一步所用的命令,以及檢視結果的方法和具體結果。

r, d, e 命令:

a, t 命令:

進入和退出debug:

六.學習要求

1.如何啟動和退出debug程式;

2.整理每個debug命令使用的方法,實際示例及執行結果。

七.思考題

啟動debug後,要裝入某乙個.exe檔案,應通過什麼方法實現?

答:用debug+檔名

八.小結

通過這個設計我懂得了debug程式除錯匯程式設計序的一些基本方法和指令。知道了debug程式的一些功能。使我對組合語言有了進一步的理解。

一.課程目的

1.進一步熟悉debug命令;

2.掌握資料在記憶體中的存放方式和記憶體運算元的幾種定址方式,段暫存器和實體地址計算;

3.熟悉資料傳送指令、算術運算指令、邏輯指令、資料串傳送程式和資料串傳送指令movs、stos及重複前輟rep;

4.掌握簡單的組合語言程式編寫與除錯。

二.課程內容

1. 記憶體運算元及各種定址方式使用;

2. 求累加和程式;

3. 多位元組加法程式;

4. 資料串搬家程式;

5. 段暫存器概念及字串傳送指令練習。

三.課程要求

1.仔細閱讀有關debug命令的內容,對有關命令,要求事先準備好使用的例子;

2.閱讀資料傳送指令、算術運算指令、邏輯指令、資料串傳送程式和資料串傳送指令movs、stos及重複前輟rep的內容;

3.用debug的有關命令除錯本實驗中的求累加和程式、多位元組加法程式、資料串搬家程式段。

四.環境

pc微機;

dos作業系統或 windows 作業系統;

ma**.exe,link.exe,或巨集彙編整合環境。

五.方法步驟

1.記憶體運算元及各種定址方式使用

mov ax,1234

mov [1000],ax

mov bx,1002

mov byte ptr[bx],20

mov dl,39

inc bx

mov [bx],dl

dec dl

mov si,3

mov [bx+si],dl

mov [bx+si+1],dl

mov word ptr[bx+si+2],2846

步驟:(1) 用a命令鍵入上述程式,並用t命令逐條執行。

(2) 每執行一條有關記憶體運算元的指令,要用d命令檢查並記錄有關記憶體單元的內容並註明是什麼定址方式。

注意d命令顯示結果中右邊的ascii字元及雙位元組數存放法。

立即定址:

暫存器間接定址:

暫存器相對定址:

2.求累加和程式:

程式:mov bx,1000

mov cx,10

sub ax,ax

lop: add al,[bx]

adc ah,0

inc bx

j: loop lop

int3

步驟:(1)用a命令將程式鍵入到100h開始的記憶體中,在鍵入時記下標號lop和j的實際位址,在鍵入loop指令時lop用實際位址值代替;

(2)用命令n aa 將此程式命名為檔案aa(檔名可任取);

(3)用r命令將bx:cx改為程式長度值(即最後一條指令後面的位址減去開始位址;

(4)用命令w 100將此程式存到aa命名的磁碟檔案中;

(5)用命令q退出debug;

(6)用命令debug aa再次調入debug和檔案aa,可用u命令檢查調入程式;

若調入debug時忘了加aa檔名,可用n命令和l命令將檔案調入;

(7)用e命令在記憶體位址1000h處鍵入16個數字;

(8)用命令g=100 j(j用實際位址代替),使程式執行並停在斷點j上,檢查ax,bx的值是否符合你的預計值;

(9)用t命令執行一步,觀察程式方向(ip值)和cx值是否與你的估計一樣,若不一樣,檢查程式是否有錯;

(10)重複g、j與t,再檢查ax是否正確;

(11)用g命令使程式執行到結束,檢查ax值是否正確。

3.多位元組加法程式

程式:mov di,1000

mov cx,8

mov si,2000

clclop: mov al,[si]

adc [di],al

inc si

inc di

loop lop

int 20

步驟:(1) 用命令鍵入此程式

(2) 用e命令在1000h開始處鍵入乙個8位元組被加數,在2000h開始處鍵入乙個8位元組加數,均為低位元組在前面。

4.資料串搬家程式

(1)用a命令鍵入下列程式:

mov si,1000

mov di,1500

mov cx,0fh

lop:mov al,[si]

mov [di],al

inc si

inc di

loop lop

int 20

(2)用a命令db偽指令在1000h鍵入下列字串:

『ibm_pc ***puter'

(3)用g命令執行此程式,並用d命令檢查目的位址處的字元與源串是否一致。

5.段暫存器概念及字串傳送指令練習

(1) 用a命令鍵入下列程式:

mov si,0

mov di,0

mov ax,1000

mov ds,ax

mov ax,1500

mov es,ax

mov cx,0f

cldrep movsb

int 20

(2) 用a命令db偽指令在1000:0000處鍵入字串'ibm_pc ***puter',並用d命檢查之

(3) 用d命令檢查0f00:1000處內容,看是否一樣。為什麼?

相同,因為1000:0000和0f00:1000是同乙個位址。

(4) 用g命令執行此程式,檢查目的位址1500:0000處內容。並記下ds與es值。

(5) 修改此程式,使es與ds為同一值,以減少一條指令,而源實體地址和目的實體地址(是多少?)仍和原來一樣。

修改後程式:

mov si,0

mov di,0

mov ax,1000

mov ds,ax

mov es,ax

mov cx,0f

cldrep movsb

int 20

六.學習要求

1.各項實驗記錄;

2.要求你修改的程式的清單(修改後)和除錯記錄;

3.自編程式原稿及除錯後修正稿,寫出原稿錯在那裡。

七.思考題

1.mov byte ptr[bx],20

mov word ptr[bx+si+2],2846

上述指令中byte ptr及word ptr偽操作不加行不行?試一試。

答:不行

2.用g命令執行多位元組加法程式,並用d命令檢查其結果(存放在**?),是否正確?

3.將多位元組加法程式中的int 20h指令改為int 3,有何區別?若這條指令不加,行不行?試一試。

4.資料串搬家程式中的目的位址改為1002h,再執行此程式,看能不能把1000h開始的字串搬到1002h開始的地方去?修改程式以做到這一點。

八. 小結

此次設計使我對debug的命令有了更深一步的了解。知道如何編寫程式,如何驗證程式的對錯。同時熟悉了組合語言的一些指令。

對組合語言的一些簡單程式的除錯執行有了初步的掌握。中間遇到了各種問題,但最終都通過自己的努力解決了

3 初級程式的編寫與除錯(二)

一.課程目的

1.掌握無條件轉移指令、條件轉移指令;

2.掌握利用dos功能呼叫int21h的2號和9號功能進行螢幕顯示的方法;

3.掌握直接向**ram送ascii碼進行螢幕顯示的方法;

4.掌握螢幕字元顯示程式編寫與除錯。

二.課程內容

1. 字元、字串的螢幕顯示;

2. 直接向vram送ascii碼顯示字元;

3. 用字元搜尋法確定字串長度;

4. 16進製制數化ascii碼的一般方法(顯示記憶體內容)。

三.課程要求

組合語言實驗報告

電子科技大學 實驗報告 實驗一1 實驗名稱 彙編源程式的上機除錯操作基礎訓練 2 實驗學時 4 3 實驗內容和目的 實驗內容 1.debug命令的使用 2.程式的除錯與執行 3.編寫程式計算以下表示式 z 5x 2y 7 2 設x y的值放在位元組變數varx vary中,結果存放在位元組單元var...

組合語言實驗報告組合語言實驗指導書

實驗報告 實驗課程組合語言程式 學生代號信念 學號5215201314 專業班級網路間諜088班 2009年 12月 25日 實驗1 利用debug除錯組合語言程式段54 實驗3 初級程式的編寫與除錯實驗 二59 實驗5 分支程式實驗65 實驗6 迴圈程式實驗68 實驗7 子程式實驗69 實驗8 字...

組合語言實驗報告三

實驗三 一.實驗目的 1.掌握程式設計中的子程式結構 2.熟練使用過程偽指令 子程式呼叫和返回等組合語言的指令編寫子程式 3.掌握數制轉換方法 4.掌握利用dos系統功能呼叫進行字元輸入及字元輸出 顯示 的方法。二.程式說明 1 編寫十進位製到十六進製制轉換程式。要求從鍵盤取得乙個十進位制數,然後把...