級(jí)使用匯編實(shí)驗(yàn)指導(dǎo)書(shū).doc_第1頁(yè)
級(jí)使用匯編實(shí)驗(yàn)指導(dǎo)書(shū).doc_第2頁(yè)
級(jí)使用匯編實(shí)驗(yàn)指導(dǎo)書(shū).doc_第3頁(yè)
級(jí)使用匯編實(shí)驗(yàn)指導(dǎo)書(shū).doc_第4頁(yè)
級(jí)使用匯編實(shí)驗(yàn)指導(dǎo)書(shū).doc_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

6、變成它們的ASCII碼36H和34H,才能在屏幕上顯示出64來(lái),完成這個(gè)功能的程序段如下: 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 ;個(gè)位上的數(shù)變成ASCII碼 MOV DL,BL MOV AH,2 INT 21H ;輸出個(gè)位數(shù)以上就是簡(jiǎn)單的I/O數(shù)據(jù)處理。一般,匯編語(yǔ)言程序使用DOS的基本I/O功能調(diào)用進(jìn)行輸入輸出時(shí),數(shù)據(jù)的輸入輸出處理由用戶自己編程實(shí)現(xiàn)。2、使用功能調(diào)用

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

8、幕顯示格式。另外,還有一些很有用的控制符,如響鈴符07H等,讀者可自己去償試.實(shí)驗(yàn)三 分支結(jié)構(gòu)程序?qū)嶒?yàn)一、實(shí)驗(yàn)?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)用方法.二、實(shí)驗(yàn)題目在以0ffh結(jié)尾的組合十進(jìn)制數(shù)據(jù)塊中(099的數(shù)),尋找最小值,將其顯示在屏幕上。三、提示和說(shuō)明算法分析:先取第一個(gè)數(shù)當(dāng)作最小數(shù)投入寄存器AL中,依次與下一個(gè)數(shù)比較。如果某個(gè)被比較的數(shù)比AL中的數(shù)小,則將其放入AL中,替換AL中原來(lái)的數(shù),否則不替換,往下比較,最后AL中保存的數(shù)就是要找的最小數(shù)。I/O數(shù)據(jù)處理:要將找到的最小值(2位組合十進(jìn)制)

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

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

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

12、計(jì)一個(gè)將字節(jié)數(shù)據(jù)(2位十六進(jìn)制數(shù))轉(zhuǎn)換成ASCII碼的子程序BHTOA,在主程序中循環(huán)利用該子程序就可實(shí)現(xiàn)題目的要求. 參考程序:一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼的子程序HTOA的定義:HTOA的說(shuō)明文件: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、,通過(guò)2次調(diào)用就可是現(xiàn)將一個(gè)字節(jié)數(shù)據(jù)(2位十六進(jìn)制數(shù))轉(zhuǎn)換為相應(yīng)的ASCII碼,編寫(xiě)這樣的子程序BHTOA如下:BHTOA的說(shuō)明文件:子程序名: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通過(guò)上面子程序的設(shè)計(jì),我們就可以編寫(xiě)主程序,實(shí)現(xiàn)題目的要求,一個(gè)參考程序如下:data segment buf db 2ah, 10h, 25h, 47h, 0A6h, 7ch ;實(shí)驗(yàn)數(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四、實(shí)驗(yàn)準(zhǔn)備1、詳細(xì)閱讀實(shí)驗(yàn)指導(dǎo)書(shū)的相關(guān)內(nèi)容;2

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論