




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、匯編語(yǔ)言課程設(shè)計(jì) 學(xué)院: 專(zhuān)業(yè): 姓名: 學(xué)號(hào): 匯編語(yǔ)言是計(jì)算機(jī)專(zhuān)業(yè)的一門(mén)重要的專(zhuān)業(yè)基礎(chǔ)課,主要介紹匯編語(yǔ)言程序設(shè)計(jì)的基本原理和方法。匯編語(yǔ)言是一門(mén)理論性和實(shí)踐性較強(qiáng)的課程,輔助課堂教學(xué)的實(shí)驗(yàn)有助于幫助學(xué)生理解匯編語(yǔ)言的基本原理,鍛煉學(xué)生的動(dòng)手能力,提高學(xué)生的綜合應(yīng)用知識(shí)的能力。目 錄1 利用DEBUG調(diào)試匯編語(yǔ)言程序段2 初級(jí)程序的編寫(xiě)與調(diào)試實(shí)驗(yàn)(一)3 初級(jí)程序的編寫(xiě)與調(diào)試實(shí)驗(yàn)(二).4 匯編語(yǔ)言程序上機(jī)過(guò)程5 分支程序?qū)嶒?yàn)6 循環(huán)程序?qū)嶒?yàn).1 利用DEBUG調(diào)試匯編語(yǔ)言程序段一課程目的1熟悉DEBUG有關(guān)命令的使用方法;2利用DEBUG掌握有關(guān)指令的功能;3利用DEBUG運(yùn)行簡(jiǎn)單的程序
2、段。二課程內(nèi)容1進(jìn)入和退出DEBUG程序;2學(xué)會(huì)DEBUG中的1)D命令(顯示內(nèi)存數(shù)據(jù)D 段地址:偏移地址)例1:-D1002)E命令(修改指定內(nèi)存)例1:-E100 41 42 43 44 48 47 46 45 -D 100,L08 結(jié)果:08F1:0100 41 42 43 44 48 47 46 45例2: -E 100: 08F1:0100 76 42 :42是操作員鍵入此命令是將原100號(hào)內(nèi)存內(nèi)容76修改為42,用D命令可察看。3)R命令(顯示當(dāng)前寄存器的內(nèi)容)4)T命令(設(shè)置陷井,單步執(zhí)行)5)A命令(將指令直接匯編成機(jī)器碼輸入到內(nèi)存中。)6)G命令等的使用(執(zhí)行A命中輸入的匯編
3、指令)3用DEBUG,驗(yàn)證乘法、除法、加法、減法、帶進(jìn)位加、帶借位減、堆棧操作指令、串操作指令的功能。三課程要求1仔細(xì)閱讀有關(guān)DEBUG命令的內(nèi)容,對(duì)有關(guān)命令,要求事先準(zhǔn)備好使用的例子;四環(huán)境PC微機(jī)DOS操作系統(tǒng)或 Windows 操作系統(tǒng)MASM.EXE,LINK.EXE,DEBUG.COM或宏匯編集成環(huán)境五方法步驟1在DOS提示符下,進(jìn)入DEBUG程序;2在DOS目錄下啟動(dòng)DEBUG;3詳細(xì)記錄每一步所用的命令,以及查看結(jié)果的方法和具體結(jié)果。R, D, E 命令:A, T 命令:進(jìn)入和退出DEBUG:六學(xué)習(xí)要求1如何啟動(dòng)和退出DEBUG程序;2整理每個(gè)DEBUG命令使用的方法,實(shí)際示例及
4、執(zhí)行結(jié)果。七思考題啟動(dòng)DEBUG后,要裝入某一個(gè).EXE文件,應(yīng)通過(guò)什么方法實(shí)現(xiàn)?答:用debug+文件名八小結(jié) 通過(guò)這個(gè)設(shè)計(jì)我懂得了DEBUG程序調(diào)試匯編程序的一些基本方法和指令。知道了DEBUG程序的一些功能。使我對(duì)匯編語(yǔ)言有了進(jìn)一步的理解。 2 初級(jí)程序的編寫(xiě)與調(diào)試(一)一課程目的1進(jìn)一步熟悉DEBUG命令;2掌握數(shù)據(jù)在內(nèi)存中的存放方式和內(nèi)存操作數(shù)的幾種尋址方式,段寄存器和物理地址計(jì)算; 3熟悉數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令、邏輯指令、數(shù)據(jù)串傳送程序和數(shù)據(jù)串傳送指令MOVS、STOS及重復(fù)前輟REP;4掌握簡(jiǎn)單的匯編語(yǔ)言程序編寫(xiě)與調(diào)試。二課程內(nèi)容1 內(nèi)存操作數(shù)及各種尋址方式使用;2 求累加和
5、程序;3 多字節(jié)加法程序;4 數(shù)據(jù)串搬家程序;5 段寄存器概念及字符串傳送指令練習(xí)。三課程要求1仔細(xì)閱讀有關(guān)DEBUG命令的內(nèi)容,對(duì)有關(guān)命令,要求事先準(zhǔn)備好使用的例子;2閱讀數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令、邏輯指令、數(shù)據(jù)串傳送程序和數(shù)據(jù)串傳送指令MOVS、STOS及重復(fù)前輟REP的內(nèi)容;3用DEBUG的有關(guān)命令調(diào)試本實(shí)驗(yàn)中的求累加和程序、多字節(jié)加法程序、數(shù)據(jù)串搬家程序段。四環(huán)境PC微機(jī);DOS操作系統(tǒng)或 Windows 操作系統(tǒng);MASM.EXE,LINK.EXE,DEBUG.COM或宏匯編集成環(huán)境。五方法步驟1內(nèi)存操作數(shù)及各種尋址方式使用MOVAX,1234 MOV1000,AXMOVBX,10
6、02MOVBYTE PTRBX,20MOVDL,39INCBXMOVBX,DLDECDLMOVSI,3MOVBX+SI,DLMOVBX+SI+1,DLMOVWORD PTRBX+SI+2,2846步驟: (1) 用A命令鍵入上述程序,并用T命令逐條運(yùn)行。(2) 每運(yùn)行一條有關(guān)內(nèi)存操作數(shù)的指令,要用D命令檢查并記錄有關(guān)內(nèi)存單元的內(nèi)容并注明是什么尋址方式。注意D命令顯示結(jié)果中右邊的ASCII字符及雙字節(jié)數(shù)存放法。立即尋址:寄存器間接尋址:寄存器相對(duì)尋址:2求累加和程序:程序:MOVBX,1000MOVCX,10SUBAX,AXLOP: ADDAL,BXADC AH,0INCBXJ:LOOPLOPI
7、NT3步驟:(1)用A命令將程序鍵入到100H開(kāi)始的內(nèi)存中,在鍵入時(shí)記下標(biāo)號(hào)LOP和J的實(shí)際地址,在鍵入LOOP指令時(shí)LOP用實(shí)際地址值代替;(2)用命令N AA 將此程序命名為文件AA(文件名可任取);(3)用R命令將BX:CX改為程序長(zhǎng)度值(即最后一條指令后面的地址減去開(kāi)始地址;(4)用命令W 100將此程序存到AA命名的磁盤(pán)文件中;(5)用命令Q退出DEBUG;(6)用命令DEBUG AA再次調(diào)入DEBUG和文件AA,可用U命令檢查調(diào)入程序;若調(diào)入DEBUG時(shí)忘了加AA文件名,可用N命令和L命令將文件調(diào)入;(7)用E命令在內(nèi)存地址1000H處鍵入16個(gè)數(shù)字;(8)用命令G=100 J(J
8、用實(shí)際地址代替),使程序運(yùn)行并停在斷點(diǎn)J上,檢查AX,BX的值是否符合你的預(yù)計(jì)值;(9)用T命令運(yùn)行一步,觀(guān)察程序方向(IP值)和CX值是否與你的估計(jì)一樣,若不一樣,檢查程序是否有錯(cuò);(10)重復(fù)G、J與T,再檢查AX是否正確;(11)用G命令使程序運(yùn)行到結(jié)束,檢查AX值是否正確。3多字節(jié)加法程序程序:MOVDI,1000MOVCX,8MOVSI,2000CLCLOP: MOVAL,SIADCDI,ALINCSIINCDILOOPLOPINT20步驟:(1) 用命令鍵入此程序(2) 用E命令在1000H開(kāi)始處鍵入一個(gè)8字節(jié)被加數(shù),在2000H開(kāi)始處鍵入一個(gè)8字節(jié)加數(shù),均為低字節(jié)在前面。4數(shù)據(jù)串
9、搬家程序(1)用A命令鍵入下列程序:MOVSI,1000MOVDI,1500MOVCX,0FHLOP:MOVAL,SIMOVDI,ALINCSIINCDILOOPLOPINT20(2)用A命令DB偽指令在1000H鍵入下列字符串:IBM_PC COMPUTER'(3)用G命令運(yùn)行此程序,并用D命令檢查目的地址處的字符與源串是否一致。5段寄存器概念及字符串傳送指令練習(xí)(1) 用A命令鍵入下列程序:MOVSI,0MOVDI,0MOVAX,1000MOVDS,AXMOVAX,1500MOVES,AXMOVCX,0FCLDREPMOVSBINT20(2) 用A命令DB偽指令在1000:0000
10、處鍵入字符串'IBM_PC COMPUTER',并用D命檢查之(3) 用D命令檢查0F00:1000處內(nèi)容,看是否一樣。為什么?相同,因?yàn)?000:0000和0F00:1000是同一個(gè)地址。(4) 用G命令運(yùn)行此程序,檢查目的地址1500:0000處內(nèi)容。并記下DS與ES值。(5) 修改此程序,使ES與DS為同一值,以減少一條指令,而源物理地址和目的物理地址(是多少?)仍和原來(lái)一樣。修改后程序:MOVSI,0 MOVDI,0MOVAX,1000MOVDS,AXMOVES,AXMOVCX,0FCLDREPMOVSBINT20六學(xué)習(xí)要求1各項(xiàng)實(shí)驗(yàn)記錄;2要求你修改的程序的清單(修改
11、后)和調(diào)試記錄;3自編程序原稿及調(diào)試后修正稿,寫(xiě)出原稿錯(cuò)在那里。七思考題1MOVBYTE PTRBX,20 MOVWORD PTRBX+SI+2,2846上述指令中BYTE PTR及WORD PTR偽操作不加行不行?試一試。答:不行2用G命令運(yùn)行多字節(jié)加法程序,并用D命令檢查其結(jié)果(存放在哪里?),是否正確?3將多字節(jié)加法程序中的INT 20H指令改為INT 3,有何區(qū)別?若這條指令不加,行不行?試一試。4數(shù)據(jù)串搬家程序中的目的地址改為1002H,再運(yùn)行此程序,看能不能把1000H開(kāi)始的字符串搬到1002H開(kāi)始的地方去?修改程序以做到這一點(diǎn)。 八. 小結(jié)此次設(shè)計(jì)使我對(duì)DEBUG的命令有了更深一
12、步的了解。知道如何編寫(xiě)程序,如何驗(yàn)證程序的對(duì)錯(cuò)。同時(shí)熟悉了匯編語(yǔ)言的一些指令。對(duì)匯編語(yǔ)言的一些簡(jiǎn)單程序的調(diào)試運(yùn)行有了初步的掌握。中間遇到了各種問(wèn)題,但最終都通過(guò)自己的努力解決了。 3 初級(jí)程序的編寫(xiě)與調(diào)試(二)一課程目的1掌握無(wú)條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令;2掌握利用DOS功能調(diào)用INT21H的2號(hào)和9號(hào)功能進(jìn)行屏幕顯示的方法;3掌握直接向視頻RAM送ASCII碼進(jìn)行屏幕顯示的方法;4掌握屏幕字符顯示程序編寫(xiě)與調(diào)試。二課程內(nèi)容1 字符、字符串的屏幕顯示;2 直接向VRAM送ASCII碼顯示字符;3 用字符搜索法確定字符串長(zhǎng)度;4 16進(jìn)制數(shù)化ASCII碼的一般方法(顯示內(nèi)存內(nèi)容)。三課程要求1
13、仔細(xì)閱讀有關(guān)無(wú)條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令的內(nèi)容;2 閱讀利用DOS功能調(diào)用INT21H的2號(hào)和9號(hào)功能進(jìn)行屏幕顯示的內(nèi)容;3閱讀實(shí)驗(yàn)指導(dǎo)書(shū)中的字符串屏幕顯示程序、字符屏幕顯示程序、直接向VRAM送ASCII碼顯示字符程序、用字符搜索法確定字符串長(zhǎng)度程序、16進(jìn)制數(shù)化ASCII碼的一般方法的程序段,調(diào)試上述程序。四環(huán)境PC微機(jī);DOS操作系統(tǒng)或 Windows 操作系統(tǒng);MASMEXE,LINKEXE,DEBUGCOM或宏匯編集成環(huán)境。五方法步驟1利用INT 21 0AH號(hào)功能調(diào)用顯示字符串。(1)用A命令在100H處鍵入下列程序:MOVAH, 9MOVDX,110INT21INT20(2)用A
14、命令在110H處鍵入下列字符串的ASCII碼:DB'This is a sample!$' (3)用N命令和W命令將此程序(包括數(shù)據(jù)區(qū))存入文件名為AAOM的磁盤(pán)文件中。(存入前BX:CX必須置為文件長(zhǎng)度值)。(4)用Q命令退出DEBUG。(5)在DOS命令下打AA,運(yùn)行此程序,即在屏幕上顯示'This is a sample!'字符串,若不出現(xiàn),用DEBUG檢查程序有無(wú)錯(cuò)誤。2利用INT 21H 2號(hào)功能顯示字符(1)用A命令在100H處鍵入下列程序:XORDL,DLMOV CX,100LOP: MOVAH,2INT21INCDLPUSH CXMOVCX,8D
15、ELY: PUSHCXMOVCX,0J: LOOP JPOPCXLOOP DELYPOPCXLOOP LOPINT20(2)用G命令運(yùn)行程序,即在屏幕上依次緩慢的顯示256個(gè)ASCII字符。仔細(xì)觀(guān)察每個(gè)字符,和IBM-PC ASCII碼表對(duì)照,看07H-0DH處控制字符顯示結(jié)果與表上有何不同?(3)按CTRL+BREAK退出此程序,若一次不行可多做幾次。3直接向VRAM送ASCII碼顯示字符(1)用A命令在100H處鍵入下列程序MOVAX,B000MOVDS,AXXORAL,ALXORBX,BXMOVCX,100LOP:MOVBX,ALINCBXINCALPUSHCXMOVCX,8DELY:P
16、USHCXMOVCX,0J: LOOPJPOPCXLOOPDELYPOPCXLOOPLOPINT20(2)用N命令和W命令將此程序存入BB.COM文件中。(一定要先存入!)(3)用G命令運(yùn)行此程序,仔細(xì)觀(guān)察每一個(gè)ASCII碼顯示結(jié)果,并和字符表及上一道程序運(yùn)行情況進(jìn)行對(duì)照,其控制字符區(qū)(07-0DH)顯示結(jié)果和INT 21H 2號(hào)功能調(diào)用有何不同?4用字符搜索法確定字符串長(zhǎng)度(1)用A命令在100H開(kāi)始的內(nèi)存處鍵入下列程序JMPSTARTDB'This is the program to measure'DB'the length of a string!$'S
17、TART: MOVBX,102MOVAL,24XORCL,CLLOP: CMPAL,BXJZEXITINCBXINCCLJMPLOPEXIT: INT3(2)用G命令運(yùn)行此程序,并檢查CL的統(tǒng)計(jì)長(zhǎng)度是否與你自己統(tǒng)計(jì)的實(shí)際長(zhǎng)度是否一樣? 答:一樣。5用字符搜索法確定字符串長(zhǎng)度 (1)用A命令在100H處鍵入下列程序:MOV SI,0MOV BL,10LOP: MOVDL,SIMOVCL,4SHRDL,CLCMPDL,0AJCJ1ADDDL,7J1: ADDDL,30MOVAH,2INT21MOVDL,SIANDDL,0FCMPDL,0AJCJ2ADDDL,7J2: ADDDL,30MOVAH,2
18、INT21MOVDL,20MOVAH,2INT21INCSIDECBLJNZLOPINT20(2)用N,W命令將此程序用CCCOM文件名存入磁盤(pán)。(3)用Q命令退出DEBUG。(4)在DOS命令狀態(tài)下直接運(yùn)行CCCOM命令文件,應(yīng)在屏幕上顯示出內(nèi)存從0000H開(kāi)始的16個(gè)字節(jié)的內(nèi)容,若有錯(cuò)誤,用DEBUG檢查之。六學(xué)習(xí)要求 1、各項(xiàng)實(shí)驗(yàn)記錄及觀(guān)察體會(huì)。2、自編程序草稿及調(diào)試結(jié)果。七思考題 利用INT 21H 顯示和直接向VRAM送ASCII碼顯示方法在顯示結(jié)果上有什么不同?答:1、INT 21H只能在當(dāng)前位置顯示默認(rèn)屬性(即顏色)的字符,在VRAM中可修改任何一個(gè)位置的字符和屬性。 2、INT
19、 21H更靠近用戶(hù),使用簡(jiǎn)單。修改VRAM更靠近硬件,需記住對(duì)應(yīng)于屏幕某位置的物理地址才能使用。八. 小結(jié) 本設(shè)計(jì)比較難,但了解了字符串轉(zhuǎn)移的基本方法。學(xué)會(huì)了條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移指令的使用。對(duì)匯編語(yǔ)言的指令有了進(jìn)一步的了解。但進(jìn)行屏幕顯示的沒(méi)有成功,說(shuō)明自己的能力有待提高。對(duì)DOS的顯示功能不熟練。4 匯編語(yǔ)言程序上機(jī)過(guò)程一課程目的熟練掌握匯編語(yǔ)言程序的編輯、調(diào)試和運(yùn)行的過(guò)程和方法。了解匯編語(yǔ)言程序的匯編、運(yùn)行環(huán)境。 二課程內(nèi)容1掌握常用的編輯工具軟件(如WORD、EDIT)、MASM和LINK的使用;2偽指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3利用的I
20、NT 21H的1號(hào)功能實(shí)現(xiàn)鍵盤(pán)輸入的方法;三課程要求1仔細(xì)閱讀有關(guān)偽指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的內(nèi)容;2了解利用的INT 21H的1號(hào)功能實(shí)現(xiàn)鍵盤(pán)輸入的方法,了解.EXE文件和.COM文件的區(qū)別及用INT 21H 4C號(hào)功能返回系統(tǒng)的方法;3閱讀下面程序段。四環(huán)境PC微機(jī)DOS操作系統(tǒng)或 Windows 操作系統(tǒng)MASM。EXE,LINK。EXE,DEBUG。COM或宏匯編集成環(huán)境五方法步驟程序:datasegmentmessagedb'This is a sample program of keyboard and disply'
21、db0dh,0ah,'Please strike the key!',0dh,0ah,'$'dataendsstacksegmentpara stack 'stack'db50 dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offset messagemovah,9int21h ;顯示'This is a sample program of keyboard and disply'again:movah,1
22、int21h ;等待鍵盤(pán)輸入,保存至ALcmpal,1bh ;1bh 字符ESC的ASCIIjeexitcmpal,61h ;61h字符a的ASCIIjc(jb)nd ;小于(CF=1有借位)轉(zhuǎn)向ND原樣顯示cmpal,7ah ;jand ;大于轉(zhuǎn)向ND原樣顯示andal,11011111b ;轉(zhuǎn)化為大寫(xiě)字母 sub al,20hnd:movdl,almovah,2int21hjmpagainexit:movah,4chint21hcodeendsendstart步驟:1用用文字編輯工具(記事本或EDIT)將源程序輸入,其擴(kuò)展名為ASM。2用MASM對(duì)源文件進(jìn)行匯編,產(chǎn)生OBJ文件和LST文件
23、。若匯編時(shí)提示有錯(cuò),用文字編輯工具修改源程序后重新匯編,直至通過(guò)。3用TYPE命令顯示1產(chǎn)生的LST文件。4用LINK將OBJ文件連接成可執(zhí)行的EXE文件。5在DOS狀態(tài)下運(yùn)行LINK產(chǎn)生的EXE文件。即在屏幕上顯示標(biāo)題并提示你按鍵。每按一鍵在屏幕上顯示二個(gè)相同的字符,但小寫(xiě)字母被改成大寫(xiě)。按ESC鍵可返回DOS。若未出現(xiàn)預(yù)期結(jié)果,用DEBUG檢查程序。六學(xué)習(xí)要求匯編,連接及調(diào)試時(shí)產(chǎn)生的錯(cuò)誤,其原因及解決辦法。七思考題1若在源程序中把INT 21H的'H'省去,會(huì)產(chǎn)生什么現(xiàn)象?答:無(wú)法顯示出字符。2把 INT 21H 4CH號(hào)功能改為 INT 20H,行不行?答:不行。八小結(jié)通
24、過(guò)此次設(shè)計(jì)了解匯編語(yǔ)言程序的匯編、運(yùn)行環(huán)境。 知道了匯編語(yǔ)言的調(diào)試、執(zhí)行的基本方法。但還不熟練,還沒(méi)有掌握。對(duì)軟件還不熟悉。.EXE文件的生成過(guò)程不順利。同時(shí),我也更深一步了解了匯編語(yǔ)言指令的設(shè)計(jì)、調(diào)試等。5 分支程序一課程目的1 掌握分支程序的設(shè)計(jì)方法;2 掌握利用DEBUG修改參數(shù)、檢查結(jié)果的方法;3 熟悉匯編語(yǔ)言源程序的編輯、匯編、連接及調(diào)試過(guò)程。二課程內(nèi)容1編寫(xiě)一個(gè)程序,顯示AL寄存器中的兩位十六進(jìn)制數(shù)2編寫(xiě)一個(gè)程序,判別鍵盤(pán)上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車(chē)字符<CR>(其ASCII碼為0DH),則結(jié)束程序,若為其它字符
25、則不顯示,繼續(xù)等待新的字符輸入。data segment DB 0data endscode segment assume cs:code,ds:datamain proc far push ds sub ax,ax push ax mov ax,datamov ds,axnext:mov ah,07int 21hcmp al,0dhjE end_dcmp al,'0'JGE DY0 ;>=0JMP NEXT ;<'0'.30HDY0:CMP AL,'9'JLE IS_09 CMP AL, 'A'JGE DY_A ;D
26、AYU AJMP NEXT ;<'A'.41HDY_A:CMP AL,'Z'JLE IS_AZCMP AL,'a'JGE DY_xA ;DAYU xAJMP NEXT ;<'a'.61HDY_xA:CMP AL,'z'JLE IS_AZJMP NEXT;.IS_AZ:MOV AH,02MOV DL,'c'INT 21HJMP NEXTIS_09:MOV AH,2MOV DL,ALINT 21HJMP NEXTend_d: retmain endp code ends end main 三
27、課程要求1編寫(xiě)實(shí)驗(yàn)內(nèi)容要求的兩個(gè)程序;2寫(xiě)出調(diào)試以上程序,即修改程序參數(shù),檢查結(jié)果的操作方法;3熟悉源程序匯編、連接命令的使用方法即要回答的內(nèi)容。四環(huán)境PC微機(jī)DOS操作系統(tǒng)或 Windows 操作系統(tǒng)MASM.EXE,LINK.EXE,DEBUG.COM或宏匯編集成環(huán)境五方法步驟1 用EDIT或其它編輯軟件,編寫(xiě).ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。2對(duì)其進(jìn)行匯編及連接,產(chǎn)生.EXE文件。3對(duì).EXE文件進(jìn)行調(diào)試運(yùn)行。(1)用DEBUG調(diào)試運(yùn)行,學(xué)會(huì)修改AL內(nèi)容的方法;(2)對(duì)DSPKEY.EXE鍵入不同的字符,分別進(jìn)行調(diào)試;(3)在MS-DOS下運(yùn)行這兩個(gè).EXE
28、文件。六學(xué)習(xí)要求1畫(huà)出兩個(gè)程序的流程圖,若要獨(dú)立編寫(xiě)程序,應(yīng)列出相應(yīng)的程序清單。2說(shuō)明本實(shí)驗(yàn)是如何利用DEBUG進(jìn)行調(diào)試的。七思考題 編寫(xiě)顯示AX中四位十六進(jìn)制數(shù)程序,畫(huà)出程序的流程圖。stack segment stack db 16 dup(0)stack ends data segment msg1 db 0ah,0dh,'Please Input Again!','$' msg2 db 0ah,0dh,'BCD Code:','$' msg3 db 'Please Input you data:',0ah,
29、0dh,'$'data endscode segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov dx,offset msg3 mov ah,09h int 21h mov ah,01h mov cx,4 input: mov ah,01h ;輸入字符 int 21h cmp al,30h jb reinput cmp al,39h ja zimu sub al,30h jmp ok zimu: and al,11011111b ;字母轉(zhuǎn)換 cmp al,41h jb reinput cm
30、p al,46h ja reinput sub al,37h ok: mov ah,0 ;將輸入的字符合成為4位十六進(jìn)制數(shù) push cx ;算法:左移4位,加上新輸入的數(shù) mov cl,4 shl bx,cl add bx,ax pop cx loop input mov ax,data mov ds,ax mov dx,offset msg2 ;輸出msg2 mov ah,09h int 21h bcd: mov ax,bx ;轉(zhuǎn)換為十進(jìn)制,并將各位入棧 mov bx,10 mov cx,0 s1: mov dx,0 div bx push dx inc cx cmp ax,0 ja s1
31、 mov bx,2 s2: pop ax ;各位出棧,轉(zhuǎn)換為二進(jìn)制 push cx mov cx,4 s2_0: mov dx,0 div bx push dx loop s2_0 mov cx,4 mov ah,02h s2_1: pop dx ;結(jié)果輸出 add dl,30h int 21h loop s2_1 mov dl,20h int 21h pop cx loop s2 jmp ok2 reinput: mov ax,data ;求重新輸入 mov ds,ax mov dx,0 mov ah,09h int 21h jmp start ok2: mov ax,4c00h int 2
32、1h code endsend start實(shí)驗(yàn)參考程序清單(1) 顯示AL中兩位十六進(jìn)制數(shù)程序:;DISPHEX.ASMCODE SEGMENT ASSUME CS:CODESTART:MOV AL,3EH MOV BL,AL MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 JBE NEXT1 ADD DL,7NEXT1:ADD DL,30H MOV AH,2 INT 21H ;顯示高位ASCII碼 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7NEXT2:
33、ADD DL,30H MOV AH,2 INT 21H ;顯示低位ASCII碼 MOV AH,4CH INT 21HCODE ENDS ;返回DOS END START(2) 顯示鍵入字符程序;DISPKEY.ASMCODE SEGEMENT ASSUME CS:CODESTART: MOV AH,1 INT 21H ;等待鍵入字符,送AL CMP AL,0DH ;是否是回車(chē)符? JZ DONE ;是則轉(zhuǎn)DONE退出程序 CMP AL,0 JB NEXT CMP AL,9 JA CHARUP MOV DL,AL MOV AH,2 IN
34、T 21H JMP STARTCHARUP:CMP AL,41H JB NEXT CMP AL,5AH JA CHRDNDISPC: MOV DL,C MOV AH,2 INT 21HNEXT: JMP STARTCHRDN:CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPCDONE: MOV AH,4CH INT 21HCODE: ENDS END START八. 小結(jié) 這次設(shè)計(jì)我學(xué)會(huì)了分支程序的設(shè)計(jì)。對(duì)匯編語(yǔ)言的編譯、鏈接、執(zhí)行有了進(jìn)一步的認(rèn)識(shí)。基本學(xué)會(huì)了匯編語(yǔ)言源程序的編輯、匯編、連接及調(diào)試的整個(gè)過(guò)程。同時(shí)也知道了DEBUG修改參數(shù)、檢查結(jié)果的
35、方法。6 循環(huán)程序一課程目的1掌握循環(huán)程序的設(shè)計(jì)方法;2學(xué)會(huì)針對(duì)不同的問(wèn)題,選用不同的組織循環(huán)的方法;3進(jìn)一步熟悉利用DEBUG程序修改參數(shù)的方法,并檢查和驗(yàn)證結(jié)果的正確性。二課程內(nèi)容1編寫(xiě)一個(gè)程序,顯示BX寄存器中的兩位十六進(jìn)制數(shù);2編寫(xiě)一個(gè)程序,判別鍵盤(pán)上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車(chē)字符<CR>(其ASCII碼為0DH),則結(jié)束程序,若為其它字符則不顯示,繼續(xù)等待新的字符輸入。data segmentDB 0data endscode segment assume cs:code,ds:datamain proc far
36、push ds sub ax,ax push ax mov ax,datamov ds,axnext:mov ah,07int 21hcmp al,0dhjE end_dcmp al,'0'JGE DY0 ;>=0JMP NEXT ;<'0'.30HDY0:CMP AL,'9'JLE IS_09 CMP AL, 'A'JGE DY_A ;DAYU AJMP NEXT ;<'A'.41HDY_A:CMP AL,'Z'JLE IS_AZCMP AL,'a'JGE DY_
37、xA ;DAYU xAJMP NEXT ;<'a'.61HDY_xA:CMP AL,'z'JLE IS_AZJMP NEXT;.IS_AZ:MOV AH,02MOV DL,'c'INT 21HJMP NEXTIS_09:MOV AH,2MOV DL,ALINT 21HJMP NEXTend_d: retmain endp code ends end main 三課程要求1編寫(xiě)實(shí)驗(yàn)內(nèi)容要求的兩個(gè)程序;2寫(xiě)出調(diào)試以上程序,即修改程序參數(shù),檢查結(jié)果的操作方法;3熟悉源程序匯編、連接命令的使用方法即要回答的內(nèi)容。四環(huán)境PC微機(jī)DOS操作系統(tǒng)或 Wi
38、ndows 操作系統(tǒng)MASM.EXE,LINK.EXE,DEBUG.COM或宏匯編集成環(huán)境五方法步驟1用EDIT或其它編輯軟件,編寫(xiě).ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;2對(duì)其進(jìn)行匯編及連接,產(chǎn)生.EXE文件;3對(duì).EXE文件進(jìn)行調(diào)試運(yùn)行。(1)用DEBUG調(diào)試運(yùn)行,學(xué)會(huì)修改AL內(nèi)容的方法;(2)對(duì)DSPKEY.EXE鍵入不同的字符,分別進(jìn)行調(diào)試;(3)在MS-DOS下運(yùn)行這兩個(gè).EXE文件。六學(xué)習(xí)要求畫(huà)出兩個(gè)程序的流程圖,若要獨(dú)立編寫(xiě)程序,應(yīng)列出相應(yīng)的程序清單。七思考題編寫(xiě)一循環(huán)程序,測(cè)量一字符串長(zhǎng)度,并用16進(jìn)制數(shù)顯示之。stack segment stack db 16 dup(0)stack ends data segment msg1 db 0ah,0dh,'Please Input Again!','$' msg2 db 0ah,0dh,'BCD Code:','$&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高鐵水景施工方案
- 2025年五氧化二磷行業(yè)分析:全球五氧化二磷市場(chǎng)規(guī)模增長(zhǎng)率將達(dá)5.8%
- 陜西省西安市西工大附中2024-2025學(xué)年高一(上)期中生物試(含解析)
- 北京市石景山區(qū)2024-2025學(xué)年高三(上)期末生物試卷
- 錢(qián)江大橋橋墩施工方案
- 2025年時(shí)代青春面試試題及答案
- 2025年煤礦安全規(guī)程試題及答案
- 公路干線(xiàn)物流自動(dòng)駕駛行業(yè)研究報(bào)告
- 2025年遇到好難的面試題及答案
- 低溫低濁水處理成功案例
- 全過(guò)程造價(jià)咨詢(xún)服務(wù)實(shí)施方案
- 實(shí)用參考從合規(guī)到績(jī)效:宋志平談央企學(xué)習(xí)型董事會(huì)建設(shè)
- GB/T 912-2008碳素結(jié)構(gòu)鋼和低合金結(jié)構(gòu)鋼熱軋薄鋼板和鋼帶
- GB/T 26480-2011閥門(mén)的檢驗(yàn)和試驗(yàn)
- 中共一大會(huì)址
- 云南省煙草買(mǎi)賣(mài)合同(標(biāo)準(zhǔn)版)
- 2023個(gè)人獨(dú)資企業(yè)清算報(bào)告(精選4篇)
- 衛(wèi)生統(tǒng)計(jì)學(xué)(全套課件)
- 2021年6月浙江省高考讀后續(xù)寫(xiě)課件-高考英語(yǔ)復(fù)習(xí)備考
- 小學(xué)古詩(shī)詞80首(硬筆書(shū)法田字格)
- 城市軌道交通供電技術(shù)442頁(yè)完整版教學(xué)課件匯總?cè)珪?shū)電子教案
評(píng)論
0/150
提交評(píng)論