




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上匯編語言課程設(shè)計(jì) 學(xué)院: 專業(yè): 姓名: 學(xué)號: 匯編語言是計(jì)算機(jī)專業(yè)的一門重要的專業(yè)基礎(chǔ)課,主要介紹匯編語言程序設(shè)計(jì)的基本原理和方法。匯編語言是一門理論性和實(shí)踐性較強(qiáng)的課程,輔助課堂教學(xué)的實(shí)驗(yàn)有助于幫助學(xué)生理解匯編語言的基本原理,鍛煉學(xué)生的動手能力,提高學(xué)生的綜合應(yīng)用知識的能力。目 錄1 利用DEBUG調(diào)試匯編語言程序段3 初級程序的編寫與調(diào)試實(shí)驗(yàn)(二).5 分支程序?qū)嶒?yàn)6 循環(huán)程序?qū)嶒?yàn).1 利用DEBUG調(diào)試匯編語言程序段一課程目的1熟悉DEBUG有關(guān)命令的使用方法;2利用DEBUG掌握有關(guān)指令的功能;3利用DEBUG運(yùn)行簡單的程序段。二課程內(nèi)容1進(jìn)入和退出DEB
2、UG程序;2學(xué)會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號內(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用DEBUG,驗(yàn)證乘法、
3、除法、加法、減法、帶進(jìn)位加、帶借位減、堆棧操作指令、串操作指令的功能。三課程要求1仔細(xì)閱讀有關(guān)DEBUG命令的內(nèi)容,對有關(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目錄下啟動DEBUG;3詳細(xì)記錄每一步所用的命令,以及查看結(jié)果的方法和具體結(jié)果。R, D, E 命令:A, T 命令:進(jìn)入和退出DEBUG:六學(xué)習(xí)要求1如何啟動和退出DEBUG程序;2整理每個DEBUG命令使用的方法,實(shí)際示例及執(zhí)行結(jié)果。七思考題啟動DEBUG
4、后,要裝入某一個.EXE文件,應(yīng)通過什么方法實(shí)現(xiàn)?答:用debug+文件名八小結(jié) 通過這個設(shè)計(jì)我懂得了DEBUG程序調(diào)試匯編程序的一些基本方法和指令。知道了DEBUG程序的一些功能。使我對匯編語言有了進(jìn)一步的理解。 2 初級程序的編寫與調(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掌握簡單的匯編語言程序編寫與調(diào)試。二課程內(nèi)容1 內(nèi)存操作數(shù)及各種尋址方式使用;2 求累加和程序;3 多字節(jié)加法程序;4 數(shù)
5、據(jù)串搬家程序;5 段寄存器概念及字符串傳送指令練習(xí)。三課程要求1仔細(xì)閱讀有關(guān)DEBUG命令的內(nèi)容,對有關(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,1002MOVBYTE PTRBX,
6、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ù)存放法。立即尋址:寄存器間接尋址:寄存器相對尋址:2求累加和程序:程序:MOVBX,1000MOVCX,10SUBAX,AXLOP: ADDAL,BXADC AH,0INCBXJ:LOOPLOPINT3步驟:(1)用A命令將程序
7、鍵入到100H開始的內(nèi)存中,在鍵入時記下標(biāo)號LOP和J的實(shí)際地址,在鍵入LOOP指令時LOP用實(shí)際地址值代替;(2)用命令N AA 將此程序命名為文件AA(文件名可任取);(3)用R命令將BX:CX改為程序長度值(即最后一條指令后面的地址減去開始地址;(4)用命令W 100將此程序存到AA命名的磁盤文件中;(5)用命令Q退出DEBUG;(6)用命令DEBUG AA再次調(diào)入DEBUG和文件AA,可用U命令檢查調(diào)入程序;若調(diào)入DEBUG時忘了加AA文件名,可用N命令和L命令將文件調(diào)入;(7)用E命令在內(nèi)存地址1000H處鍵入16個數(shù)字;(8)用命令G=100 J(J用實(shí)際地址代替),使程序運(yùn)行并停
8、在斷點(diǎn)J上,檢查AX,BX的值是否符合你的預(yù)計(jì)值;(9)用T命令運(yùn)行一步,觀察程序方向(IP值)和CX值是否與你的估計(jì)一樣,若不一樣,檢查程序是否有錯;(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開始處鍵入一個8字節(jié)被加數(shù),在2000H開始處鍵入一個8字節(jié)加數(shù),均為低字節(jié)在前面。4數(shù)據(jù)串搬家程序(1)用A命令鍵入下列程
9、序: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處鍵入字符串'IBM_P
10、C COMPUTER',并用D命檢查之(3) 用D命令檢查0F00:1000處內(nèi)容,看是否一樣。為什么?相同,因?yàn)?000:0000和0F00:1000是同一個地址。(4) 用G命令運(yùn)行此程序,檢查目的地址1500:0000處內(nèi)容。并記下DS與ES值。(5) 修改此程序,使ES與DS為同一值,以減少一條指令,而源物理地址和目的物理地址(是多少?)仍和原來一樣。修改后程序:MOVSI,0 MOVDI,0MOVAX,1000MOVDS,AXMOVES,AXMOVCX,0FCLDREPMOVSBINT20六學(xué)習(xí)要求1各項(xiàng)實(shí)驗(yàn)記錄;2要求你修改的程序的清單(修改后)和調(diào)試記錄;3自編程序原稿及
11、調(diào)試后修正稿,寫出原稿錯在那里。七思考題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開始的字符串搬到1002H開始的地方去?修改程序以做到這一點(diǎn)。 八. 小結(jié)此次設(shè)計(jì)使我對DEBUG的命令有了更深一步的了解。知道如何編寫程序,如何
12、驗(yàn)證程序的對錯。同時熟悉了匯編語言的一些指令。對匯編語言的一些簡單程序的調(diào)試運(yùn)行有了初步的掌握。中間遇到了各種問題,但最終都通過自己的努力解決了。 3 初級程序的編寫與調(diào)試(二)一課程目的1掌握無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令;2掌握利用DOS功能調(diào)用INT21H的2號和9號功能進(jìn)行屏幕顯示的方法;3掌握直接向視頻RAM送ASCII碼進(jìn)行屏幕顯示的方法;4掌握屏幕字符顯示程序編寫與調(diào)試。二課程內(nèi)容1 字符、字符串的屏幕顯示;2 直接向VRAM送ASCII碼顯示字符;3 用字符搜索法確定字符串長度;4 16進(jìn)制數(shù)化ASCII碼的一般方法(顯示內(nèi)存內(nèi)容)。三課程要求1 仔細(xì)閱讀有關(guān)無條件轉(zhuǎn)移指令、條件
13、轉(zhuǎn)移指令的內(nèi)容;2 閱讀利用DOS功能調(diào)用INT21H的2號和9號功能進(jìn)行屏幕顯示的內(nèi)容;3閱讀實(shí)驗(yàn)指導(dǎo)書中的字符串屏幕顯示程序、字符屏幕顯示程序、直接向VRAM送ASCII碼顯示字符程序、用字符搜索法確定字符串長度程序、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號功能調(diào)用顯示字符串。(1)用A命令在100H處鍵入下列程序:MOVAH, 9MOVDX,110INT21INT20(2)用A命令在110H處鍵入下列字符串的
14、ASCII碼:DB'This is a sample!$' (3)用N命令和W命令將此程序(包括數(shù)據(jù)區(qū))存入文件名為AAOM的磁盤文件中。(存入前BX:CX必須置為文件長度值)。(4)用Q命令退出DEBUG。(5)在DOS命令下打AA,運(yùn)行此程序,即在屏幕上顯示'This is a sample!'字符串,若不出現(xiàn),用DEBUG檢查程序有無錯誤。2利用INT 21H 2號功能顯示字符(1)用A命令在100H處鍵入下列程序:XORDL,DLMOV CX,100LOP: MOVAH,2INT21INCDLPUSH CXMOVCX,8DELY: PUSHCXMOVCX
15、,0J: LOOP JPOPCXLOOP DELYPOPCXLOOP LOPINT20(2)用G命令運(yùn)行程序,即在屏幕上依次緩慢的顯示256個ASCII字符。仔細(xì)觀察每個字符,和IBM-PC ASCII碼表對照,看07H-0DH處控制字符顯示結(jié)果與表上有何不同?(3)按CTRL+BREAK退出此程序,若一次不行可多做幾次。3直接向VRAM送ASCII碼顯示字符(1)用A命令在100H處鍵入下列程序MOVAX,B000MOVDS,AXXORAL,ALXORBX,BXMOVCX,100LOP:MOVBX,ALINCBXINCALPUSHCXMOVCX,8DELY:PUSHCXMOVCX,0J: L
16、OOPJPOPCXLOOPDELYPOPCXLOOPLOPINT20(2)用N命令和W命令將此程序存入BB.COM文件中。(一定要先存入!)(3)用G命令運(yùn)行此程序,仔細(xì)觀察每一個ASCII碼顯示結(jié)果,并和字符表及上一道程序運(yùn)行情況進(jìn)行對照,其控制字符區(qū)(07-0DH)顯示結(jié)果和INT 21H 2號功能調(diào)用有何不同?4用字符搜索法確定字符串長度(1)用A命令在100H開始的內(nèi)存處鍵入下列程序JMPSTARTDB'This is the program to measure'DB'the length of a string!$'START: MOVBX,102M
17、OVAL,24XORCL,CLLOP: CMPAL,BXJZEXITINCBXINCCLJMPLOPEXIT: INT3(2)用G命令運(yùn)行此程序,并檢查CL的統(tǒng)計(jì)長度是否與你自己統(tǒng)計(jì)的實(shí)際長度是否一樣? 答:一樣。5用字符搜索法確定字符串長度 (1)用A命令在100H處鍵入下列程序:MOV SI,0MOV BL,10LOP: MOVDL,SIMOVCL,4SHRDL,CLCMPDL,0AJCJ1ADDDL,7J1: ADDDL,30MOVAH,2INT21MOVDL,SIANDDL,0FCMPDL,0AJCJ2ADDDL,7J2: ADDDL,30MOVAH,2INT21MOVDL,20MOV
18、AH,2INT21INCSIDECBLJNZLOPINT20(2)用N,W命令將此程序用CCCOM文件名存入磁盤。(3)用Q命令退出DEBUG。(4)在DOS命令狀態(tài)下直接運(yùn)行CCCOM命令文件,應(yīng)在屏幕上顯示出內(nèi)存從0000H開始的16個字節(jié)的內(nèi)容,若有錯誤,用DEBUG檢查之。六學(xué)習(xí)要求 1、各項(xiàng)實(shí)驗(yàn)記錄及觀察體會。2、自編程序草稿及調(diào)試結(jié)果。七思考題 利用INT 21H 顯示和直接向VRAM送ASCII碼顯示方法在顯示結(jié)果上有什么不同?答:1、INT 21H只能在當(dāng)前位置顯示默認(rèn)屬性(即顏色)的字符,在VRAM中可修改任何一個位置的字符和屬性。 2、INT 21H更靠近用戶,使用簡單。修
19、改VRAM更靠近硬件,需記住對應(yīng)于屏幕某位置的物理地址才能使用。八. 小結(jié) 本設(shè)計(jì)比較難,但了解了字符串轉(zhuǎn)移的基本方法。學(xué)會了條件轉(zhuǎn)移、無條件轉(zhuǎn)移指令的使用。對匯編語言的指令有了進(jìn)一步的了解。但進(jìn)行屏幕顯示的沒有成功,說明自己的能力有待提高。對DOS的顯示功能不熟練。4 匯編語言程序上機(jī)過程一課程目的熟練掌握匯編語言程序的編輯、調(diào)試和運(yùn)行的過程和方法。了解匯編語言程序的匯編、運(yùn)行環(huán)境。 二課程內(nèi)容1掌握常用的編輯工具軟件(如WORD、EDIT)、MASM和LINK的使用;2偽指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3利用的INT 21H的1號功能實(shí)現(xiàn)鍵盤輸
20、入的方法;三課程要求1仔細(xì)閱讀有關(guān)偽指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的內(nèi)容;2了解利用的INT 21H的1號功能實(shí)現(xiàn)鍵盤輸入的方法,了解.EXE文件和.COM文件的區(qū)別及用INT 21H 4C號功能返回系統(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'db0dh,0ah,'P
21、lease 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,1int21h ;等待鍵盤輸入,保
22、存至ALcmpal,1bh ;1bh 字符ESC的ASCIIjeexitcmpal,61h ;61h字符a的ASCIIjc(jb)nd ;小于(CF=1有借位)轉(zhuǎn)向ND原樣顯示cmpal,7ah ;jand ;大于轉(zhuǎn)向ND原樣顯示andal,b ;轉(zhuǎn)化為大寫字母 sub al,20hnd:movdl,almovah,2int21hjmpagainexit:movah,4chint21hcodeendsendstart步驟:1用用文字編輯工具(記事本或EDIT)將源程序輸入,其擴(kuò)展名為ASM。2用MASM對源文件進(jìn)行匯編,產(chǎn)生OBJ文件和LST文件。若匯編時提示有錯,用文字編輯工具修改源程序后重
23、新匯編,直至通過。3用TYPE命令顯示1產(chǎn)生的LST文件。4用LINK將OBJ文件連接成可執(zhí)行的EXE文件。5在DOS狀態(tài)下運(yùn)行LINK產(chǎn)生的EXE文件。即在屏幕上顯示標(biāo)題并提示你按鍵。每按一鍵在屏幕上顯示二個相同的字符,但小寫字母被改成大寫。按ESC鍵可返回DOS。若未出現(xiàn)預(yù)期結(jié)果,用DEBUG檢查程序。六學(xué)習(xí)要求匯編,連接及調(diào)試時產(chǎn)生的錯誤,其原因及解決辦法。七思考題1若在源程序中把INT 21H的'H'省去,會產(chǎn)生什么現(xiàn)象?答:無法顯示出字符。2把 INT 21H 4CH號功能改為 INT 20H,行不行?答:不行。八小結(jié)通過此次設(shè)計(jì)了解匯編語言程序的匯編、運(yùn)行環(huán)境。 知
24、道了匯編語言的調(diào)試、執(zhí)行的基本方法。但還不熟練,還沒有掌握。對軟件還不熟悉。.EXE文件的生成過程不順利。同時,我也更深一步了解了匯編語言指令的設(shè)計(jì)、調(diào)試等。5 分支程序一課程目的1 掌握分支程序的設(shè)計(jì)方法;2 掌握利用DEBUG修改參數(shù)、檢查結(jié)果的方法;3 熟悉匯編語言源程序的編輯、匯編、連接及調(diào)試過程。二課程內(nèi)容1編寫一個程序,顯示AL寄存器中的兩位十六進(jìn)制數(shù)2編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結(jié)束程序,若為其它字符則不顯示,繼續(xù)等待新的字符輸入。data seg
25、ment 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 ;DAYU AJMP NEXT ;<'
26、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 三課程要求1編寫實(shí)驗(yàn)內(nèi)容要求的兩個程序;2寫出調(diào)試
27、以上程序,即修改程序參數(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或其它編輯軟件,編寫.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。2對其進(jìn)行匯編及連接,產(chǎn)生.EXE文件。3對.EXE文件進(jìn)行調(diào)試運(yùn)行。(1)用DEBUG調(diào)試運(yùn)行,學(xué)會修改AL內(nèi)容的方法;(2)對DSPKEY.EXE鍵入不同的字符,分別進(jìn)行調(diào)試;(3)在MS-DOS下運(yùn)行這兩個.EXE文件。六學(xué)習(xí)要求1畫出兩個程序的流程圖,若要獨(dú)立
28、編寫程序,應(yīng)列出相應(yīng)的程序清單。2說明本實(shí)驗(yàn)是如何利用DEBUG進(jìn)行調(diào)試的。七思考題 編寫顯示AX中四位十六進(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:','$' msg3 db 'Please Input you data:',0ah,0dh,'$'data ends
29、code 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,b ;字母轉(zhuǎn)換 cmp al,41h jb reinput cmp al,46h ja reinput sub al,37h o
30、k: 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 mov bx,2 s2: pop ax ;各位出棧,轉(zhuǎn)換為二進(jìn)
31、制 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 21h code endsend start實(shí)驗(yàn)參考程序清單(1)
32、 顯示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:ADD DL,30H MOV AH,2 INT 21H ;顯示低
33、位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 ;是否是回車符? JZ DONE ;是則轉(zhuǎn)DONE退出程序 CMP AL,0 JB NEXT CMP AL,9 JA CHARUP MOV DL,AL MOV AH,2 INT 21H JMP STARTCHARUP:CMP AL,41H
34、 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é)會了分支程序的設(shè)計(jì)。對匯編語言的編譯、鏈接、執(zhí)行有了進(jìn)一步的認(rèn)識?;緦W(xué)會了匯編語言源程序的編輯、匯編、連接及調(diào)試的整個過程。同時也知道了DEBUG修改參數(shù)、檢查結(jié)果的方法。6 循環(huán)程序一課程目的1掌握循環(huán)程序的設(shè)計(jì)方法;2學(xué)會針對
35、不同的問題,選用不同的組織循環(huán)的方法;3進(jìn)一步熟悉利用DEBUG程序修改參數(shù)的方法,并檢查和驗(yàn)證結(jié)果的正確性。二課程內(nèi)容1編寫一個程序,顯示BX寄存器中的兩位十六進(jìn)制數(shù);2編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結(jié)束程序,若為其它字符則不顯示,繼續(xù)等待新的字符輸入。data segmentDB 0data endscode segment assume cs:code,ds:datamain proc far push ds sub ax,ax push ax mov ax
36、,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_xA ;DAYU xAJMP NEXT ;<'a&
37、#39;.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編寫實(shí)驗(yàn)內(nèi)容要求的兩個程序;2寫出調(diào)試以上程序,即修改程序參數(shù),檢查結(jié)果的操作方法;3熟悉源程序匯編、連接命令的使用方法即要回答的內(nèi)容。四環(huán)境PC微機(jī)DOS操作系統(tǒng)或 Windows 操作系統(tǒng)MASM.EXE,LINK.EXE,DEBU
38、G.COM或宏匯編集成環(huán)境五方法步驟1用EDIT或其它編輯軟件,編寫.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;2對其進(jìn)行匯編及連接,產(chǎn)生.EXE文件;3對.EXE文件進(jìn)行調(diào)試運(yùn)行。(1)用DEBUG調(diào)試運(yùn)行,學(xué)會修改AL內(nèi)容的方法;(2)對DSPKEY.EXE鍵入不同的字符,分別進(jìn)行調(diào)試;(3)在MS-DOS下運(yùn)行這兩個.EXE文件。六學(xué)習(xí)要求畫出兩個程序的流程圖,若要獨(dú)立編寫程序,應(yīng)列出相應(yīng)的程序清單。七思考題編寫一循環(huán)程序,測量一字符串長度,并用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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利使用許可合同范本
- 外賣承運(yùn)合同范本
- ppp總包合同范本
- 買賣鮑魚合同范本
- 出售工程潔具合同范本
- 人才引進(jìn)股權(quán)激勵合同范本
- 分期合同與框架合同范本
- ppp合同范本 政府
- 鄉(xiāng)鎮(zhèn)建設(shè)用地合同范本
- 出軌賠償合同范本
- 模具轉(zhuǎn)移合同協(xié)議書
- DeepSeek學(xué)習(xí)科普專題
- 2025春季學(xué)期少先隊(duì)工作安排表
- 學(xué)校2025年春季學(xué)期學(xué)校安全工作計(jì)劃+行事歷
- 廣西壯族自治區(qū)柳州市2025年中考物理模擬考試卷三套附答案
- 2024中國糖果、巧克力制造市場前景及投資研究報(bào)告
- 第11課《山地回憶》說課稿 2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 羅森運(yùn)營部經(jīng)營管理手冊
- 2023年H3CNE題庫附答案
- 2024年首都醫(yī)科大學(xué)附屬北京安定醫(yī)院招聘筆試真題
- 老舊小區(qū)改造項(xiàng)目施工組織設(shè)計(jì)方案
評論
0/150
提交評論