級使用匯編實驗指導(dǎo)書.doc_第1頁
級使用匯編實驗指導(dǎo)書.doc_第2頁
級使用匯編實驗指導(dǎo)書.doc_第3頁
級使用匯編實驗指導(dǎo)書.doc_第4頁
級使用匯編實驗指導(dǎo)書.doc_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄實驗一 上機(jī)過程及DEBUG命令練習(xí)2實驗二 簡單程序?qū)嶒?7實驗三 分支結(jié)構(gòu)程序?qū)嶒?0實驗四 循環(huán)結(jié)構(gòu)程序?qū)嶒?1實驗五 子程序?qū)嶒?3實驗六 宏程序?qū)嶒?7實驗七 中斷實驗28實驗八 文件操作編程實驗30附錄A 出錯信息32附錄B DOS功能調(diào)用說明 39實驗一 上機(jī)過程及DEBUG命令練習(xí)一、實驗?zāi)康牧私夂陞R編語言程序上機(jī)的一般過程;掌握匯編語言源程序的建立和編輯方法;掌握匯編語言源程序的匯編、連接、運行等上機(jī)過程操作;熟練掌握調(diào)試工具DEBUG的各種調(diào)試命令和程序調(diào)試的方法.二、實驗題目 將內(nèi)存DATA單元存放的無符號字節(jié)數(shù)據(jù)拆成2位十六進(jìn)制數(shù)分別存入HEX和HEX+1單元。三、

2、實驗內(nèi)容和步驟1、在EDIT下建立源程序,進(jìn)行匯編、連接、生成可執(zhí)行文件。2、仔細(xì)閱讀在匯編過程及鏈接過程中生成的 .lst 文件、。CRF文件和。MAP文件內(nèi)容。3、在DEBUG下使用T或P命令單步運行程序,檢查每一步運行結(jié)果。4、在DEBUG下使用G命令用斷點和連續(xù)兩種方式運行程序并檢查結(jié)果。四、實驗準(zhǔn)備1、詳細(xì)閱讀實驗指導(dǎo)書的相關(guān)內(nèi)容;2、預(yù)習(xí)編輯程序及MASM、 LINK、 DEBUG等軟件的操作方法和各種命令的使用方法;3、按實驗要求畫出程序框圖、編好試驗程序;4、設(shè)計好實驗的每一個操作步驟,給出兩組不同的實驗數(shù)據(jù)和預(yù)期的結(jié)果。五、實驗報告要求1、給出實際上機(jī)操作的過程和結(jié)果;2、給

3、出調(diào)試后正確運行的程序清單和框圖;3、對調(diào)試過程中遇到的問題做出總結(jié)。實驗二 簡單程序?qū)嶒炓?、實驗?zāi)康?熟悉有關(guān)字符I/O的系統(tǒng)功能調(diào)用方法;掌握接受鍵盤輸入和向顯示器輸出字符的編程方法,建立I/O數(shù)據(jù)處理的概念。二、實驗題目1、編寫一個檢查密碼的程序。首先提示用戶輸入密碼,然后程序接收用戶輸入的密碼(6位)并與正確的密碼比較。如輸入的密碼正確,程序響鈴(或顯示OK)后退出程序,否則提示用戶密碼錯誤,重新輸入.允許輸入三次,都不正確,退出程序。 2、將AL中已知的二進(jìn)制數(shù)以十六進(jìn)制數(shù)形式顯示出來。三、實驗內(nèi)容和步驟1、在EDIT或其他文本編輯工具下建立源程序,進(jìn)行匯編、連接、生成可執(zhí)行文件;2

4、、在DEBUG下使用T或P命令單步運行程序,檢查每一步運行的結(jié)果;3、在DEBUG下使用G命令用斷點和連續(xù)兩種方式運行程序并檢查結(jié)果;4、在DOS下運行程序。四、實驗準(zhǔn)備1、詳細(xì)閱讀實驗指導(dǎo)書的相關(guān)內(nèi)容;2、按實驗題目要求畫出程序框圖、編好試驗程序;3、設(shè)計好實驗的每一步驟。五、實驗報告要求1、給出實際上機(jī)操作的過程和結(jié)果;2、給出調(diào)試后正確運行的程序清單和框圖;3、對調(diào)試過程中遇到的問題做出總結(jié).六、實驗背景知識1、輸入輸出數(shù)據(jù)的處理關(guān)于字符輸入輸出的系統(tǒng)功能調(diào)用,必須注意的是,這些功能輸入輸出的只能是字符(即ASCII碼),當(dāng)我們要從鍵盤上輸入數(shù)據(jù)給程序或?qū)⒂嬎憬Y(jié)果顯示在屏幕上時,就會遇到

5、數(shù)據(jù)的輸入輸出處理問題。輸入的數(shù)據(jù)是以ASCII碼被接收的,一般變換成數(shù)字才能參與運算。例如,用鍵盤輸入一個數(shù)據(jù)“8”,程序中使用1H號功能接收: MOV AH,1 INT 21H這樣,我們將在AL中獲得“8”的ASCII碼“38H”,顯然它不能作為數(shù)值參與運算,必須使“38H”變?yōu)椤?”才行??梢允褂萌缦抡Z句變換: AND AL 0FH或者 SUB AL,30H反之,要輸出一個數(shù)據(jù),先要將其轉(zhuǎn)換成ASCII碼,才能輸出到屏幕上正確顯示。例如,某程序查表得到8的平方值64,這個結(jié)果以十進(jìn)制形成被存放在AL中(高4位為6的BCD碼,低4位為4的BCD碼)現(xiàn)在要顯示這個結(jié)果,就必須事先將6和4分別

6、變成它們的ASCII碼36H和34H,才能在屏幕上顯示出64來,完成這個功能的程序段如下: MOV BL,AL ;保存結(jié)果的付本 MOV CL, 4 SHR AL,CL ;將高半字節(jié)移到低半字節(jié) OR AL,30H ;十位上的數(shù)變成ASCII碼 MOV AH,2 MOV DL,AL INT 21H ;輸出十位數(shù) AND BL,OFH OR BL,30H ;個位上的數(shù)變成ASCII碼 MOV DL,BL MOV AH,2 INT 21H ;輸出個位數(shù)以上就是簡單的I/O數(shù)據(jù)處理。一般,匯編語言程序使用DOS的基本I/O功能調(diào)用進(jìn)行輸入輸出時,數(shù)據(jù)的輸入輸出處理由用戶自己編程實現(xiàn)。2、使用功能調(diào)用

7、進(jìn)行輸出顯示時屏幕格式的控制使用02H或O9H等功能輸出字符時,字符顯示在屏幕當(dāng)前光標(biāo)位置上,我們可以通過向顯示器輸出特殊的控制符來控制字符的顯示格式,常用的控制符如下:1)換行符OAH 它使光標(biāo)下移一行,而列值保持不變;2)回車符ODH 使光標(biāo)返回到一行的起始位置,行值保持不變;3)空格符20H 使光標(biāo)向后移動一個列位置;4)退格符08H 使光標(biāo)向回移動一個列位置;例如:用09H功能顯示一個字符串,為使這個字符串單獨顯示在一行的中間位置,可定義這個字符串如下:STRING DB 0AH,0DH,8 DUP(20H),Hello Assembler!0AH,0DH,合理使用這些控制符,可控制屏

8、幕顯示格式。另外,還有一些很有用的控制符,如響鈴符07H等,讀者可自己去償試.實驗三 分支結(jié)構(gòu)程序?qū)嶒炓?、實驗?zāi)康恼莆辗种ЫY(jié)構(gòu)程序的分支控制方法和程序?qū)崿F(xiàn)技巧;掌握十進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼的方法;進(jìn)一步熟悉有關(guān)字符I/O的系統(tǒng)功能調(diào)用方法.二、實驗題目在以0ffh結(jié)尾的組合十進(jìn)制數(shù)據(jù)塊中(099的數(shù)),尋找最小值,將其顯示在屏幕上。三、提示和說明算法分析:先取第一個數(shù)當(dāng)作最小數(shù)投入寄存器AL中,依次與下一個數(shù)比較。如果某個被比較的數(shù)比AL中的數(shù)小,則將其放入AL中,替換AL中原來的數(shù),否則不替換,往下比較,最后AL中保存的數(shù)就是要找的最小數(shù)。I/O數(shù)據(jù)處理:要將找到的最小值(2位組合十進(jìn)制)

9、輸出顯示,必須將十位和個位分別變成ASCII碼才能用2號功能調(diào)用輸出顯示。四、實驗準(zhǔn)備1、詳細(xì)閱讀實驗指導(dǎo)書的相關(guān)內(nèi)容;2、按實驗題目要求畫出程序框圖、編好試驗程序;3、設(shè)計好實驗的每一步驟。五、實驗報告要求1、給出實際上機(jī)的過程和結(jié)果;2、給出調(diào)試后運行正確的程序清單和框圖;3、對調(diào)試過程中遇到的問題做出總結(jié).實驗四 循環(huán)結(jié)構(gòu)程序?qū)嶒炓?、實驗?zāi)康?掌握循環(huán)結(jié)構(gòu)程序設(shè)計方法和幾種常用的循環(huán)控制方法;掌握單重循環(huán)和多重循環(huán)程序設(shè)計技巧。二、實驗題目已知數(shù)組A中包含15個互不相等的無符號字節(jié)數(shù)據(jù),數(shù)組B中有20個互不相等的無符號字節(jié)數(shù)據(jù),編程將同時出現(xiàn)在A、B中的數(shù)存入數(shù)組C中。三、提示和說明算法

10、分析:先取數(shù)組A中的第一個數(shù)與數(shù)組B中的數(shù)依次比較是否相等,若相等將這個數(shù)放入數(shù)組C中,再取數(shù)組A中的下一個數(shù)做同樣的操作。這是一個二重循環(huán)程序,內(nèi)循環(huán)是一個條件判斷循環(huán),循環(huán)的條件是比較不等時循環(huán),最大循環(huán)次數(shù)是數(shù)組B的元素個數(shù)20.外循環(huán)是循環(huán)次數(shù)已知的循環(huán),可以用計數(shù)法控制循環(huán),循環(huán)次數(shù)為數(shù)組A中的元素個數(shù).程序設(shè)計的關(guān)鍵問題是兩層循環(huán)都要用到循環(huán)計數(shù)器CX,因此,在進(jìn)入內(nèi)循環(huán)時,要將CX中外循環(huán)計數(shù)值壓棧保護(hù),返回外循環(huán)時恢復(fù)。四、實驗準(zhǔn)備1、詳細(xì)閱讀實驗指導(dǎo)書的相關(guān)內(nèi)容;2、按實驗題目要求畫出程序框圖、編好試驗程序;3、設(shè)計好循環(huán)程序調(diào)試的步驟。五、實驗報告要求1、給出實際上機(jī)的過程

11、和結(jié)果;2、給出調(diào)試后運行正確的程序清單和框圖;3、對調(diào)試過程中遇到的問題做出總結(jié).實驗五 子程序?qū)嶒炓?、實驗?zāi)康?通過實驗觀察子程序調(diào)用和返回的過程和堆棧的變化;掌握子程序設(shè)計時現(xiàn)場保護(hù)的方法,主、子程序之間參數(shù)傳遞方法;掌模塊的劃分方法和多模塊編程時模塊間參數(shù)的傳遞方法,掌握嵌套子程序設(shè)計方法。二、實驗題目設(shè)內(nèi)存buf開始的單元存放若干個無符號字節(jié)數(shù)據(jù),數(shù)據(jù)的個數(shù)在COUNT單元.用子程序的方法將其轉(zhuǎn)換為十六進(jìn)制數(shù)的ASCII碼存入ASC開始的存儲區(qū),以備輸出顯示。三、提示和說明可以用子程序嵌套方式解決該問題。首先設(shè)計一個將一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼的子程序HTOA.再利用HTOA設(shè)

12、計一個將字節(jié)數(shù)據(jù)(2位十六進(jìn)制數(shù))轉(zhuǎn)換成ASCII碼的子程序BHTOA,在主程序中循環(huán)利用該子程序就可實現(xiàn)題目的要求. 參考程序:一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼的子程序HTOA的定義:HTOA的說明文件:1) 子程序名:HTOA;2) 功 能:將一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼;3) 入口條件:被轉(zhuǎn)換的數(shù)在AL中的第四位;4) 出口條件:轉(zhuǎn)換的結(jié)果在AL中;5) 受影響的寄存器:AL,標(biāo)志寄存器F。程序代碼: HTOA proc far and al, 0fh cmp al, 10 JC next Add al, 7 next: add al, 30h ret HTOA endp利用HTOA

13、,通過2次調(diào)用就可是現(xiàn)將一個字節(jié)數(shù)據(jù)(2位十六進(jìn)制數(shù))轉(zhuǎn)換為相應(yīng)的ASCII碼,編寫這樣的子程序BHTOA如下:BHTOA的說明文件:子程序名:BHTOA; 功 能: 將一字節(jié)數(shù)據(jù)轉(zhuǎn)換成2位十六進(jìn)制數(shù)的ASCII碼;入口條件:被轉(zhuǎn)換的數(shù)在AL中;出口條件:轉(zhuǎn)換的高位ASCII碼在AH中,低位ASCII碼在AL中;受影響的寄存器:AX,標(biāo)志寄存器;本程序調(diào)用將一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼的子程序HTOA。子程序BHTOA代碼:BHTOA pro far push cx mov ch, al mov cl, 04 shr al, cl call HTOA mov ah, al mov al,

14、ch cal HTOA pop cx ret BHTOA endp通過上面子程序的設(shè)計,我們就可以編寫主程序,實現(xiàn)題目的要求,一個參考程序如下:data segment buf db 2ah, 10h, 25h, 47h, 0A6h, 7ch ;實驗數(shù)據(jù) count egu buf ASC db 12 dup(0)data endscode segment assume cs: code, ds: datastart: mov ax, data mov ds, ax lea si, buf lea di, ASC mov cx, countagain: mov al, si call BHTO

15、A mov di, ah inc di inc si Loop again mov ah, 4ch int 21hHTOA proc far and al, 0fh cmp al, 10 jc next add al, 7next: add al, 30h retHTOA endpBHTOA proc far push cx mov ch, al mov cl, 4 shr al, cl call HTOA mov ah, al mov al, ch call HTOA pop cx retBHTOA endpcode endsend start四、實驗準(zhǔn)備1、詳細(xì)閱讀實驗指導(dǎo)書的相關(guān)內(nèi)容;2

16、、按實驗題目要求畫出程序框圖、編好試驗程序;3、設(shè)計好循環(huán)程序調(diào)試的步驟.五、實驗報告要求1、畫出子程序調(diào)用過程堆棧的變化過程;2、給出調(diào)試后運行正確的程序清單和框圖;3、對調(diào)試過程中遇到的問題做出總結(jié)。實驗六 宏程序?qū)嶒炓弧嶒災(zāi)康恼莆蘸甓x和宏調(diào)用以及宏中參數(shù)的使用方法;了解宏嵌套一般方法;掌握宏庫的建立和使用方法。二、實驗題目設(shè)內(nèi)存buf開始的單元存放若干個無符號字節(jié)數(shù)據(jù),數(shù)據(jù)的個數(shù)在COUNT單元.用宏的方法將其轉(zhuǎn)換為十六進(jìn)制數(shù)的ASCII碼存入ASC開始的存儲區(qū),并將其輸出顯示。三、提示和說明可以將一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼的過程定義成一個宏.也可以用宏嵌套的方法定義一個將字節(jié)

17、數(shù)據(jù)(2位十六進(jìn)制數(shù))轉(zhuǎn)換成ASCII碼的宏,同時將輸出顯示定義成另一個宏。四、實驗準(zhǔn)備1、詳細(xì)閱讀實驗指導(dǎo)書的相關(guān)內(nèi)容;2、按實驗題目要求畫出程序框圖、編好試驗程序;。3、設(shè)計好程序調(diào)試的步驟。五、實驗報告要求1、給出調(diào)試后運行正確的程序清單和框圖;2、給出宏擴(kuò)展后的列表文件清單;3、對調(diào)試過程中遇到的問題做出總結(jié)。實驗七 中斷實驗一、實驗?zāi)康?掌握中斷驅(qū)動程序的初始化和安裝方法;掌握修改或替換系統(tǒng)中斷的方法和技巧; 開發(fā)用戶中斷驅(qū)動程序的編寫、安裝和駐留駐內(nèi)存的方法;通過上機(jī)查看系統(tǒng)的中斷向量表進(jìn)一步理解和掌握修改或替換系統(tǒng)中斷,提取中斷向量,修改中斷向量,重置中斷向量的方法.二、實驗題目

18、利用中斷,編寫一個后臺定時任務(wù)調(diào)度程序.設(shè)有3個需定時處理的任務(wù),對應(yīng)的處理程序為.設(shè)sub1每2秒之行一次,sub2每10秒鐘執(zhí)行一次,sub3每1分鐘執(zhí)行一次。三、提示和說明任務(wù)調(diào)度程序應(yīng)該不影響cpu執(zhí)行其它任務(wù)。因此,它必須是一個系統(tǒng)自動觸發(fā)的定時中斷程序。利用系統(tǒng)的時鐘中斷(1ch),每55ms被系統(tǒng)自動調(diào)用一次的原理,將系統(tǒng)的1ch號中斷驅(qū)動程序用任務(wù)調(diào)度程序替換。通過中斷計時,實現(xiàn)定時任務(wù)的調(diào)度。實驗中3個被調(diào)度的任務(wù)子程序sub1、sub2、sub3的功能可以由實驗者自己設(shè)計確定.下面給出的sub1、sub2、sub3參考程序功能是分別顯示字符A、B、C.sub1、sub2、sub3參考程序如下:sub1 proc far ; 利用int 10h的14號功能顯示字母Amov al, Amov bh, 0mov ah, 14int 10hsub1 endpsub2 proc far ;定時顯示Bmov al, Bmov bh, 0mov ah, 14int 10hsub2 endpsub3 proc far ;sub3定時顯示C

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論