組合語言程式設計實驗指導書

2021-09-21 23:04:17 字數 4303 閱讀 3492

計算機工程教研室

實驗課程:組合語言程式設計

適用專業:電腦科學與技術專業

上海應用技術學院

2023年3月

目錄目錄 i

前言 1

上機實驗的要求和步驟 1

實驗報告的要求 2

組合語言上機操作簡介 3

編輯 3

彙編 3

連線 5

執行和除錯 5

實驗一資料定義和資料傳送 8

實驗二多項式運算 9

實驗三分支程式設計 10

實驗四迴圈程式設計 11

實驗五子程式設計一 12

實驗六子程式設計二 18

實驗七巨集指令及顯示程式的設計 19

實驗八檔案操作 20

組合語言是計算機能提供給使用者的最快而且最有效的語言,也是能夠利用計算機所有硬體特性並能直接控制硬體的唯一語言,因而在對於程式的空間和時間要求很高的場合,組合語言是必不可少的,至於對於很多直接控制硬體的場合,則更是非用組合語言不可了。

在廣大的學生和程式設計愛好者眼中,組合語言一直被認為是最難的語言之一,究其原因,主要是因為組合語言程式設計師在著眼於程式邏輯實現的同時還要注重太多的其他細節,這些在學習其他語言時可以不必涉及的細節包括上百條機器指令的用法、一大堆中斷的用法和很多與硬體相關的知識。

為了幫助學生盡快掌握組合語言這門知識,熟悉其中的許多細節問題,光靠教師在課堂上的授課是不行的,一定要讓同學們親自程式設計序、除錯程式。許多程式設計高手就是在長期計算機旁不斷程式設計、不斷除錯中成長起來的。

實驗目的不光是為了驗證書本理論,更重要的是對實踐能力的培養。其中包括:實際除錯程式的能力,例如修改程式引數的能力,檢視結果的能力,設定斷點除錯執行的能力等;開發組合語言應用程式的能力,例如應用有關彙編軟體的能力,進行系統呼叫和bios功能呼叫的能力,進行模組程式設計的能力等。

對某一問題用不同的程式實現的能力,例如我們為每個實驗提供了參考程式(或程式段),目的是讓每個實驗者參照樣板程式將實驗成功地實現,在掌握其方法後,自己改變程式或本分改變程式加以實現。

上機前作好充分準備,包括程式框圖、除錯步驟、測試方法、對執行結果的分析方法等。

上機時要遵守實驗室的規章制度,愛護實驗裝置。要熟悉與實驗相關的系統軟體(如編輯程式、匯程式設計序、連線程式和除錯程式等)的使用方法。在程式的除錯過程中,有意識地學習及掌握borlamd公司的除錯軟體td(turbo debugger)程式的各種操作命令和圖形介面的意義,以便掌握程式的除錯方法及技巧。

除錯程式中如果出現編譯錯誤,要根據提示,分析錯誤原因進行修改。如果彙編和連線正確,生成了可執行程式,則應使用多組資料進行測試,分析其輸出結果是否與預期的結果相符,如果不符,應檢查程式演算法是否合理,將發現的錯誤逐個修正,並作記錄。

按照實驗要求,對程式作必要的改動,或者增加一些功能等。

實驗報告的主要內容應包括如下幾個方面:

● 實驗目的

明確實驗目的,以保證達到課程所指定的基本要求。在寫實驗報告時,要進一步確認是否達到了預期的目的。

● 實驗內容

實驗的目的是要通過解決一些具體問題來達到的。在實驗報告中,實驗內容是指本次實驗中實際完成的內容。在每乙個實驗題目中,一般都提出一些具體要求,其中有些具體要求是為了達到實驗目的而提出的,不僅有具體的實驗題目,還應包括具體要求。

● 源程式、程式的運**況(包括對不同測試資料的執行結果)

程式執行結果一般是輸出語句所輸出的結果。對於不同的輸入,其輸出的結果是不同的。因此,在輸出結果之前一般還應註明輸入的資料,以便對輸出結果進行分析和比較。

在程式的執行中,還必須用各種不同情況的資料進行除錯,以檢查程式能否正常執行。因為,有時程式對某些情況是可以正常執行的,而對某些特殊情況的資料可能會出現執行出錯或宕機,通過各種資料的除錯,完善程式。

● 分析和體會、實驗中碰到的問題及解決方法

這是實驗報告中最重要的一項,也是最容易忽視的一項。實驗過程中大量的工作是程式除錯,在除錯過程中會遇到各種各樣的問題,每解決乙個問題就能積累一點經驗,提高自己的程式設計能力。

除錯分析也包括對結果的分析。體會主要是指通過本次實驗是否達到了實驗目的,有哪些基本概念得到了澄清,碰到了那些以前沒有見到的問題,最後採用什麼方法得到解決等。

高組合語言源程式編制完成後,在計算機上的操作過程分為四個階段:編輯、彙編、連線、執行除錯(圖1)。

編輯階段的主要任務是:

輸入源程式;

對源程式進行修改。

大多數的文字編輯軟體都可以用來輸入和修改組合語言源程式,如記事本(notepad)、寫字板(writer)、word以及命令列方式下的edit。使用寫字板、word軟體時要注意,一定要用「純文字」格式來儲存源程式檔案,否則無法彙編。產生的源程式檔案應該以「.

asm」或「.txt」為副檔名。使用「.

asm」副檔名可以簡化後面的操作。

圖1中,進行了兩次編輯過程,分別產生了組合語言源程式檔案myprg1.asm和myprg2.asm。

彙編階段的任務是把組合語言源程式「翻譯」成為機器**(稱為「目標」),產生二進位制的「目標檔案(object file)」。

常用的彙編工具是microsoft公司的masm(macro assembler,巨集彙編)和borland公司的tasm(turbo assembler),這兩個軟體使用方法十分相似。相比較而言,borland公司的除錯軟體td(turbo debugger)更適合初學者使用,本書以borland公司的tasm5.0版彙編軟體包為例,介紹組合語言的彙編、連線和執行除錯。

假設已經產生了乙個組合語言源程式檔案「myprg1.asm」,可以用如下命令進行彙編:

tasm myprg1↙

該命令正確執行後,將產生乙個同名的目標檔案myprg1.obj。

如果組合語言源程式檔案以「.txt」為副檔名,彙編時要使用這個檔案的「全稱」:

tasm myprg1.txt↙

完整的tasm命令行為:

tasm [option] source [, object] [, listing] [, xref] ↙

其中用方括號括起的部分不是必需的,可以根據需要選擇使用。

[option] 這一部分可以給彙編過程提供一些可選擇的專案,用斜槓後面跟乙個或幾個字母表示。常用的選項有:

/zi 產生用於程式除錯的完整資訊;

/l 產生同名的列表檔案。這個檔案儲存了彙編過程產生的各種資訊,包括目標的位置、內容以及出錯資訊等。有時候彙編過程會產生很多錯誤資訊,甚至彙編結束後,第一行的資訊已經被卷出螢幕。

這時,用列表檔案記錄彙編中產生的錯誤資訊是十分必要的。

[, object] 通常目標檔案與源程式同名,也可以通過這個選項另外指定目標檔名。

[, listing] 可以用這個選項指定列表檔案的名稱。如果沒有選擇[, object],那麼在選擇這一項時要用兩個逗號開始。

[, xref] 這個選項用來產生交叉引用檔案,它記錄程式中每乙個名字定義、引用的全部資訊,供除錯較大程式時參考。

例如,命令 tasm /zi prg .txt , prg1, prg1↙ 對源程式「prg .txt」進行彙編,產生名為「prg1.

obj」的目標檔案和名為「prg1.lst」的列表檔案,同時產生程式除錯所需要的完整資訊(包含在目標檔案prg1.obj中)。

tasm命令執行後,在螢幕上顯示相關資訊。如果包含了如下的兩行資訊:

error messages: none

waring message: none

說明這個程式已經順利地通過了「彙編」,沒有發現錯誤。反之,則會顯示錯誤和警告的個數,同時還會有錯誤所在行號以及錯誤的型別。例如,下面的資訊:

**error** ex2.asm(14) value out of range

……error messages: 1

表示彙編源程式ex2.asm第14行有「數值超出範圍」的錯誤,程式的錯誤總數為1。

關於tasm命令更詳細的資訊,可以通過打入命令「tasm/?」獲得。

圖2-6中,對編輯產生的兩個組合語言源程式分別進行了彙編,產生了兩個目標檔案myprg1.obj和myprg2.obj。

彙編產生的目標檔案還不能在計算機上執行,還需要經過「連線」,得到真正可以執行的「可執行」程式檔案。

連線階段主要完成的操作是:

把幾個程式模組產生的目標檔案連線成乙個完整的可執行程式;

把「子程式庫」中的子程式連線到程式中去。

對於由單個程式檔案組成的簡單程式,以「ex2.obj」為例,連線的命令如下:

tlink ex2↙

該命令對目標檔案「ex2.obj」進行連線操作,產生同名的可執行程式「ex2.exe」。

如果程式裡沒有定義堆疊段,連線過程會產生警告資訊「no stack」,如果程式比較小,這個警告資訊不影響連線產生的可執行程式的使用。

組合語言實驗指導書

王勇劉輝 上海電力學院計算機系 2007年10月 目錄實驗一 debug命令實驗 1 實驗二字串傳遞實驗 7 實驗三迴圈程式實驗 15 實驗四多重迴圈實驗 21 實驗五分支程式實驗 28 實驗六子程式引數傳遞實驗 34 實驗七子程式巢狀實驗 37 實驗八中斷處理實驗 42 實驗九 bios中斷實驗 ...

組合語言實驗指導書

前言組合語言是計算機專業的一門重要的專業基礎課,主要介紹組合語言程式設計的基本原理和方法。組合語言是一門理論性和實踐性較強的課程,輔助課堂教學的實驗有助於幫助學生理解組合語言的基本原理,鍛鍊學生的動手能力,提高學生的綜合應用知識的能力。本實驗指導書按照組合語言程式設計的教學大綱要求編寫。依據循序漸進...

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

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