組合語言程式設計實驗報告

2021-03-04 09:54:06 字數 5528 閱讀 8130

實驗室:s318

最後一次實驗時間:

2010 年 5 月18 日

第12周星期二1 - 2節

學院:電腦科學與技術學院

專業:電腦科學與技術

實驗一實驗題目:

認識tddebug整合環境

實驗目的:

1. 熟悉匯程式設計序的開發過程。

2. 認識tddebug整合操作軟體。

3. 掌握在tddebug整合環境中編輯、編譯、連線組合語言程式方法。

4. 掌握int 21h軟體中斷來呼叫dos內部子程式的方法

實驗主要步驟:

1.執行tddebug軟體,選擇edit選單編寫實驗程式

2.使用***pile選單中的***pile和link對實驗程式進行彙編、連線,生成執行檔案。

3.使用rmrun選單中的run執行程式,觀察執行結果。

4.使用rmrun選單中的debug除錯程式,檢視程式段、資料段、附加段裝入記憶體後的分配情況。單步執行資料傳送指令後,觀察各暫存器及資料區的內容。過程如下:

1) 按f7單步執行,在**區中有乙個三角,表示正在執行的指令。每一條指令的執行一定會使目標暫存器和狀態暫存器發生變化,從相關視窗看結果。

2) 檢查記憶體資料區的內容,關鍵是找出使用者程式的資料段和附加段:

● 方法1:在cpu視窗按tab鍵使記憶體資料顯示區成為活動區,按ctrl+g鍵,輸入:「ds或es暫存器的值:偏移位址」,即可顯示使用者指定的資料區

● 方法2:選擇選單view| dump,彈出記憶體資料顯示視窗。

3) 檢視執行結果:按alt+f5,切換到使用者視窗。

5.更改資料區中的資料,考察、除錯程式的正確性。

6.程式**:

;資料傳送實驗,採用相對定址方式

ddata segment定義源資料段

msr db "hello,world!$"

len equ $- msr

ddata ends

exda segment定義附加資料段

msd db len dup(?)

exda ends

mystack segment stack定義堆疊段

dw 20 dup(?)

mystack ends

code segment定義**段

assume cs:code,ds:ddata,es:exda

start: mov ax,ddata

mov ds,ax裝載資料段暫存器

mov ax,exda

mov es,ax裝載附加資料段暫存器

mov si,offset msr

mov di,offset msd

mov cx,len

mov bx,0

next: mov al,msr[bx] ;開始傳輸資料

mov es:msd[bx],al

inc bx

loop next

push es

pop ds將附加段暫存器指向的段值賦給資料段暫存器

mov dx,offset msd

mov ah,9

int 21h顯示字串

mov ah,4ch

int 21h返回dos狀態

code ends

end start

實驗結果:

通過tddebug軟體寫好實驗程式後,對程式進行編譯連線,最終生成執行檔案,在dos環境下啟動後,進入tddebug,對程式進行單步執行,可看到在每一步執行過程中,程式所分得的位址單元。連線試驗箱後,通過對試驗箱的操作,能夠看到在dos環境下程式的執行步驟。

**執行結果:顯示:「hello,world!」

心得體會:

通過本次試驗,是我回顧了在學習微控制器的時候使用的tddebug整合開發軟體使用方法,了解了匯程式設計序的開發過程。能夠在tddebug環境下進行編輯、編譯、連線程式,掌握了int 21h軟體中斷的呼叫dos內部子程式的方法。但對於dos環境下的匯程式設計序的編輯、編譯、連線使用還不是很熟悉,只能是tddebug整合軟體開發環境下熟悉的編譯連線執行。

實驗二實驗名稱:

i/o程式設計

實驗目的:

1.理解軟中斷的呼叫方法及中斷過程。

2.掌握int 21h軟體中斷來呼叫dos系統i/o子程式的方法。

3.掌握將儲存在記憶體單元中的資料在螢幕上顯示的方法。

4.掌握從鍵盤輸入資訊到記憶體的方法。

實驗內容:

1.將指定資料區中乙個位元組的資料以十六進製制數形式顯示在螢幕上。

2.程式設計由鍵盤輸入任意乙個字元,將該字元的ascii碼值顯示在螢幕上。

3.從鍵盤輸入兩個1位十進位制數,計算二者之和,並將結果顯示在螢幕上。

4.程式設計由鍵盤輸入任意一位數,將該數以二進位制數形式顯示在螢幕上

實驗步驟:

1.畫出實驗流程圖。

2.執行tddebug軟體,選擇edit選單編寫實驗程式

3.使用***pile選單中的***pile和link對實驗程式進行彙編、連線,生成執行檔案。

4.使用rmrun選單中的run執行程式,觀察執行結果。

5.使用rmrun選單中的debug除錯程式。單步執行指令,觀察各暫存器及資料區的內容。

更改資料區中的資料,考察程式的正確性

實驗**:

data segment

mes db 'show a as hex:',0ah,0dh,'$'

sd db 'a'

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov dx,offset mes;顯示提示資訊

mov ah,09h

int 21h

mov si,offset sd

mov al,ds:[si]

and al,0f0h ;取高4位

mov cl,4

shr al,cl

cmp al,0ah ;是否是a以上的數

jb c2

add al,07h

c2: add al,30h

mov dl,al顯示字元

mov ah,02h

int 21h

mov al,ds:[si]

and al,0fh取低4位

cmp al,0ah

jb c3

add al,07h

c3: add al,30h

mov dl,al顯示字元

mov ah,02h

int 21h

mov ah,4ch返回dos

int 21h

code ends

end start

實驗結果:

**執行結果:顯示「61h」

心得體會:

本次實驗要求我們將指定資料區的乙個資料轉換為其十六進製制數,通過這次實驗,我充分理解了什麼是軟中斷,以及軟中斷的呼叫方法和中斷過程,並了解了int 21h軟中斷來呼叫dos系統i/o子程式的方法,並知道如何將儲存在記憶體單元中的素具顯示在螢幕上。在老師的講解過程中,我對試驗提供的參考**有了更深的了解,明白了如何進行呼叫軟中斷。

實驗三實驗名稱:

**轉換程式設計

實驗目的:

1.了解微機中所使用的各類數制及編碼方法。

2.掌握不同進製數及編碼相互轉換的程式設計方法,加深對數碼轉換的理解。

3.掌握將儲存在記憶體單元中的資料以十六進製制數形式、十進位制數形式和二進位制數形式顯示在螢幕上的方法。

實驗內容:

1.將5位十進位制數的數字串轉換為乙個字的二進位制數

2.編寫程式將記憶體中乙個字的數轉換為十進位制數的數字串顯示。((壓棧或者字串)

3.程式設計將十進位制的數字串轉換為bcd碼

4.程式設計將bcd碼轉換為二進位制數

5.程式設計將二進位制數轉換為十進位制數顯示

實驗步驟:

1.畫出實驗流程圖。

2.執行tddebug軟體,選擇edit選單編寫實驗程式

3.使用***pile選單中的***pile和link對實驗程式進行彙編、連線,生成執行檔案。

4.使用rmrun選單中的run執行程式,觀察執行結果。

5.使用rmrun選單中的debug除錯程式。單步執行指令,觀察各暫存器及資料區的內容。

6.更改資料區中的資料,考察程式的正確性。

實驗流程圖:

**:ddata segment

mes db 'the ascii code of decimal code are:$'

buf db 30h,30h,30h,31h,32h十進位制00012的ascii碼

db 10h dup(0)

ddata ends

code segment

assume cs:code,ds:ddata

start:mov ax,ddata

mov ds,ax

mov si,offset buf

mov bl,0ah送乘數

mov cx,0004h送轉換位數

mov ah,00h

mov al,[si取第一位ascii碼

sub al,30h

a1: inc si

imul bl乘10 (al*bl) 放在ax中

add al,[si]

sub al,30h

loop a1

mov bx,ax

mov dx,offset mes顯示提示資訊

mov ah,09h

int 21h

mov ax,bx顯示結果

mov cx,4

a3: push cx

mov cl,4

rol ax,cl向左移位

pop cx

mov bx,ax

and al,0fh高4位清零,保留低4位的值

cmp al,0ah

jb a2

add al,07h

a2: add al,30h

mov dl,al

mov ah,02h

int 21h

mov ax,bx

組合語言程式設計實驗報告

2011年 11 月 27日 實驗三迴圈程式設計 一 實驗目的 1 學習除錯程式,查詢邏輯錯誤 2 掌握迴圈程式設計的方法 3 掌握正確分配與使用暫存器。二 實驗內容與要求 題目1 陣列中是一組無符號數,將最小數放在m單元中,經過彙編後,形成.exe檔案,先用g 0命令執行程式,用 d命令檢視m單元...

組合語言程式設計實驗報告二

1 實驗目的 1 加深對迴圈結構的理解。2 掌握迴圈程式的設計方法。3 學習子程式的定義和呼叫方法。4 掌握子程式 子程式的巢狀 遞迴子程式的結構。5 掌握子程式設計 編制及除錯。6 熟練掌握debug的常用命令,學會用debug除錯程式。2 實驗內容 1 編制在螢幕上顯示九九乘法表的程式。2 編制...

組合語言程式設計實驗報告冊

資訊學院 學號姓名 班級實驗教師 實驗一 利用debug命令除錯小匯程式設計序 一.實驗目的 二.實驗工具軟體 三.實驗過程 除錯結果及結論 實驗二 資料傳送類指令。一.實驗目的 二.實驗工具軟體 三.實驗過程 除錯結果及結論 實驗三 查表及定址方式 一.實驗目的 二.實驗工具軟體 三.實驗過程 除...