組合語言實驗報告

2021-03-04 02:32:27 字數 4521 閱讀 7423

電子科技大學

實驗報告

實驗一1、實驗名稱:彙編源程式的上機除錯操作基礎訓練

2、實驗學時:4

3、實驗內容和目的:

實驗內容:

1. debug命令的使用

2. 程式的除錯與執行

3.編寫程式計算以下表示式: z=(5x+2y-7)/2

設x、y的值放在位元組變數varx、vary中,結果存放在位元組單元varz中。

實驗目的:

1. 掌握debug 的基本命令及其功能

2. 學習資料傳送和算術運算指令的用法

3. 熟悉在pc機上編輯、彙編、連線、除錯和執行組合語言程式的過程。

4、實驗原理:

1.編輯源程式,建立乙個以後綴為 .a**的檔案.

2.彙編源程式,檢查程式有否錯誤,有錯時回到編輯狀態,修改程式中錯誤行。無錯時

繼續第3步。

3.連線目標程式,產生可執行程式。

4.用debug程式除錯可執行程式,記錄資料段的內容。

5、實驗器材(裝置、元器件)

pc、window7平台、ma**5 開發環境

6、實驗步驟:

1、 在資料段中分別用兩個單元varx和vary存放變數x和y;另乙個單元varz用來存放運

算結果z;

2、 由於是位元組變數,所以用al存放變數x的值,然後將al左移兩位得到4*x,再把al

加上x,進而得到5*x;

3、 再用bl存放變數y的值,用add命令得到2*y,之後把al與bl相加,再用sub命令減

去7,得到(5*x+2*y-7)的值,並儲存到al中;

4、 最後將al右移一位,得到最後的z=(5*x+2*y-7)/2,並把al的值送入varz單元;

5、 執行程式,使用-d命令檢視記憶體單元的資訊;

7、實驗資料及結果分析:

實驗**如下:

實驗結果如下圖:

1、 編譯連線後執行程式:

2、 檢視記憶體單元變數的值

varx =05h,vary=07h, (5x+2y-7)/2=(25d+14d-7d)/2d=16d=10h

可以看到上圖中記憶體單元的值與手工計算的結果相符,說明程式是正確的。

8、實驗結論、心得體會和改進建議:

1、 本次實驗讓我掌握debug除錯軟體的一些基本命令,也學會了如何檢視暫存器變數和記憶體單元;

2、 這個程式雖然短小,卻是五臟俱全,讓我對於乙個完整匯程式設計序的框架有了乙個基本的了解,為後面的更為複雜的實驗奠定了基礎;

電子科技大學

實驗報告

實驗二1、實驗名稱:分支程式與迴圈程式設計

2、實驗學時:4

3、實驗內容和目的:

實驗內容:

根據輸入的字母進行大小寫轉換(若是輸入小寫字母則轉換成為大寫字母,反之),若輸入的不是字母則提示出錯並重新輸入。

實驗目的:

1.掌握分支程式的結構。

2.掌握分支程式的設計與除錯方法。

3.掌握迴圈程式設計與除錯方法

4.掌握正確分配與使用暫存器。

4、實驗原理:

1、 利用軟中斷指令,進行人機互動,輸入字母並顯示轉換後的字母;

2、 由ascii碼表可知,小寫字母與其對應的大寫字母之間剛好相差20h,即若輸入的是

大寫字母,將其加上20h就可以得到對應的小寫字母,反之小寫字母減去20h可以得到其大寫字母;

3、 利用cmp比較指令對輸入的字母判定大小寫,在根據標誌暫存器的狀態執行條件

轉移指令找到對應的程式段入口;

5、實驗器材(裝置、元器件)

pc、window7平台、ma**5 開發環境

6、實驗步驟:

1、根據程式流程圖編寫源程式檔案;

2、彙編,若發現語法錯誤或者格式錯誤則修改;

3、鏈結,形成可執行檔案;

4、執行程式,單步執行檢視暫存器標量及記憶體單元;

5、驗證程式的正確性;

程式流程圖如右圖:

七、 實驗資料及結果分析:

實驗**如下:

實驗結果如圖:

1、 編譯連線以及除錯:

2、 輸入小寫p

3、 輸出大寫p

4、 輸入小寫t

5、 輸出大寫t

6、 輸入非字母的字元

7、 輸出警告資訊並重新輸入乙個字元(大寫的q)

八、實驗結論、心得體會和改進建議:

本實驗也有其他的做法,由觀察可知,小寫字母的8位二進位制數的第5位(從第0位開始數)上的值一定為1,而大寫字母的第五位一定為0,所以也可以對將小寫字母與11011111b做and運算,把第五位上的1置0從而轉換為大寫字母,而大寫字母與0010000b做or運算,把第五位上的0置為1變為小寫字母。

電子科技大學

實驗報告

實驗三一、 實驗名稱:數制、碼制和子程式的程式設計與除錯

二、 實驗學時:4

三、 實驗內容和目的:

實驗內容:

從鍵盤輸入兩個2位十六進製制數,相加,結果以十進位制形式顯示在螢幕上。 (要求結果顯示完整的算式)

實驗目的:

1.、熟練掌握編寫組合語言原程式的基本方法和基本框架。

2、熟練使用debug除錯程式。

3.、掌握十六進製制數與ascii碼之間,ascii碼與bcd碼之間的轉換。

4.、掌握用dos功能呼叫,實現字元的輸入和顯示。

5.、掌握子程式的程式設計與除錯方法。

四、 實驗原理:

1、 呼叫0ah號功能,從鍵盤輸入兩個2位十六進製制數,並存入指定緩衝區;

2、 根據ascii碼表的規律將十六進製制數轉換為二進位制數,其中對於數字型ascii碼取其

低四位,而字母型的ascii碼先減去07h後,再取低四位;

3、 而把二進位制數轉換為十進位制數可以採用除基取餘法,但要注意取出的餘數是從低位

往高位排列的。

五、 實驗器材(裝置、元器件)

pc、window7平台、ma**5 開發環境

六、 實驗步驟:

1、 根據程式流程圖編寫實驗**;

2、彙編,若發現語法錯誤或者格式錯誤則修改;

3、鏈結,形成可執行檔案;

4、執行程式,單步執行檢視暫存器標量及記憶體單元;

5、驗證程式的正確性流程圖如下:

七、 實驗資料及結果分析:

實驗**如下:

程式執行結果圖如下:

由上圖可以看出,63h=99d,2ch=44d,99d+44d=143d,可見結果是正確的。

單步執行結果如下圖:

1、 輸入第乙個十六進製制數:

2、 輸入第二個十六進製制數:

3、 呼叫子程式acs2bin:(由於篇幅有限,只截部分圖示意)

4、將兩數之和轉換為十進位制數,呼叫bin2dec子程式(程式中筆誤寫成了bin2hex)

5、將十進位制數轉換為ascii碼,顯示完整算式

6、執行程式過程中發現,當輸入的字元不在0-9a-za-z區間時,程式並沒有如想象中的列印出錯誤資訊,而是直接回到了dos操作介面,這一點我十分不明白,如下圖所示:

八、 實驗結論、心得體會和改進建議:

1、 如上面提到的,執行程式過程中發現錯誤提示資訊列印不了,在網上

也是沒有找到答案,後來我想了想是不是在子程式中就不能再進行軟中斷了呢?子程式呼叫和軟中斷都會對現場進行壓棧保護,可能兩者之間有所衝突。

2、 實驗過程中,在把二進位制數轉換為十進位制數時,一開始我是把每次除

以10求得的餘數按正序存放的,這樣得到的十進位制數就正好是倒序的,後來發現了錯誤,及時改正了。

電子科技大學

實驗報告

實驗四一、 實驗名稱:串操作指令及其應用程式的設計與除錯執行

二、 實驗學時:4

三、 實驗內容和目的:

實驗內容:

從鍵盤輸入兩個相同長度的字串,分別放到資料段和附加段,利用串比較指令比較資料段和附加段中兩個字串,如果兩串一樣,輸出y,否則輸出不同的字元。

實驗目的:

1.熟悉串操作指令的基本格式和使用方法。

2.掌握常用的串操作程式的設計方法。

3.熟悉串操作程式的除錯執行過程。

四、 實驗原理:

1、需要用到9號dos功能呼叫顯示字串,以實現人機對話。比如:在資料段中設定兩個存放提示資訊的字串,乙個是提示使用者輸入,另乙個是指示顯示結果:

massage1 db 『please input a string:』, 0ah, 0dh, 『$』

2、需要用到10號dos功能呼叫輸入連續的字串,並為這些字串預留儲存空間,比如:

string1 db 20, 0, 20 dup(『 0『), 0ah, 0dh, 『$』

3、 利用串比較指令cmpsb比較兩個字串的對應字元是否相等,同時使用repe重複執

行指令再配合jnz和jmp等轉移指令來控制程式的迴圈和跳轉;

五、 實驗器材(裝置、元器件)

pc、window7平台、ma**5 開發環境

六、 實驗步驟:

1、根據程式流程圖編寫實驗**;

2、彙編,若發現語法錯誤或者格式錯誤則修改;

3、鏈結,形成可執行檔案;

4、執行程式,單步執行檢視暫存器標量及記憶體單元;

5、驗證程式的正確性

組合語言實驗報告

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

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

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

組合語言實驗報告三

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