適用於計科專業2003級
組合語言實驗主要使學生掌握debug呼叫程式中各命令的使用方法,掌握masm匯程式設計序對組合語言源程式進行編輯、彙編、連線、裝配、除錯到執行的上機操作方法。本教程要求學生熟練掌握組合語言指令練習、順序程式設計、分支程式設計、迴圈程式設計和子程式設計。
基本演示1 組合語言實驗操作方法
一.實驗的基本方法(masm巨集彙編子目錄下)
1.在debug下執行彙編指令或簡單小程式
在debug提示符下,用彙編命令a:輸入彙編指令或簡單小程式,用單步命令t或全程命令g來執行,並檢查執行中間結果與最後結果。
2.標準匯程式設計序上機方法
a.建立asm檔案,用edit .com全螢幕編輯檔案或其他編輯檔案建立擴充套件名為asm的源程式.
b.用masm(或asm)產生擴充套件名為obj目標檔案。
c.用link產生擴充套件名為exe可執行檔案。
d.在debug下,把檔案調入記憶體,除錯程式。
e.在dos下可直接執行擴充套件名為exe的檔案。
二.組合語言的工作環境.
a.硬體環境
ibm-pc及其系列機
記憶體256k位元組以上
外存:硬碟或至少乙個軟碟機
cpu:80586以上
顯示器:單色或彩色顯示器
鍵盤:標準ascii碼鍵盤
b.軟體環境
編緝程式:或其他編緝程式
匯程式設計序: 或
連線程式:
除錯程式: 或
基本演示2 debug命令的使用
a.程式呼叫命令
c>debug [d:] [path] [filename[.ext]] [parm1] [parm2]
其中,檔名是被除錯檔案的名字。如未鍵入檔名。可用debug命令n和l把需要檔案裝入儲存器後再除錯。d指定驅動器,path為路徑,filename為檔名,parm為命令引數
b.顯示儲存單元命令
-d [address]或 ;address 位址
-d [range] ;range 範圍
c.修改儲存單元內容命令
-e address [list]
d.檢查和修改暫存器內容命令
-r [register name] ;register name 暫存器名字
e.彙編命令
-a [address]
f.跟蹤命令
-t [=address] [value] ;value 變數值
g.執行命令
-g [=address ] [address2 [address3]
h.反彙編命令
-u [address]
-u [range]
i.命名命令
-n filespecs [filespecs]
filespecs的格式可為[d:][path]filename [.ext]
j.裝入命令
-l [address[drive sector sector]] ;drive sector 磁碟扇區
k.寫命令
w address drive sector
l.退出命令
-q基本演示3 組合語言指令練習
1.實驗目的
a.掌握debug中彙編命令a,反彙編命令u,單步命令t,顯示儲存單元命令d,修改儲存器單元命令e,修改與顯示暫存器單元命令r,退出q等命令的用法.
b.熟悉彙編中傳送、邏輯等指令。
c.了解指令不同的定址方式,注意規定或限制使用的暫存器如:雙運算元指令中,源運算元和目的運算元的位址不能同時為儲存器位址,段跨越字首不能使用cs,操作物件是位址還是位址中的內容,指令隱含使用的暫存器..
2.實驗要求
a.對debug中a,u,t,d,e,r,q等命令按不同用法進行練習.
b.彙編中傳送、邏輯等指令.
3.實驗指令內容
4.實驗準備
a.認真閱讀本實驗指導.
b.按實驗內容要求,理解指令功能,編寫不同定址方式的指令清單
5.實驗步驟
a.在dos提示符下,在masm子目錄下,按debug及回車.
b.在debug提示符下,按a進入小彙編,輸入源指令.
c.用u反彙編,檢查輸入源指令是否正確,用t或g,除錯與執行指令.
d.檢查指令執行結果,用e,r檢查與修改記憶體,暫存器內容.
e.重複過程.
6.實驗報告
a.目的,要求,內容及演算法思想.
b.不同定址方式,注意規定或限制使用的暫存器.
c.指令清單.
d.實驗心得.
基本演示4 順序程式設計
1.實驗目的
掌握組合語言程式設計的基本步驟,分析問題,確立演算法,畫出程式流程圖.說明流程圖中各功能的含義和表示法。分配工作單元和儲存空間。
根據程式演算法流程選擇合適的指令編制組合語言源程式。本實驗著重掌握順序程式的設計基本方法和技巧。
2.實驗要求
a.程式要結構化:簡明、易讀和易除錯
b.執行速度較快
c.占用儲存空間較少
3.實驗內容
a:基本題:編一段程式,在記憶體中自sqtab(0200h)位址開始的連續10個單元中存放0-9的平方值。
要求利用簡單的查表法num(0210)單元中指定數(0-9)的平方值,並將所求平方值存入result(0211)單元。
b:選做題:將一位元組壓縮bcd碼轉換為二個ascii碼。
4.實驗準備
a.認真閱讀本實驗指導
b.按實驗內容要求,確定演算法,畫流程圖,編寫程式.
5.實驗步驟
a.首先進入編輯器,輸入源程式,檢查正確後,用masm彙編成目標檔案,用連線成可執行檔案,若正確無誤,則用debug調入記憶體,進行除錯.
b.除錯與執行程式:用單步,短點,連續等方法除錯與執行程,根據儲存器,暫存器與標誌位的內容與變化.
如:sp,ip,cf,sf,zf,of,i等,檢查指令結果,程式中間結果及程式執行最後結果是否正確,排除軟體錯誤,直到達到本實驗目的為止.
c.記錄程式入口引數與出口引數,重要的指令結果,程式中間結果及程式執行最後結果.
6.實驗報告
a.目的,要求,內容及演算法思想.
b.程式流程圖,程式清單,重要部位說明.如:重要的指令功能,重要的程式段功能.
c.程式入口引數與出口引數,重要的指令結果,程式中間結果及程式執行最後結果.
d.實驗心得及有意義的建議
基本演示5 分支程式設計
1.實驗目的
掌握分支程式設計的原理和方法,重點掌握各種分支程式中形成和判斷條件而產生的程式段的設計方法和技巧.
2.實驗要求
a.如何產生條件
b.如何對條件進行判斷
c.如何實現分支
3.實驗內容
a.基本題:用位址表法,完成下面要求的多分支程式的設計。根據mode單元中的模式字(0-7)分別轉向l0-l7標號處執行。l0-l7處分別完成顯示『0』-『7』字元
既:當mode=0時,轉l0標號,完成顯示『0』.
當mode=1時,轉l1標號,完成顯示『1』.
當mode=2時,轉l2標號,完成顯示『2』.
當mode=3時,轉l3標號,完成顯示『3』.
當mode=4時,轉l4標號,完成顯示『4』.
當mode=5時,轉l5標號,完成顯示『5』.
當mode=6時,轉l6標號,完成顯示『6』.
當mode=7時,轉l7標號,完成顯示『7』.
b.選做題:統計學生成績,分別統計低於60分,60—69分,70—79分,80-89分,90-99分及100分的人數,並存放到s5,s6,s7,s8,s9及s10單元中。
4.實驗準備
a.認真閱讀本實驗指導
b.按實驗內容要求,確定演算法,畫流程圖,編寫程式.
5.實驗步驟
a.首先進入編輯器,輸入源程式,檢查正確後,用masm彙編成目標檔案,用連線成可執行檔案,若正確無誤,則用debug調入記憶體,進行除錯.
b.除錯與執行程式:用單步,短點,連續等方法除錯與執行程式,根據儲存器,暫存器與標誌位的內容與變化.
如:sp,ip,cf,sf,zf,of,i等,檢查指令結果,程式中間結果及程式執行最後結果是否正確,排除軟體錯誤,直到達到本實驗目的為止.
c.記錄程式入口引數與出口引數,重要的指令結果,程式中間結果及程式執行最後結果.
6.實驗報告
a.目的,要求,內容及演算法思想
b.程式流程圖,程式清單,重要部位說明.如:重要的指令功能,重要的程式段功能.
c.程式入口引數與出口引數,重要的指令結果,程式中間結果及程式執行最後結果.
d.實驗心得及有意義的建議.
基本演示6 迴圈程式設計
1.實驗目的
掌握迴圈程式設計的原理和方法,重點掌握迴圈程式結構的形式和常用迴圈程式的控制方法和技巧.
2.實驗要求
a.置迴圈引數的初值
b.迴圈體構成
c.如何實現迴圈控制
3.實驗內容
a.基本題:計數 1+2+3+...+100
b.選做題:把bx暫存器內的二進位制數用十六進製制數的形式在螢幕上顯示出來.
4.實驗準備
a.認真閱讀本實驗指導
b.按實驗內容要求,確定演算法,畫流程圖,編寫程式.
5.實驗步驟
a.首先進入編輯器,輸入源程式,檢查正確後,用masm彙編成目標檔案,用連線成可執行檔案,若正確無誤,則用debug調入記憶體,進行除錯.
b.除錯與執行程式:用單步,短點,連續等方法除錯與執行程式,根據儲存器,暫存器與標誌位的內容與變化,如:
sp,ip,cf,sf,zf,of,i等,檢查指令結果,程式中間結果及程式執行最後結果是否正確,排除軟體錯誤,直到達到本實驗目的為止.
c.記錄程式入口引數與出口引數,重要的指令結果,程式中間結果及程式執行最後結果.
6.實驗報告
a.目的,要求,內容及演算法思想.
b.程式流程圖,程式清單,重要部位說明.如:重要的指令功能,重要的程式段功能.
c.程式入口引數與出口引數,重要的指令結果,程式中間結果及程式執行最後結果.
d.實驗心得及有意義的建議.
基本演示7 子程式設計
1.實驗目的
掌握子程式設計的原理和方法,重點掌握子程式結構的形式和常用子程式的控制方法和技巧.採用子程式設計以增加程式的可讀性,有利於程式的模組化和自頂向下的設計方法的實現.
2.實驗要求
a.子程式定義及相對應的呼叫方法.
組合語言實驗二
電子資訊學院 實驗報告書 課程名 組合語言 題目 實驗二彙編上機指導及例示 實驗類別驗證 班級bx0907 學號36 姓名楊尚儒 1 實驗目的 debug命令的基本使用方法 2 實驗要求 了解debug命令的各個引數 熟悉在debug方式下輸入匯程式設計序 熟悉使用debug命令進行除錯 3 實驗內...
組合語言實驗報告組合語言實驗指導書
實驗報告 實驗課程組合語言程式 學生代號信念 學號5215201314 專業班級網路間諜088班 2009年 12月 25日 實驗1 利用debug除錯組合語言程式段54 實驗3 初級程式的編寫與除錯實驗 二59 實驗5 分支程式實驗65 實驗6 迴圈程式實驗68 實驗7 子程式實驗69 實驗8 字...
組合語言實驗報告
電子科技大學 實驗報告 實驗一1 實驗名稱 彙編源程式的上機除錯操作基礎訓練 2 實驗學時 4 3 實驗內容和目的 實驗內容 1.debug命令的使用 2.程式的除錯與執行 3.編寫程式計算以下表示式 z 5x 2y 7 2 設x y的值放在位元組變數varx vary中,結果存放在位元組單元var...