8086 8088微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第1頁
8086 8088微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第2頁
8086 8088微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第3頁
8086 8088微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第4頁
8086 8088微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 微型原理與接口技術(shù) 實(shí)驗(yàn)指導(dǎo)書8086/8088微機(jī)原理與接口技術(shù)56目 錄8086/8088微機(jī)原理與接口技術(shù)1前 言3第一章 實(shí)驗(yàn)環(huán)境介紹51.1匯編語言程序的上機(jī)過程51.1.1、源程序的編輯51.1.2、匯編51.1.3、鏈接51.1.4、調(diào)試6第二章 軟件部分實(shí)驗(yàn)7實(shí)驗(yàn)一 匯編語言上機(jī)環(huán)境及基本操作7實(shí)驗(yàn)二 debug調(diào)試程序的應(yīng)用10實(shí)驗(yàn)三 順序程序設(shè)計(jì)16實(shí)驗(yàn)四 分支結(jié)構(gòu)程序設(shè)計(jì)18實(shí)驗(yàn)五 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)20實(shí)驗(yàn)六 子程序設(shè)計(jì)22實(shí)驗(yàn)七 emu8086集成開發(fā)環(huán)境24實(shí)驗(yàn)八 綜合程序設(shè)計(jì)與調(diào)試26附錄 debug用法大全28前 言認(rèn)真做好實(shí)驗(yàn),是掌握應(yīng)用,提高動(dòng)手能力的一個(gè)重

2、要環(huán)節(jié)。本課程安排了一些接口部件的實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)2學(xué)時(shí),目的在于讓同學(xué)們了解和掌握匯編語言的程序設(shè)計(jì)的基本方法和常用的接口器件的使用方法。一個(gè)完整的實(shí)驗(yàn)過程,包括實(shí)驗(yàn)前的準(zhǔn)備、實(shí)驗(yàn)操作過程和實(shí)驗(yàn)后的總結(jié)三部分。做好實(shí)驗(yàn)前的準(zhǔn)備,是做好實(shí)驗(yàn)的重要保障,希望同學(xué)們一定要做好實(shí)驗(yàn)前的準(zhǔn)備工作。一、實(shí)驗(yàn)前的準(zhǔn)備1、認(rèn)真閱讀實(shí)驗(yàn)指導(dǎo)書,詳細(xì)了解本課程實(shí)驗(yàn)的軟硬件環(huán)境。硬件環(huán)境:實(shí)驗(yàn)儀的基本組成和使用方法。軟件環(huán)境:調(diào)試軟件的基本功能和使用方法。這項(xiàng)工作應(yīng)該在本學(xué)期開始,領(lǐng)到實(shí)驗(yàn)指導(dǎo)書時(shí)就進(jìn)行。2、詳細(xì)了解本次實(shí)驗(yàn)的基本任務(wù),充分理解實(shí)驗(yàn)原理為了實(shí)現(xiàn)本次實(shí)驗(yàn)的基本任務(wù),硬件電路由哪幾個(gè)部分組成,各部分電路

3、的主要作用是什么,各部分電路之間如何連接?在此基礎(chǔ)上讀懂實(shí)驗(yàn)電路圖。為了實(shí)現(xiàn)本次實(shí)驗(yàn)的基本任務(wù),軟件部分需要完成哪些工作,確定軟件由哪些功能模塊組成,然后畫出程序流程圖,再按流程圖編寫源程序。在軟硬件設(shè)計(jì)過程中,可能需要進(jìn)行相應(yīng)的參數(shù)計(jì)算。3、設(shè)計(jì)實(shí)驗(yàn)的操作流程事先設(shè)計(jì)好實(shí)驗(yàn)的操作流程,進(jìn)入實(shí)驗(yàn)室后,可以有條不紊地工作。二、實(shí)驗(yàn)操作過程進(jìn)入實(shí)驗(yàn)室以后,要按照事先設(shè)計(jì)好的實(shí)驗(yàn)操作流程來進(jìn)行實(shí)驗(yàn)。軟件實(shí)驗(yàn)的基本步驟為:1、啟動(dòng)pc機(jī)2、編輯源程序3、編譯4、調(diào)試三、實(shí)驗(yàn)記錄如實(shí)記錄實(shí)驗(yàn)的操作過程及實(shí)驗(yàn)的數(shù)據(jù),這里主要包括:1、實(shí)驗(yàn)的相關(guān)數(shù)據(jù)2、實(shí)驗(yàn)過程中的問題(包括分析與解決)四、實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告

4、是實(shí)驗(yàn)結(jié)果的總結(jié),一般需要包括以下內(nèi)容:1、實(shí)驗(yàn)名稱 這里需要準(zhǔn)確無誤地寫出實(shí)驗(yàn)的名稱2、實(shí)驗(yàn)?zāi)康?3、實(shí)驗(yàn)任務(wù)(實(shí)驗(yàn)內(nèi)容)4、實(shí)驗(yàn)原理 、硬件組成(軟件實(shí)驗(yàn)沒有此項(xiàng)內(nèi)容)首先以文字說明實(shí)驗(yàn)電路由哪幾個(gè)部分組成,各部分電路的主要作用是什么,然后給出實(shí)驗(yàn)電路圖。、軟件設(shè)計(jì)首先以文字說明軟件需要完成哪些工作,因此確定軟件由哪些功能模塊組成,然后畫出程序流程圖,再按流程圖編寫源程序。5、實(shí)驗(yàn)操作這里,如實(shí)記錄實(shí)驗(yàn)的操作過程或者是事先設(shè)計(jì)好的實(shí)驗(yàn)操作流程。6、實(shí)驗(yàn)記錄這里,如實(shí)記錄相關(guān)的實(shí)驗(yàn)數(shù)據(jù)以及實(shí)驗(yàn)過程中出現(xiàn)的問題和解決方法。7、實(shí)驗(yàn)結(jié)果根據(jù)前面記錄的實(shí)驗(yàn)數(shù)據(jù),給出實(shí)驗(yàn)的結(jié)果。一般情況下,有兩種實(shí)

5、驗(yàn)的結(jié)果:其一,實(shí)驗(yàn)過程中出現(xiàn)了一些問題,經(jīng)過分析,解決了問題,最終成功實(shí)現(xiàn)了實(shí)驗(yàn)任務(wù)的要求;其二,實(shí)驗(yàn)過程中出現(xiàn)了一些問題,最終未能解決了問題,實(shí)驗(yàn)失敗。8、實(shí)驗(yàn)分析:對(duì)實(shí)驗(yàn)過程中的問題進(jìn)行分析。9、實(shí)驗(yàn)小結(jié)(包括體會(huì))可以從實(shí)驗(yàn)的目標(biāo)、實(shí)驗(yàn)環(huán)境的掌握、分析問題和解決問題的能力等幾個(gè)方面來進(jìn)行小結(jié)。也可以抒發(fā)一下你的感想。10、思考題的解答如果有思考題,需要認(rèn)真解答。第一章 實(shí)驗(yàn)環(huán)境介紹1.1匯編語言程序的上機(jī)過程在計(jì)算機(jī)上運(yùn)行匯編語言程序的步驟是: 用編輯程序(任何一種文本編輯程序)建立asm文件; 用masm程序把a(bǔ)sm文件轉(zhuǎn)換成obj文件; 用link程序把obj文件轉(zhuǎn)換成exe文件;

6、 用debug程序可以調(diào)試目標(biāo)程序 用dos命令直接鍵入文件名就可執(zhí)行該程序1.1.1、源程序的編輯源程序本質(zhì)上是文本文件,任何一種文本編輯器都可以用來編寫源程序,也可以使用計(jì)算機(jī)系統(tǒng)內(nèi)含的全屏幕編輯程序edit.exe。應(yīng)注意的是: 源程序的編寫必須符合匯編語言源程序的語法格式,否則匯編時(shí)會(huì)報(bào)錯(cuò)。 匯編語言源程序的文件后綴必須是asm,否則匯編程序?qū)⒉荒茏R(shí)別。1.1.2、匯編匯編的目的是將匯編語言源程序轉(zhuǎn)換為機(jī)器碼,這項(xiàng)工作是由匯編程序來完成的。ibm pc提供了兩種匯編程序:asm.exe和masm.exe。后者具有宏匯編功能。匯編過程中,首先檢查源程序的語法。若存在語法錯(cuò)誤,則匯編失敗。

7、列出有錯(cuò)誤的語句、錯(cuò)誤的代碼、錯(cuò)誤的類型和錯(cuò)誤的總數(shù),供分析、修改源程序。若不存在語法錯(cuò)誤,則匯編成功。匯編后可生成3個(gè)文件:l 浮動(dòng)的目標(biāo)代碼文件(*.obj):其中,地址操作數(shù)是可浮動(dòng)的相對(duì)地址。l 可打印的列表文件(*.lst):將源程序和目標(biāo)代碼合并制成表。l 符號(hào)表文件(*.crf):反映源程序中符號(hào)的定義和引用情況。其中,第1個(gè)文件是必須生成的,后2個(gè)文件可選擇是否生成。1.1.3、鏈接由匯編生成的目標(biāo)代碼必須經(jīng)過鏈接后才能生成可執(zhí)行文件,這項(xiàng)工作由鏈接程序(link.exe)來完成。鏈接后生成可執(zhí)行文件(*.exe)1.1.4、調(diào)試調(diào)試的目的是驗(yàn)證程序的功能是否符合設(shè)計(jì)的目標(biāo)。i

8、bm pc提供了一種調(diào)試程序:debug.exe在debug環(huán)境下,可以使用debug命令來調(diào)試程序。常見的debug命令見附錄debug用法大全。第二章 軟件部分實(shí)驗(yàn)實(shí)驗(yàn)一 匯編語言上機(jī)環(huán)境及基本操作一、 實(shí)驗(yàn)?zāi)康募耙? 學(xué)習(xí)及掌握匯編語言源程序的書寫格式和要求,明確程序中各段的功能和相互之間的關(guān)系。2 學(xué)會(huì)使用edit、masm、link、debug等軟件工具。3 熟練掌握在計(jì)算機(jī)上建立、匯編、連接、調(diào)試及運(yùn)行程序的方法。二、 實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),masm匯編軟件及debug調(diào)試程序三、 實(shí)驗(yàn)內(nèi)容1 建立軟件工作環(huán)境為了正常運(yùn)行匯編程序,需要如下程序: masm.exe link.ex

9、e debug.exe 等2 建立匯編文件例 在屏幕上輸出 this is a masm sample!使用edit編輯如下文件,并保存為sample.asm:;program is an exampledata segment astr db this is a masm sample!,0dh,0ah,$data endscode segmentassume cs:code,ds:data start:movax, datamovds, axleadx, astrmovah, 09hint21h code ends end start1) 使用匯編c: masm sample -開始匯編m

10、icrosoft (r) macro assembler version 5.00copyright (c) microsoft corp 1981-1985, 1987. -軟件提示object filenamesample.obj: -提示輸入目標(biāo)文件名,可省略source listingnul.lst: -提示輸入列表文件名,可省略cross referencenul.crf: warning severe 注意:若匯編的錯(cuò)誤提示不為0,則須重新調(diào)用edit sample.asm修改錯(cuò)誤,然后再匯編,該過程直到錯(cuò)誤提示為0為止。2) 使用link產(chǎn)生exe文件c:link sample.

11、run filesample.exe:-提示輸入可執(zhí)行文件名,可以省略list file nul.map:-提示輸入連接映象文件libraries.lib -輸入文件用到的庫(kù)文件名.3) 執(zhí)行c:sample 或 debug sample.exe附:ms-dos方式,是windows提供的一個(gè)字符界面的shell窗口,通過“開始程序ms-dos方式”進(jìn)入ms-dos方式后,可以按下“alt+enter”獲得全屏幕的窗口,再該窗口下,主要通過鍵入命令和觀察結(jié)果獲得交互信息。命令簡(jiǎn)介1、 dir命令顯示當(dāng)前目錄下的文件和目錄格式為:dir2、 cd命令改變當(dāng)前工作目錄格式為:cd d:studen

12、tyour_name3、 md命令建立一個(gè)新的目錄格式為:md your_name4、 del命令刪除文件格式為:del first01.asm5、 rd命令刪除目錄,要求要?jiǎng)h除的目錄下無任何目錄或文件格式為:rd your_name6、 copy命令拷貝命令格式為:copy first01.asm (將文件first01.asm復(fù)制為)實(shí)驗(yàn)二 debug調(diào)試程序的應(yīng)用一、實(shí)驗(yàn)?zāi)康募耙?了解并掌握常用debug調(diào)試指令。2能夠在熟悉匯編程序開發(fā)過程的同時(shí),利用debug調(diào)試環(huán)境對(duì)源程序進(jìn)行調(diào)試、跟蹤及修改相應(yīng)的邏輯錯(cuò)誤。二、實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),

13、masm匯編軟件及debug調(diào)試程序三、實(shí)驗(yàn)內(nèi)容1直接啟動(dòng)debug程序如debug.exe在c盤的根目錄下,啟動(dòng)的方法是:c:debug這時(shí)屏幕上會(huì)出現(xiàn)“_提示符,等待鍵入debug命令。2啟動(dòng)debug程序的同時(shí)裝入被調(diào)試文件 命令格式如下:c:debugd:pathfilename.exe 其中,【d:】【path】是被調(diào)試文件所在盤及其路徑,filename是被調(diào)試文件的文件名, 【.exe】是被調(diào)試文件的擴(kuò)展名。 例如:bcdsumexe可執(zhí)行文件在a盤,用debug對(duì)其進(jìn)行調(diào)試的操作命令如下。 c:debug a:bcdsun.exe dos在調(diào)用debug程序后,再由debug把

14、被調(diào)試文件裝入內(nèi)存,當(dāng)被調(diào)試文件的擴(kuò)展名為com時(shí),裝入偏移量為100h的位置,當(dāng)擴(kuò)展名為exe時(shí),裝入偏移量為0的位置,并建立程序段前綴psp,為cpu寄存器設(shè)置初始值。3退出debug 在debug命令提示符“_下鍵入q命令,即可結(jié)束debug的運(yùn)行,返回dos操作系統(tǒng)。4在debug環(huán)境下建立和匯編程序 在debug環(huán)境下用戶可以直接建立匯編語言源程序,并可以進(jìn)行編輯修改,還可以進(jìn)行匯編。 比如,在debug下運(yùn)行如下程序: mov dl,33h ;字符3的ascii碼送dl mov ah,2 ;使用dos的2號(hào)功能調(diào)用 int 21h 進(jìn)入功能調(diào)用,輸出3 int 20h :bios中

15、斷服務(wù),程序正常結(jié)束。 該程序運(yùn)行結(jié)果是在顯示器上輸出一個(gè)字符3。如果要輸出其它字符,請(qǐng)改變程序中33h為相應(yīng)字符的ascii碼。其中涉及dos和bios功能調(diào)用。因?yàn)槲覀兪窃赿os的支持下運(yùn)行匯編語言程序,所以一般情況下,不能輕易使用輸入輸出指令直接通過端口輸入輸出,而必須使用dos內(nèi)部提供的子程序完成輸入輸出。 dos功能調(diào)用就是為諸如此類的目的設(shè)置的。dos功能調(diào)用要求在進(jìn)入int 21h調(diào)用前,首先將功能調(diào)用號(hào)送ah寄存器,并根據(jù)功能調(diào)用號(hào)準(zhǔn)備初始數(shù)據(jù)。也就是說int 21h的2號(hào)功能調(diào)用是輸出dl寄存器中的字符。int 20h是bios中斷服務(wù),這一軟中斷用來正常結(jié)束程序。 運(yùn)行步驟

16、: (1)進(jìn)入debug 設(shè)c盤上有debug.com程序,進(jìn)入dos環(huán)境后鍵入debug,即 c: debug 隨后屏幕顯示: “_號(hào)是進(jìn)入debug的提示符,在該提示符下可鍵入任意debug命令?,F(xiàn)在用a命令輸入程序如下。 (2)輸入程序并匯編 _a 100 169c:0100 mov dl,33 169c:0102 mov ah,2 169c:0104 int 21 169c:0106 int 20 169c:0108 至此程序已輸入完畢,并匯編成機(jī)器指令?,F(xiàn)在用g命令運(yùn)行程序如下:(3)執(zhí)行機(jī)器指令程序 _g=100 3program terminated normally5編程,并對(duì)

17、實(shí)驗(yàn)一中的源程序進(jìn)行debug調(diào)試。附:常用debug命令 debug命令是在命令提示符”_”下由鍵盤鍵入的。每條命令以單個(gè)字母的命令符開頭,然后是命令的操作參數(shù),操作參數(shù)與操作參數(shù)之間,用空格或逗號(hào)隔開,操作參數(shù)與命令符之間用空格隔開,命令的結(jié)束符是回車鍵(enter)。命令及參數(shù)的輸入可以是大小寫的結(jié)合。crtl+break鍵可中止命令的執(zhí)行。crtl+numloek鍵可暫停屏幕卷動(dòng),按任一鍵繼續(xù)。所用的操作數(shù)均為十六進(jìn)制數(shù),不必寫h。1.匯編命令a 格式: (1)a: (2)a : (3)a (4)a 功能:匯編命令是將用戶輸入的匯編語言指令,匯編為可執(zhí)行的機(jī)器指令。鍵人該命令后顯示段地

18、址和偏移地址并等待用戶從鍵盤逐條鍵入?yún)R編語言指令。每當(dāng)輸入一行語句后按“enter鍵,輸入的語句有效。若輸入的語句中有錯(cuò),debug會(huì)顯示“error,要求用戶重新輸入,直到顯示下一地址時(shí)用戶直接鍵入回車鍵返回到提示符”_”。其中(1)用指定段寄存器內(nèi)容作段地址;(3)用cs內(nèi)容作段地址;(4)以cs:100作地址。以后命令中提及的各種地址形式,均指(1)、(2)、(3)中a命令后的地址形式。2比較命令c 格式:c, 其中是由指出的一片連續(xù)單元,或由l指定的。 功能:從的起始地址單元起逐個(gè)與目標(biāo)起始地址以后的單元順序比較單元的內(nèi)容,直至源終止地址為止。遇有不一致時(shí),以的形式顯示失配單元及內(nèi)容。

19、3.顯示內(nèi)存單元命令d 格式: (1) d (2)d (3)d 其中(1)以cs為段寄存器;(3)顯示cs:l00為起始地址的一片內(nèi)存單元內(nèi)容。功能:該命令將顯示一片內(nèi)存單元的內(nèi)容,左邊顯示行首字節(jié)的段地址:偏移地址,中間是以十六進(jìn)制形式顯示的指定范圍的內(nèi)存單元內(nèi)容,右邊是與十六進(jìn)制數(shù)相對(duì)應(yīng)字節(jié)的ascii碼字符,對(duì)不可見字符以.代替。4修改內(nèi)存單元命令e 格式: (1)e (2)e其中是一個(gè)十六進(jìn)制數(shù),或是用引號(hào)(或)括起來的字符串;是以逗號(hào)分隔的十六進(jìn)制數(shù),或是用(或)括起來的字符串,或者是二者的組合。功能:(1)將指定內(nèi)容寫入指定單元后顯示下一地址,以代替原來內(nèi)容。可連續(xù)鍵入修改內(nèi)容,直

20、至新地址出現(xiàn)后鍵入回車為止;(2)將逐一寫入由開始的一片單元中,該功能可以將由指定地址開始的連續(xù)內(nèi)存單元中的內(nèi)容,修改為單元內(nèi)容表中的內(nèi)容。例如: _e ds:30 f8,ab,ab 該命令執(zhí)行后,從ds:30到ds:33的連續(xù)4個(gè)存儲(chǔ)單元的內(nèi)容將被修改為f8h,abh,4lh,42h。5填充內(nèi)存命令f 格式:f功能:將單元內(nèi)容表中的值逐個(gè)填入指定范圍,單元內(nèi)容表中內(nèi)容用完后重復(fù)使用。例如:f 05bc:200 l 10 b2,xyz,3c該命令將由地址05bc:200開始的10h(1 6)個(gè)存儲(chǔ)單元順序填充“b2,58,59,5a,3c,b2,58,59,5a,3c,b2,58,59,5a,

21、3c,b26. 連續(xù)執(zhí)行命令g 格式: (1)g (2)g= (3)g=,其中(2)、(3)中的”=”是不可缺省的。功能:默認(rèn)程序從cs:ip開始執(zhí)行。程序從當(dāng)前的指定偏移地址開始執(zhí)行。從指定地址開始執(zhí)行,到斷點(diǎn)自動(dòng)停止并顯示當(dāng)前所有寄存器、狀態(tài)標(biāo)志位的內(nèi)容和下一條要執(zhí)行的指令。debug調(diào)試程序最多允許設(shè)置l0個(gè)斷點(diǎn)。7. 跟蹤命令t 格式:t【=】【】 功能:如果鍵入t命令后直接按“enter鍵,則默認(rèn)從cs:ip開始執(zhí)行程序,且每執(zhí)行一條指令后要停下來,顯示所有寄存器、狀態(tài)標(biāo)志位的內(nèi)容和下一條要執(zhí)行的指令。用戶也可以指定程序開始執(zhí)行的起始地址。的缺省值是一條,也可以由指定執(zhí)行若干條命令后

22、停下來。例如:t該命令執(zhí)行當(dāng)前指令并顯示所有寄存器、狀態(tài)標(biāo)志位的內(nèi)容和下一條要執(zhí)行的指令。又例如:t 10 該命令從當(dāng)前指令開始執(zhí)行10h條指令后停下來,所有寄存器、狀態(tài)標(biāo)志位的內(nèi)容和下一條要執(zhí)行的指令。8. 反匯編命令u 格式: (1)u (2)u功能:反匯編命令是將機(jī)器指令翻譯成符號(hào)形式的匯編語言指令。該命令將指定范圍內(nèi)的代碼以匯編語句形式顯示,同時(shí)顯示地址及代碼。注意,反匯編時(shí)一定確認(rèn)指令的起始地址后再作,否則將得不到正確結(jié)果。地址及范圍的缺省值是上次u指令后下一地址的值。這樣可以連續(xù)反匯編。9執(zhí)行過程命令p 格式:p功能:執(zhí)行一條指令或一個(gè)過程(子程序),然后顯示各寄存器的狀態(tài)。說明:

23、該命令主要用于調(diào)試程序。它與跟蹤命令t的作用類似,t命令是跟蹤一條或多條指令,而p命令是執(zhí)行一條指令(包括帶重復(fù)前綴的數(shù)據(jù)串操作指令)或一個(gè)完整的過程(子程序)。例如:設(shè)有如下指令序列 mov ah,02hint 21 h ;當(dāng)要執(zhí)行int 21 h這條指令時(shí),若用t命令進(jìn)行跟蹤,則進(jìn)入int 21 h程序(dos功能調(diào)用)后,需要數(shù)十次t命令才能返回當(dāng)前程序;若采用p命令進(jìn)行調(diào)試,則只執(zhí)行int 20h一條指令,執(zhí)行完立即返回,給調(diào)試者的感覺好象是執(zhí)行了一條普通指令一樣。因此,當(dāng)以后遇到call、int n指令或帶重復(fù)前綴的數(shù)據(jù)串操作指令時(shí),若不想觀察相應(yīng)過程的詳細(xì)執(zhí)行過程,就可以用p命令。

24、10定義待裝入文件命令n格式:n 【d:】【path】fllename exe】功能:n命令一般和l命令聯(lián)合使用,為l命令定義指定路徑的待裝入文件。11裝入文件命令l格式:l其中的缺省值為cs:100。邏輯扇區(qū)可由物理扇區(qū)號(hào)換算得到,以雙面雙密度盤為例:物理扇區(qū)是按0面0道1區(qū),0面0道2區(qū),0面0道9區(qū),0面l道l區(qū),0面39道9區(qū),l面0道l區(qū),l面39道9區(qū)排列。而邏輯扇區(qū)與物理扇區(qū)號(hào)的對(duì)應(yīng)關(guān)系為物理扇區(qū)0面0道l扇區(qū)至9扇區(qū),邏輯扇區(qū)號(hào)為08;物理扇區(qū)l面0道l扇區(qū)至9扇區(qū),邏輯扇區(qū)號(hào)為9l l h:物理扇區(qū)0面l道l扇區(qū)至9扇區(qū),邏輯扇區(qū)號(hào)為1 2-1 ah這樣每道先0面后l面一直排

25、下去。其中為0、l或2,0表示a盤,l表示b盤,2表示硬盤。功能:將指定的盤上,從起,共n個(gè)邏輯扇區(qū)上的所有字節(jié)順序讀入指定內(nèi)存地址的一片連續(xù)單元。當(dāng)l后的參數(shù)缺省時(shí),必須在l之前由n命令指定(或進(jìn)adebug時(shí)一并指出)所讀盤文件名。此時(shí)l執(zhí)行后將該文件裝入內(nèi)存。例如:_n example_l將當(dāng)前盤上的example文件裝入cs:100起始的一片內(nèi)存單元。12內(nèi)存單元搬家命令m 格式:m其中源及目標(biāo)地址若僅輸入偏移量,則隱含相對(duì)ds。功能:把中的內(nèi)容順序搬至起的一片連續(xù)單元。例如:m cs:100 110 600該命令把由cs:100起到cs:110止共17個(gè)字節(jié)搬至ds:600至ds:6

26、10的一片單元。13寫盤命令w 格式:w 功能:該命令是將內(nèi)存起始的一片單元內(nèi)容寫入指定扇區(qū)。只有w而沒有參數(shù)時(shí),與n命令配合使用使用戶完成寫盤操作。用戶可用n命令先定義被調(diào)試的文件,再將被調(diào)試文件的字節(jié)長(zhǎng)度值送bx、cx(bx寄存器存放字節(jié)長(zhǎng)度值的高位,cx寄存器存放字節(jié)長(zhǎng)度值的低位),最后用寫盤命令w將被調(diào)試文件存入磁盤。例如:欲將d1.com文件寫入磁盤,設(shè)文件長(zhǎng)度為40字節(jié),可進(jìn)行如下操作。 _n d1.com -r cx cx xxxx:0040 _r bx bx xxxx :0000 _w writing 00040 bytes1 4顯示命令r格式: (1)r (2)r 功能:顯示

27、當(dāng)前所有寄存器內(nèi)容、狀態(tài)標(biāo)志及將要執(zhí)行的下一指令的地址(即cs:ip)、機(jī)器指令代碼及匯編語句形式。其中對(duì)狀態(tài)標(biāo)志寄存器flag以狀態(tài)標(biāo)志位的形式顯示,詳見教材。15端口輸出命令。格式:o功能:將該由指定輸出。例如:o 2f 4f該命令將4fh從2fh口輸出.16搜索指定內(nèi)存命令s格式:s 功能:在指定范圍搜索表中內(nèi)容,找到后顯示表中元素所在地址例如:s 100 110 41屏幕顯示:04ba:0104 04ba:010d表示在l00hlloh之間的一片存儲(chǔ)單元中,104h和10dh兩個(gè)單元有41 h。又如:s cs:100 l 10 ab表示在當(dāng)前代碼段位移100h至11oh處搜索連續(xù)3個(gè)字

28、節(jié)內(nèi)容為41h、42h(分別對(duì)應(yīng)a、b的ascii碼)的單元。17十六進(jìn)制算術(shù)運(yùn)算指令h 格式:h 功能:求十六進(jìn)制數(shù)和的和與差并顯示結(jié)果。18端口輸入命令i格式:i功能:將從指定端口輸入的內(nèi)容顯示出來。19結(jié)束debug返回dos命令q格式:q 功能:返回dos提示符下。實(shí)驗(yàn)三 順序程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康? 掌握算術(shù)運(yùn)算指令的應(yīng)用方法。2 理解計(jì)算機(jī)中除法溢出的含義。3 掌握順序程序設(shè)計(jì)的方法。二、實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),masm匯編軟件及debug調(diào)試程序三、實(shí)驗(yàn)內(nèi)容1設(shè)w、x、y、z均為l 6位帶符號(hào)數(shù)。2要求完成計(jì)算表達(dá)式(w-(x*y+z-220)/x。3將表達(dá)式的商和余數(shù)存入數(shù)據(jù)區(qū)re

29、sult單元開始的區(qū)域中。四、編程思路 該題目要求掌握乘除法運(yùn)算中帶符號(hào)數(shù)和無符號(hào)數(shù)運(yùn)算的區(qū)別。為了實(shí)現(xiàn)指定功能,應(yīng)從以下幾個(gè)方面考慮: (1)帶符號(hào)數(shù)的乘除法運(yùn)算應(yīng)選用的指令。 (2)乘、除法運(yùn)算中操作數(shù)的長(zhǎng)度問題。 (3)帶符號(hào)數(shù)的擴(kuò)展問題。 五、參考程序清單 data segment w dw -304 x dw 1000 y dw -12 z dw 20 result dw 2 dup(?) data ends code segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,x imul y mov cx,a

30、x mov bx,dx mov ax,z cwd add cx,ax 、 adc bx,dx sub cx,220 sbb bx,0 mov ax,w cwd sub ax,cx sbb dx,bx idiv x mov result,ax mov result+2,dx mov ah,4ch int 21hcode endsend start六、思考題1)如果是無符號(hào)數(shù),乘除時(shí)應(yīng)如何選擇指令?2)如果要求表達(dá)式中的x,y,z,w從鍵盤輸入應(yīng)如何設(shè)計(jì)程序?實(shí)驗(yàn)四 分支結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?掌握多分支結(jié)構(gòu)程序設(shè)計(jì)的方法;2掌握無符數(shù)和帶符號(hào)數(shù)比較大小轉(zhuǎn)移指令的區(qū)別。二、實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),

31、masm匯編軟件及debug調(diào)試程序三、實(shí)驗(yàn)內(nèi)容1在數(shù)據(jù)區(qū)中定義三個(gè)帶符號(hào)字節(jié)變量。2編寫程序?qū)⑵渲械淖畲髷?shù)找出送到max單元中。四、編程思路該題目要求掌握多分支程序設(shè)計(jì)方法。為了實(shí)現(xiàn)指定功能,應(yīng)從以下幾個(gè)方面考慮:(1) 確定編程的算法思想。(2) 確定帶符號(hào)數(shù)比較大小轉(zhuǎn)移應(yīng)選擇哪一組條件轉(zhuǎn)移指令。五、參考程序清單data segment x db 115 y db 23 z db -20 max db ? data endscode segment assume ds:data,cs:codestart:mov ax,data mov ds,ax mov al,x cmp al,y jg

32、next mov al, y cmp al,z jg exit mov al,z jmp exitnext: cmp al,z jg exit mov al,zexit: mov max,al mov ah,4ch int 21h code endsend start ;返回dos六、思考題1)如果用子程序的方法來設(shè)計(jì)程序,應(yīng)如何修改此程序?2)如果是無符號(hào)數(shù)比較大小,條件轉(zhuǎn)移時(shí)應(yīng)選擇哪一組指令?實(shí)驗(yàn)五 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?1掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的方法;2掌握數(shù)據(jù)塊傳送程序設(shè)計(jì)的方法;3掌握串傳送指令的應(yīng)用。二、實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),masm匯編軟件及debug調(diào)試程序三、實(shí)驗(yàn)內(nèi)容1

33、 編寫程序?qū)崿F(xiàn)將數(shù)據(jù)段str1單元開始的20個(gè)字符移到str2開始的存儲(chǔ)區(qū)。2 假設(shè)str1+20str2,可以用串傳送指令,也可以用mov傳送指令。四、編程思路該題目要求掌握單循環(huán)程序設(shè)計(jì)方法。為了實(shí)現(xiàn)指定功能,應(yīng)從以下幾個(gè)方面考慮:(1)數(shù)據(jù)串操作的起始位置從高地址還是從低地址開始。(2)確定使用串傳送指令,還是用mov指令。(3)確定循環(huán)程序的結(jié)構(gòu)。五、參考程序清單data segment str1 db what is your name?,0ah,0dh,$ cn equ $-str1str2 equ str1+cn-5code segment assume ds:data,cs:c

34、ode,es:datastart: mov ax,data mov ds,ax mov es,ax mov dx,offset stri mov ah,09h int 21h mov si,offset str1mov di,offset str2mov cx,cnadd si,cn-1add di,cn-1stdrep movsbmov dx,offset str2mov ah,09hint 21hmov ah,4chint 21hcode ends end start六、思考題 1)如果要求字符串從鍵盤中輸入,應(yīng)如何設(shè)計(jì)程序?2)用子程序方法,且不使用movsb指令來完成數(shù)據(jù)塊的傳輸,應(yīng)如

35、何設(shè)計(jì)程序?實(shí)驗(yàn)六 子程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?. 掌握子程序的結(jié)構(gòu)和設(shè)計(jì)方法;2. 掌握子程序的調(diào)用和返回指令的用法及執(zhí)行情況;3. 掌握在子程序調(diào)用時(shí)堆棧的變化情況;4. 掌握主程序與子程序間參數(shù)傳遞的方法;5. 掌握現(xiàn)場(chǎng)的保護(hù)與恢復(fù)方法。二、實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),masm匯編軟件及debug調(diào)試程序三、實(shí)驗(yàn)內(nèi)容 已知當(dāng)前數(shù)據(jù)段中buf開始分別存放若干二進(jìn)制字節(jié)數(shù)據(jù),編制程序?qū)⑦@些數(shù)據(jù)分別轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)在屏幕上顯示出來,要求十六進(jìn)制轉(zhuǎn)換ascii碼用子程序?qū)崿F(xiàn)。四、編程思路該題目要求掌握單循環(huán)程序設(shè)計(jì)方法。為了實(shí)現(xiàn)指定功能,應(yīng)從以下幾個(gè)方面考慮:(1)主、子程序各自需實(shí)現(xiàn)的的功能。(2)主

36、、子程序間參數(shù)的傳遞方式。(3)確定子程序的結(jié)構(gòu)。五、實(shí)驗(yàn)源程序;conv.asmdata segmentbuf db 0abh,0cdh,0deh,01h,02h,03h db 3ah,4bh,5ch,6fhdata endscode segment assume cs:code, ds:datastart: mov ax, data mov ds, ax mov cx, 10 lea bx, bufagain: mov al, bx call hex2asc ;調(diào)用十六進(jìn)制轉(zhuǎn)換ascii碼子程序;*顯示ascii碼* push cx mov cx, dx mov dl, ch ;顯示高位

37、mov ah, 2 int 21h mov dl,cl ;顯示低位 mov ah, 2 int 21h mov dl, ;顯示空格 mov ah,2 int 21h pop cx inc bx loop again mov ah, 4ch ;返回dos int 21h;*十六進(jìn)制轉(zhuǎn)換ascii碼子程序*hex2asc proc near mov dh,al push cx mov cl,4 shr dh,cl cmp dh,9 jbe next1 add dh,7next1: add dh,30h mov dl,al and dl,0fh cmp dl,9 jbe next2 add dl,7

38、next2: add dl,30h pop cx rethex2asc endpcode ends end start上面主程序通過al寄存器將需要判斷字符的asc碼傳遞給子程序,而子程序?qū)⑴袛嘟Y(jié)果通過標(biāo)志寄存器的cf位傳遞給主程序。如果是數(shù)字字符,則cf=0,否則cf=1。實(shí)驗(yàn)七 emu8086集成開發(fā)環(huán)境一、實(shí)驗(yàn)?zāi)康模赫莆誩mu8086的使用方法。二、實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),emu8086程序三、實(shí)驗(yàn)內(nèi)容:從鍵盤輸入一行字符(以回車符結(jié)束),并按字母、數(shù)字及其字符分類計(jì)數(shù),最后顯示出這3個(gè)計(jì)數(shù)結(jié)果。要求在emu8086集成開發(fā)環(huán)境中進(jìn)行。四、編程思路 該題目要求掌握多分支、單循環(huán)程序設(shè)計(jì)方法

39、。為了實(shí)現(xiàn)指定功能,應(yīng)從以下幾個(gè)方面考慮:(1)數(shù)據(jù)是由鍵盤輸入產(chǎn)生的,為此應(yīng)調(diào)用鍵盤輸入中斷程序。(2)確定使用多分支判斷的設(shè)計(jì)。(3)確定循環(huán)程序的結(jié)構(gòu)。五、參考程序清單data segment buf db 50 dup(?) count1 db 0 count2 db 0 count3 db 0 data ends code segment assume ds:data,cs:code main proc far push ds mov ax,0 push ax lea bx,buf input:mov ah,1 int 21h mov bx,al inc bx cmp al,13 j

40、nz input lea bx,buf again: mov al,bx inc bx cmp al,13 jz ok cmp al,0 jb next2 cmp al,9 ja next1 inc count1 jmp again next1:cmp al,a jb next2 cmp al,z ja next2 inc count2 jmp again next2:inc count3 jmp again ok: ret main endp code ends end實(shí)驗(yàn)八 綜合程序設(shè)計(jì)與調(diào)試一、 實(shí)驗(yàn)?zāi)康模壕C合運(yùn)用分支、循環(huán)及子程序設(shè)計(jì),掌握綜合程序的設(shè)計(jì)方法與調(diào)試方式,提高綜合程序的設(shè)

41、計(jì)能力。二、 實(shí)驗(yàn)器材:計(jì)算機(jī)一臺(tái),emu8086程序三、 實(shí)驗(yàn)內(nèi)容:綜合設(shè)計(jì),實(shí)現(xiàn)從鍵盤接收一串不多于99個(gè)字符的字符串,對(duì)其進(jìn)行分類統(tǒng)計(jì),顯示其中數(shù)字字符個(gè)數(shù)、大寫英文字母?jìng)€(gè)數(shù)、小寫英文字母?jìng)€(gè)數(shù)、其它字符個(gè)數(shù)。四、編程思路 該題目要求掌握分支、循環(huán)及子程序設(shè)計(jì),掌握綜合程序的設(shè)計(jì)方法。為了實(shí)現(xiàn)指定功能,應(yīng)從以下幾個(gè)方面考慮:(1)數(shù)據(jù)是由鍵盤輸入產(chǎn)生的,為此應(yīng)調(diào)用鍵盤輸入中斷程序。(2)確定使用多分支判斷的設(shè)計(jì)。(3)確定循環(huán)程序的結(jié)構(gòu)。(4)確定子程序的結(jié)構(gòu)。五、參考程序清單data segmentmsg db 0dh,0ah,input a string of characters:$

42、msg1 db 0dh,0ah,capital letters number:$msg2 db 0dh,0ah,lowercase letters number:$msg3 db 0dh,0ah,digital number:$msg4 db 0dh,0ah,other number:$buf db 99 ;鍵盤接收緩沖區(qū) db 0 db 99 dup (?)big db 0little db 0dig db 0other db 0data endscode segment assume ds:data,cs:codestart: mov ax,data mov ds,ax mov dx,of

43、fset msg mov ah,9 int 21h lea dx,buf mov ah,10 int 21h mov cl,buf+1 xor ch,chjcxzdisp;未接收信息則顯示全0 lea si,buf+2again: cmp byte ptr si,30h jb others cmp byte ptr si,39h jbe digitals cmpbyte ptr si,41h jb others cmp byte ptr si,5ah jbe bigs cmp byte ptr si,61h jb others cmp byte ptr si,7ah jbe littlesot

44、hers: inc other jmp okdigitals:inc dig jmp oklittles:inc little jmp okbigs: inc bigok: inc si loop againdisp: lea dx,msg1 mov bh,big call dispdec lea dx,msg2 mov bh,little call dispdec lea dx,msg3 mov bh,dig call dispdec lea dx,msg4 mov bh,other call dispdec mov ah,4ch int 21h;入口參數(shù):dx為待顯示數(shù)據(jù)說明的首地址,bh

45、為待顯示的小于100的數(shù)據(jù)dispdec proc near mov ah,9 int 21h mov al,bh xor ah,ah aam mov dl,ah mov dh,al add dl,30h mov ah,2 int 21h mov dl,dh add dl,30h movah,2 int 21h retdispdec endpcode endsendstart附錄 debug用法大全啟動(dòng) debug,它是可用于測(cè)試和調(diào)試 ms-dos 可執(zhí)行文件的程序。debug drive:path filename parameters參數(shù)drive:path filename指定要測(cè)試的

46、可執(zhí)行文件的位置和名稱。arameters指定要測(cè)試的可執(zhí)行文件所需要的任何命令行信息。+說明使用 debug 命令但不指定要測(cè)試的文件如果使用沒有位置和文件名的 debug 命令,然后鍵入所有的 debug 命令以響應(yīng) debug 提示符,連字符 (-)。debug 命令以下是 debug 命令列表:? 顯示 debug 命令列表。a 匯編 8086/8087/8088 記憶碼。c 比較內(nèi)存的兩個(gè)部分。d 顯示部分內(nèi)存的內(nèi)容。e 從指定地址開始,將數(shù)據(jù)輸入到內(nèi)存。f 使用指定值填充一段內(nèi)存。g 運(yùn)行在內(nèi)存中的可執(zhí)行文件。h 執(zhí)行十六進(jìn)制運(yùn)算。i 顯示來自特定端口的 1 字節(jié)值。l 將文件或磁盤扇區(qū)內(nèi)容加載到內(nèi)存。m 復(fù)制內(nèi)存塊中的內(nèi)容/n 為 l 或 w 命令指定文件,或者指定正在測(cè)試的文件的參數(shù)。o 向輸出端口發(fā)送 1 個(gè)字節(jié)的值。 p 執(zhí)行循環(huán)、重復(fù)的字符串指令、軟件中斷或子例程。q 停止 debug 會(huì)話。r 顯示或改變一個(gè)或多個(gè)寄存器。 s 在部分內(nèi)存中搜索一個(gè)或多個(gè)字節(jié)值的模式。t 執(zhí)行一條指令,然后顯示所有寄存器的內(nèi)容、所有標(biāo)志的狀態(tài)和 debug 下一步要執(zhí)行的指令的解碼形式。u 反匯編字節(jié)并顯示相應(yīng)的原語句。w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論