《匯編語言程序設(shè)計》_第1頁
《匯編語言程序設(shè)計》_第2頁
《匯編語言程序設(shè)計》_第3頁
《匯編語言程序設(shè)計》_第4頁
《匯編語言程序設(shè)計》_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、匯編語言程序設(shè)計 實實 驗驗 指指 導(dǎo)導(dǎo) 書書 徐州師范大學(xué)計算機科學(xué)與技術(shù)學(xué)院 2009 年 12 月 前 言 本課程實驗教學(xué)的目的和任務(wù)是使學(xué)生通過實踐環(huán)節(jié)深入理解和掌握 課堂教學(xué)內(nèi)容,培養(yǎng)學(xué)生的動手能力和分析、解決實際問題的能力,使學(xué) 生在盡量短的時間,通過實驗熟練的掌握計算機匯編語言的功能、用法和 技巧以及實際編程和調(diào)試程序的能力。為后續(xù)課程打下堅實基礎(chǔ)。 實驗開始前應(yīng)做好預(yù)習(xí)、初步完成代碼編制;上機時完成調(diào)試、測試; 實驗結(jié)束后認真寫出實驗報告并給出結(jié)果分析。 目目 錄錄 實驗一實驗一 匯編語言實驗平臺及調(diào)試工具的應(yīng)用(匯編語言實驗平臺及調(diào)試工具的應(yīng)用(2 課時)課時).1 一、實驗

2、目的.1 二、實驗要求.1 三、實驗內(nèi)容.1 四、課后思考.4 實驗二實驗二 指令系統(tǒng)和尋址方式(指令系統(tǒng)和尋址方式(2 課時)課時).5 一、實驗?zāi)康?5 二、實驗要求.5 三、實驗內(nèi)容.5 四、課后思考.5 實驗三實驗三 循環(huán)與分支程序設(shè)計及子程序設(shè)計(循環(huán)與分支程序設(shè)計及子程序設(shè)計(2 課時)課時).6 一、實驗?zāi)康?6 二、實驗要求.6 三、實驗內(nèi)容.6 四、課后思考.7 實驗四實驗四 高級匯編語言技術(shù)和常用高級匯編語言技術(shù)和常用 DOSDOS 功能調(diào)用(功能調(diào)用(4 課時)課時).8 一、實驗?zāi)康?8 二、實驗要求.8 三、實驗內(nèi)容.8 四、課后思考.8 參考文獻參考文獻.8 實驗一

3、實驗一 匯編語言實驗平臺及調(diào)試工具的應(yīng)用(匯編語言實驗平臺及調(diào)試工具的應(yīng)用(2 課時)課時) 一、實驗?zāi)康囊?、實驗?zāi)康?1掌握 DEBUG 的基本命令及其功能 2學(xué)習(xí)在匯編實驗平臺下開發(fā)程序的基本流程 二、實驗要求二、實驗要求 1用匯編語言編寫一個計算 1+2+100 的程序并在 MASM 環(huán)境下匯編,連接生 成可執(zhí)行文件,然后用 DEBUG 工具跟蹤調(diào)試。 2運用 DEBUG 調(diào)試工具跟蹤調(diào)試此程序,注意寄存器,內(nèi)存單元內(nèi)容的變化。 三、實驗內(nèi)容三、實驗內(nèi)容 第一部分 程序的編輯,匯編,鏈接及運行 用匯編語言編寫一個計算 1+2+100 的程序并在 MASM 環(huán)境下匯編,連接生成 可執(zhí)行文件

4、,然后用 DEBUG 工具跟蹤調(diào)試。 第二部分 DEBUG 調(diào)試工具的運用 DEBUG 是專門為匯編語言設(shè)計的一種調(diào)試工具,它通過進,設(shè)置斷點等方式為匯編 語言程序員提供了非常有效的調(diào)試手段。 1、DEBUG 程序的啟動 在 DOS 提示符下,可鍵入命令: CDEBUGd:path文件名 參數(shù) 1參數(shù) 2 其中文件名是被調(diào)試文件的名稱,它須是執(zhí)行文件(EXE) ,兩個參數(shù)是運行被調(diào)試 文件時所需要的命令參數(shù),在 DEBUG 程序調(diào)入后,出現(xiàn)提示符“-” ,此時,可鍵入所 需的 DEBUG 命令。 在啟動 DEBUG 時,如果輸入了文件名,則 DEBUG 程序把指定文件裝入內(nèi)存。用戶可 以通過

5、DEBUG 的命令對指定文件進行修改、顯示和執(zhí)行。如果沒有文件名,則是以當(dāng) 前內(nèi)存的內(nèi)容工作,或者用命名命令和裝入命令把需要的文件裝入內(nèi)存,然后再用 DEBUG 的命令進行修改、顯示和執(zhí)行。 2、DEBUG 的主要命令 (1) 匯編命令 A,格式為: -A地址 該命令從指定地址開始允許輸入?yún)R編語句,把它們匯編成機器代碼相 繼存放在從指定地址開始的存儲器中。 (2) 反匯編命令 U,有兩種格式: 1)-U地址 該命令從指定地址開始,反匯編 32 個字節(jié),若地址省略,則從上一個 U 命 令的最后一條指令的下一個單元開始顯示 32 個字節(jié)。 2)-U 范圍 該命令對指定范圍的內(nèi)存單元進行反匯編,例如

6、: -U 04BA:0100 0108 或 U 04BA:0100 L9 此二命令是等效的。 (3) 運行命令 G,格式為: -G =地址 1地址 2地址 3。 。 。 其中地址 1 規(guī)定了運行起始地址,后面的若干地址均為斷點地址。 (4) 追蹤命令 T,有兩種格式: 1)逐條指令追蹤: -T=地址 該命令從指定地址起執(zhí)行一條指令后停下來,顯示寄存器內(nèi)容和狀態(tài) 值。 2)多條指令追蹤: -T=地址值 該命令從指定地址起執(zhí)行 n 條命令后停下來,n 由值確定。 (5) 顯示內(nèi)存單元內(nèi)容的命令 D,格式為: -D地址或-D范圍 (6) 修改內(nèi)存單元內(nèi)容的命令 E,它有兩種格式: 1)用給定的內(nèi)容代

7、替指定范圍的單元內(nèi)容: -E 地址 內(nèi)容表 例如:-E 2000:0100 F3 “XYZ” 8D 其中 F3, “X” “Y” “Z”和 8D 各占一個字節(jié),用這五個字節(jié)代替原內(nèi)存單 元 2000:0100 到 0104 的內(nèi)容, “X” “Y” “Z”將分別按它們的 ASCII 碼值代 入。 2)逐個單元相繼地修改: -E 地址 例如:-E 100: 18E4:0100 89.78 此命令是將原 100 號單元的內(nèi)容 89 改為 78。78 是程序員鍵入的。 (7) 檢查和修改寄存器內(nèi)容的命令 R,它有三種方式: 1)顯示 CPU 內(nèi)部所有寄存器內(nèi)容和標志位狀態(tài);格式為:-R R 命令顯示

8、中標志位狀態(tài)的含義如下表所示: 標 志 名置 位復(fù) 位 溢出 Overflow(是/否)OVNV 方向 Direction(減量/增量)DNUP 中斷 Interrupt(允許/屏蔽)EIDI 符號 Sign(負/正)NGPL 零 Zero(是/否)ZRNZ 輔助進位 Auxiliary Carry(是/否)ACNA 奇偶 Parity(偶/奇)PEPO 進位 Carry(是/否)CYNC 2)顯示和修改某個指定寄存器內(nèi)容,格式為: -R 寄存器名 例如打入:-R AX 系統(tǒng)將響應(yīng)如下: AX FIF4 : 表示 AX 當(dāng)前內(nèi)容為 F1F4,此時若不對其作修改,可按 ENTER 鍵,否則, 打

9、入修改后內(nèi)容,如: -R BX BX 0369 :059F 則 BX 內(nèi)容由 0369 改為 059F 3)顯示和修改標志位狀態(tài),命令格式為: -RF 系統(tǒng)將給出響應(yīng),如 OV DN EI NG ZR AC PE CY- 這時若不作修改可按 ENTER 鍵,否則在“-”號之后鍵入修改值,鍵入順序 任意。如 OV DN EI NG ZR AC PE CY-PONZDINV (8) 命名命令 N,格式為: -N 文件名 此命令將文件名格式化在 CS:5CH 的文件控制塊內(nèi),以便使用 L 或 W 命令 把文件裝入內(nèi)存進行調(diào)試或者存盤。 (9) 裝入命令 L,它有兩種功能: 1)把磁盤上指定扇區(qū)的內(nèi)容

10、裝入到內(nèi)存指定地址起始的單元中,格式為: -L 地址 驅(qū)動器 扇區(qū)號 扇區(qū)數(shù) 2)裝入指定文件,格式為: -L 地址 此命令裝入已在 CS:5CH 中格式化的文件控制塊所指定的文件。 在用 L 命令前,BX 和 CX 中應(yīng)包含所讀文件的字節(jié)數(shù)。 (10)寫命令 W,有兩種格式: 1)把數(shù)據(jù)寫入磁盤的指定扇區(qū): -W 地址 驅(qū)動器 扇區(qū)號 扇區(qū)數(shù) 2)把數(shù)據(jù)寫入指定文件中: -W 地址 此命令把指定內(nèi)存區(qū)域中的數(shù)據(jù)寫入由 CS:5CH 處的 FCB 所規(guī)定的文件中。 在用 W 命令前,BX 和 CX 中應(yīng)包含要寫入文件的字節(jié)數(shù)。 (11)退出 DEBUG 命令 Q,該命令格式為 Q 它退出 DE

11、BUG 程序,返回 DOS,但該命令本身并不把在內(nèi)存中的文件存盤, 如需存盤,應(yīng)在執(zhí)行 Q 命令前先執(zhí)行寫命令 W。 四、課后思考四、課后思考 編寫出源程序,并說明調(diào)試中遇到的問題是如何解決的,并對調(diào)試過程中的問題 進行分析,對執(zhí)行結(jié)果進行分析。 實驗二實驗二 指令系統(tǒng)和尋址方式(指令系統(tǒng)和尋址方式(2 課時)課時) 一、實驗?zāi)康囊?、實驗?zāi)康?1學(xué)習(xí)數(shù)據(jù)傳送和算術(shù)運算指令的用法 2熟悉在 PC 機上編輯、匯編、連接、調(diào)試和運行匯編語言程序的過程。 二、實驗要求二、實驗要求 將兩個多位十進制數(shù)相加,要求被加數(shù)和加數(shù)均以 ASCII 碼形式各自順序存 放在 DATA1 和 DATA2 為首的 5

12、個內(nèi)存單元中,結(jié)果送回 DATA1 處。 三、實驗內(nèi)容三、實驗內(nèi)容 1編輯源程序,建立一個以后綴為 ASM 的文件。 (參照圖 1 編寫源程序) 2匯編源程序,檢查程序有否錯誤,有錯時回到編輯狀態(tài),修改程序中錯誤行。 無錯時繼續(xù)第 3 步。 3連接目標程序,產(chǎn)生可執(zhí)行程序。 4DEBUG 調(diào)試可執(zhí)行程序,記錄數(shù)據(jù)段的內(nèi)容。 圖 1 兩個多位十進制相加程序流程圖 四、課后思考四、課后思考 1編寫出源程序,并思考將上述程序改為 5 位數(shù)相加,結(jié)果為 6 位數(shù)的加法程 序。(需考慮進位) 2簡單敘述上機步驟,調(diào)試方法。 實驗三實驗三 循環(huán)與分支程序設(shè)計及子程序設(shè)計(2 課時)課時) 一、實驗?zāi)康囊弧?/p>

13、實驗?zāi)康?1掌握循環(huán)程序的設(shè)計方法 2掌握主程序與子程序之間的調(diào)用關(guān)系及調(diào)用方法。 3掌握子程序調(diào)用過程中近程調(diào)用與遠程調(diào)用的區(qū)別。 4掌握通過堆棧轉(zhuǎn)送參數(shù)的方法。 二、實驗要求二、實驗要求 1 編寫一個程序,記錄某個字存儲單元數(shù)據(jù)中 1 的個數(shù),以十進制形式顯示結(jié) 果。 2 將 BUF 開始的 10 個單元中的二進制數(shù)轉(zhuǎn)換成兩位十六進制數(shù)的 ASCII 碼,在 屏幕上顯示出來。要求碼型轉(zhuǎn)換通過子程序 HEXAC 實現(xiàn),在轉(zhuǎn)換過程中,通過子程序 DISP 實現(xiàn)顯示。 三、實驗內(nèi)容三、實驗內(nèi)容 1.1.部分參考程序段清單:部分參考程序段清單: Statistic.ASMStatistic.ASM

14、 ;數(shù)據(jù)段 number dw 00100B ;代碼段 mov bx,number xor dl,dl ;循環(huán)初值:DL0 again: test bx,0ffffh;也可以用 cmp bx,0 jz done ;全部是 0 就可以退出循環(huán),減少循環(huán)次數(shù) shl bx,1;用指令 shr bx,1 也可以 adc dl,0 ;利用 ADC 指令加 CF 的特點進行計數(shù) jmp again done:cmp dl,10 ;判斷 1 的個數(shù)是否小于 10 jb digit;1 的個數(shù)小于 10,轉(zhuǎn)移 push dx mov dl,1;1 的個數(shù)大于或等于 10 mov ah,2;則要先顯示一個 1

15、 int 21h pop dx sub dl,10 digit: add dl,0;顯示個數(shù) mov ah,2 int 21h Conv.ASMConv.ASM DATA SEGMENT BUF DB 0ABH,0CDH,0DEH,01H,02H,03H DB 3AH,4BH,5CH,6FH DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,10 LEA BX,BUF AGAIN: MOV AL, BX CALL HEXASC INC BX LOOP AGAIN MOV AH,4C

16、H INT 21H HEXASC PROC NEAR MOV DL,AL PUSH CX MOV CL,4 SHR DL,CL POP CX CALL DISP ;顯示高位 HEX 數(shù) MOV DL,AL AND DL,0FH CALL DISP RET HEXASC ENDP DISP PROP CMP DL,9 JBE NEXT ADD DL,7 NEXT: ADD DL,30H MOV AH,2 INT 21H ;顯示 RET DISP ENDP CODE ENDS END START 2.參考上面給出的部分源程序,畫出程序流程圖,編寫程序,并調(diào)試運行。 四、課后思考四、課后思考 思考

17、BCD 編碼和二進制的不同,特別是做加法和減法運算時有何區(qū)別? 實驗四實驗四 高級匯編語言技術(shù)和常用 DOS 功能調(diào)用(4 課時)課時) 一、實驗?zāi)康囊?、實驗?zāi)康?1掌握分支、循環(huán)、子程序調(diào)用、DOS 功能調(diào)用等基本的程序結(jié)構(gòu)。 2掌握綜合程序的編制及調(diào)試方法。 二、實驗要求二、實驗要求 設(shè)有十個學(xué)生成績分別是 76,69,84,90,73,88,99,63,100 和 80 分。試編 制一個子程序,將分數(shù)分等并統(tǒng)計低于 60 分(不及格) ,6069 分(合格) ,7079 分(中等) ,8089 分(良好) ,90100 分(優(yōu)秀)的人數(shù),并輸出顯示統(tǒng)計結(jié)果。 三、實驗內(nèi)容三、實驗內(nèi)容 1畫出程序流程圖。 2成績分等部分采用分支結(jié)構(gòu),統(tǒng)計所有成績則用循環(huán)結(jié)構(gòu)完成,顯示統(tǒng)計結(jié)果 采用 DOS 功能調(diào)用。 3統(tǒng)計學(xué)生成績和顯示統(tǒng)計結(jié)果兩部分內(nèi)容用子程序結(jié)構(gòu)來完成。 4學(xué)生成績要求鍵盤輸入,鍵盤輸入采用 DOS 調(diào)用。 5寫出源程序清單和執(zhí)行結(jié)果。 四、課后思考四、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論