匯編語言課程設(shè)計_第1頁
匯編語言課程設(shè)計_第2頁
匯編語言課程設(shè)計_第3頁
匯編語言課程設(shè)計_第4頁
匯編語言課程設(shè)計_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、用匯編語言編輯文件管理器1、課程設(shè)計目的了解微機基礎(chǔ)知識,尋址方式,80868088指令系統(tǒng),80x86、Pentium增強和擴展指令,程序設(shè)計方法,高級匯編技術(shù),系統(tǒng)功能調(diào)用和模塊化程序設(shè)計的技術(shù)以及上機操作方法。掌握匯編語言的中斷調(diào)用功能的應(yīng)用,可以用匯編語言調(diào)用各種中斷調(diào)用功能,并由此實現(xiàn)對硬件的控制等。掌握匯編語言程序格式、循環(huán)與分支程序設(shè)計、子程序設(shè)計、宏匯編。掌握模塊化程序設(shè)計。掌握屏幕輸出顯示的設(shè)計方法。培養(yǎng)動手能力。在我們的生活當中,經(jīng)常回用到各種各樣的文件,會對文件進行各種各樣的操作,當然WINDOWS XP包含的文件管理器能實現(xiàn)對文件進行各種操作。以前VB的課程設(shè)計,我曾經(jīng)

2、做過一個小型的文本管理器,對文件管理器的數(shù)據(jù)結(jié)構(gòu)比較熟悉,所以此次用匯編語言再次做一個文件管理器的小程序。設(shè)計的文件管理器,主要實現(xiàn)的功能有創(chuàng)建文件、讀文件、寫入文件、刪除文件、文件的重命名、移動文件和復制文件。2.設(shè)計方案論證2.1開發(fā)環(huán)境目前常用的匯編軟件有MASM.EXE和TASM.EXE,兩者功能相差不多,但是關(guān)鍵在庫上面TASM不是很方便,TASM無法處理大量的預定義。MASM是Microsoft公司推出的匯編編譯器,適合初學者使用。(1)硬件:IBM-PC及其系列機 (2)軟件:編緝程序:TE編緝程序 內(nèi)存1G 匯編程序:MASM.EXE 外存:120G硬盤 連接程序:LINK.E

3、XE CPU:奔騰4 調(diào)試程序:DEBUG.EXE用MASM來開發(fā)程序的步驟為: (1)用TE編輯源程序,輸入源程序清單。 (2)利用宏匯編程序MASM對源程序進行匯編。 (3)用連接程序LINK對匯編后生成的OBJ文件進行連接,生成EXE文件。 (4)用DEBUG分布執(zhí)行程序來檢查錯誤。 (5)在DOS下執(zhí)行EXE文件。2.2總體設(shè)計功能 (1)執(zhí)行EXE文件后,屏幕上出現(xiàn)了幾行提示字符,選擇要執(zhí)行的功能。 (2)選擇1后,執(zhí)行創(chuàng)建文件的功能,此時屏幕提示輸入文件的存儲路徑以及文件名和文件的擴展名,創(chuàng)建成功后,屏幕提示SUCCESS,回主菜單。 (3)選擇2后,屏幕提示輸入要讀的文件的文件名

4、以及其目錄,正確輸入后,屏幕出現(xiàn)讀文件的提示和文件的內(nèi)容,回到主菜單。 (4)選擇3后,屏幕提示先輸入要寫入文件的文件名及路徑,然后提示輸入要寫入文件的內(nèi)容,成功后返回主菜單。 (5)選擇4后,屏幕提示輸入要刪除的文件的路徑以及文件名,成功后屏幕提示文件已經(jīng)刪除,然后回到主菜單。 (6)選擇5后,屏幕提示輸入文件的路徑以及文件名,然后輸入文件的新名字以及擴展名,然后回到主菜單。 (7)選擇6后,屏幕提示輸入要移動文件的路徑以及文件名,然后輸入文件的目的地址的路徑以及文件名,然后回到主菜單。 (8)選擇7后,屏幕提示輸入要復制文件的路徑以及文件名,然后輸入文件的目的地址的路徑以及文件名,然后回到

5、主菜單。 (9)選擇8后,退出程序。2.3詳細設(shè)計功能2.3.1主程序功能 主程序功能是顯示功能菜單以及選擇程序的功能。通過對程序的運行,按步驟選擇功能序號,實現(xiàn)對功能的操作。設(shè)計中需要按步驟去操作程序,通過主程序的操作,實現(xiàn)子程序的功能。主程序功能流程圖如圖1。開始選擇程序功能18創(chuàng)建文件讀文件寫文件刪除文件文件重命名移動文件復制文件選擇功能17 退出否是圖1主程序功能流程圖2.3.2 CREATE子程序功能完成創(chuàng)建文件的操作,子程序DELETE完成的是刪除文件的操作。按照操作步驟,實現(xiàn)對文件的創(chuàng)建和刪除的功能,需要仔細的進行功能實現(xiàn)刪除和創(chuàng)建。下面是創(chuàng)建文件的流程圖,如圖2所示:開始顯示菜

6、單輸入文件名創(chuàng)建文件創(chuàng)建成功回主菜單失敗提示成功提示是否選擇1圖2子程序CREATE完成創(chuàng)建文件流程圖2.3.3 READ子程序功能完成讀文件的功能,子程序WRITE完成向文件中寫內(nèi)容的功能。通過子程序的操作實現(xiàn)對文件的閱讀,通過對文件的讀出,對文件進行閱讀。下面是WRITE的流程圖,如圖3所示:開始顯示菜單調(diào)用INSERT,輸入文件名字查找文件查找成功回主菜單寫入失敗取出原有字符是否調(diào)用CUOWU子程序?qū)懭胄伦址x擇3圖3子程序READ完成讀文件流程圖(4)子程序MOVE實現(xiàn)文件的移動功能,子程序COPY實現(xiàn)文件的復制功能,下面是COPY的流程圖,如圖4所示:開始顯示菜單調(diào)用INSERT,輸

7、入文件名字查找文件查找成功回主菜單復制失敗打開文件是否調(diào)用CUOWU子程序調(diào)用INSERT2子程序選擇7讀文件圖4子程序MOVE實現(xiàn)文件的移動流程圖3. 設(shè)計結(jié)果與分析3.1調(diào)試程序 用DEBUG命令來調(diào)試程序。DEBUG提供了豐富的命令,如單步執(zhí)行和設(shè)置斷點等,來跟蹤檢查程序。當程序全部執(zhí)行得不到正確結(jié)果時,可先執(zhí)行其中的一部分,檢查這一部分的執(zhí)行結(jié)果是否正確。如果這一部分的結(jié)果正確,則可以肯定這一部分沒有問題,接下去去調(diào)試另一部分;如果這部分結(jié)果不正確,則可肯定該部分有問題,就調(diào)試這部分。采用將一部分分成兩小部分的辦法繼續(xù)查找錯誤所在,直至將錯誤找到。1.設(shè)置斷點用DEBUG調(diào)試程序,用-

8、G命令來設(shè)置斷點,程序從0060運行到006F,讓AX=0600,如圖5所示:圖5斷點顯示結(jié)果第二個斷點,程序從0080-008F,讓AX=0A0A,如圖6所示:圖6斷點顯示結(jié)果3.2運行程序 運行EXE文件,出現(xiàn)如下界面,見圖7:圖7運行EXE文件圖建立一個名為11.TXT的文件,界面如圖8:圖8 11.EXE的運行界面向11.TXT文件中寫入內(nèi)容“congyunye”,界面如圖9:圖9運行結(jié)果重命名文件11.TXT為20.TXT,界面如圖10:圖10重命名結(jié)果圖復制文件20.TXT到E盤根目錄下,命名為30.TXT,界面如圖11:圖11運行結(jié)果圖 4.總結(jié)通過一周的課程設(shè)計,使我加深了對匯

9、編語言知識的掌握,能夠熟練的運用MASM軟件對程序進行匯編,連接,編譯和調(diào)試,以及設(shè)置斷點。對于分支結(jié)構(gòu),子程序的設(shè)計,多次循環(huán)語句的設(shè)置也有了一定的掌握。還掌握了一些子程序設(shè)計時常用的指令,如CALL,RET等。對于子程序的設(shè)計時的現(xiàn)場的保護和恢復,子程序的嵌套,參數(shù)間的傳遞都有了一定的了解。通過對文件的創(chuàng)建,讀文件,寫文件,和對文件的重命名,以及對文件的刪除和修改,完成一系列的操作。但是在運行的時候還是出現(xiàn)了一些問題,我不知道應(yīng)該從何入手,不知道什么情況下會出現(xiàn)斷點,然而在看過書以后,我知道了,先用U命令顯示代碼,然后再用G命令設(shè)置斷點,當出現(xiàn)INT的時候,就表示有斷點。 5.參考文獻1齊

10、志儒,高福祥.匯編語言程序設(shè)計M.第2版.沈陽:東北大學出版社, 2001.1:123-1672朱玉龍,任文嵐等.匯編語言程序設(shè)計M.北京:清華大學出版社, 2003.8: 246-278 3徐建民,王東等.匯編語言程序設(shè)計M.第2版.北京:電子工業(yè)出版社,2005.2:90-1234 王爽.匯編語言M.第2版.北京:清華大學出版社,2004.9:168-1785 劉兵,易逵,朱天清. 微型計算機通信與接口技術(shù)M. 北京: 中國水利水電出版社,2005.6:29-36 6.附錄DSEG SEGMENTWENJIANMING DB 20,?,20 DUP(?)FILE DB 20,?,20 DU

11、P(?) ;為改名新建文件BUF1 DW 128 DUP($) ;從文件取的字符 BUF2 DB 128,?,128 DUP(?) ;寫入文件的字符BUF3 DW 128 DUP(?)MENU1 DB 0DH,0AH,1.Create WENJIAN,0DH,0AHMENU2 DB 0DH,0AH,2.READ WENJIAN,0DH,0AHMENU3 DB 0DH,0AH,3.WRITE WENJIAN,0DH,0AHMENU4 DB 0DH,0AH,4.Delete WENJIAN,0DH,0AHMENU5 DB 0DH,0AH,5.CHANGE WENJIANMING,0DH,0AHME

12、NU6 DB 0DH,0AH,6.MOVE WENJIAN,0DH,0AHMENU7 DB 0DH,0AH,7.COPY WENJIAN,0DH,0AHMENU8 DB 0DH,0AH,8.EXIT,0DH,0AHMENU9 DB 0DH,0AH,ENTER THE NUMBER(1-8):$,0DH,0AH TISHI1 DB 0DH,0AH,INSERT WENJIANMING(*:*.txt):$,0DH,0AHTISHI2 DB 0DH,0AH,READ WENJIAN:,0DH,0AHTISHI3 DB 0DH,0AH,INSERT THE NEW WENJIANMING YOU W

13、ANT TO CHANGE(*:*.txt):$,0DH,0AHTISHI4 DB 0DH,0AH,OK!THE WENJIAN HAS BEEN DeleteD!$,0DH,0AHTISHI5 DB 0DH,0AH,INSERT TISHISAGE:$,0DH,0AHTISHI6 DB 0DH,0AH,INSERT THE TARGET PATH AND NAME(*:*.txt):$, 0DH,0AHTISHI7 DB 0DH,0AH,THE WENJIAN IS NOT EXIST!PLEASE Create IT FIRST!$,0DH,0AHTISHI9 DB 0DH,0AH,INS

14、ERT THE SOURCE WENJIANMING:(*:*.txt):$, 0DH,0AHTISHI8 DB 0DH,0AH,INSERT THE SOURCE PATH AND NAME:(*:*.txt): $,0DH,0AHERR DB 0DH,0AH,ERROR$OK DB 0DH,0AH,SUCCESS,0DH,0AH,$DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEG MOV DS,AXAGAIN:MOV AH,9 MOV DX,OFFSET MENU1 ;顯示菜單 INT 21H MOV AH,1 ;鍵

15、入字符 INT 21HK1: CMP AL,31H JNZ K2 CALL CREATE ;創(chuàng)建文件JMP AGAINK2: CMP AL,32H JNZ K3 CALL READ ;讀文件 JMP AGAINK3: CMP AL,33H JNZ K4 CALL WRITE ;寫文件JMP AGAINK4: CMP AL,34H JNZ K5 CALL DELETE ;刪除文件 JMP AGAINK5: CMP AL,35HJNZ K6 CALL CHANGE ;改文件名 JMP AGAINK6: CMP AL,36H JNZ K7 CALL MOVE ;移動文件 JMP AGAINK7: C

16、MP AL,37H JNZ K8 CALL COPY ;復制文件 JMP AGAINK8: CMP AL,38H JNZ AGAIN MOV AH,4CH INT 21HCREATE PROC NEAR ;建立文件子程序 MOV DX,OFFSET TISHI1 ;顯示提示MOV AH,9 INT 21H CALL INSERT ;調(diào)用輸入名字子程序 MOV DX,OFFSET WENJIANMING ;建立文件ADD DX,2 MOV AH,3CH MOV CX,0 INT 21H JC ERRTISHI ;是否成功 LEA DX,OK MOV AH,9 INT 21H JMP RE1ERR

17、TISHI:MOV DX,OFFSET ERR MOV AH,9 INT 21HRE1: RET CREATE ENDPREAD PROC NEAR ;讀文件子程序 LEA DX,TISHI9 ;設(shè)提示,先輸入欲操作的文件名 MOV AH,9 INT 21H CALL INSERT ;調(diào)用輸入名字子程序 MOV DX,OFFSET WENJIANMING ADD DX,2 MOV AH,3DH MOV AL,0 INT 21H JC FAULT ;轉(zhuǎn)到文件出錯信息MOV BX,AX LEA DX,BUF1 MOV CX,200 ;讀字符個數(shù)MOV AH,3FHINT 21H ;先讀文件 MOV

18、 AH,3EH INT 21H LEA DX,TISHI2 MOV AH,9 INT 21H LEA DX,BUF1 INT 21H ;顯示文件內(nèi)容 JMP RE2FAULT: CALL CUOWU ;調(diào)用出錯子程序RE2: RET READ ENDPWRITE PROC NEAR ;寫文件子程序 LEA DX,TISHI9 MOV AH,9 INT 21H CALL INSERT ;調(diào)用輸入名字子程序 MOV DX,OFFSET WENJIANMING ADD DX,2 MOV AH,3DH MOV AL,1 INT 21H ;打開文件 JC FAULT2 ;無此文件則跳轉(zhuǎn) MOV BX,A

19、X MOV DX,OFFSET TISHI5 MOV AH,9 INT 21HMOV DX,OFFSET BUF2 ;輸入字符MOV AH,0AH INT 21H LEA SI,BUF2 MOV AL,SI+1 MOV AH,0 ;先取出實際寫入字符數(shù) MOV DX,OFFSET BUF2 ADD DX,2 MOV CX,AX ;寫入的字符數(shù) MOV AH,40H INT 21H ;寫文件 MOV AH,3EH INT 21H MOV DX,OFFSET OK ;顯示成功信息 MOV AH,9 INT 21H JMP RE3FAULT2:CALL CUOWU ;調(diào)用出錯子程序RE3: RET

20、WRITE ENDPDELETE PROC NEAR ;刪除子程序 LEA DX,TISHI9 MOV AH,9 INT 21H CALL INSERT ;調(diào)用輸入名字子程序MOV DX,OFFSET WENJIANMING ;刪除文件 ADD DX,2 MOV AH,41HINT 21HJNC INFO CALL CUOWU ;失敗信息 JMP RE4 ;轉(zhuǎn)向RETINFO: MOV DX,OFFSET TISHI4 ;刪除成功提示信息 MOV AH,9 INT 21HRE4: RET DELETE ENDPCHANGE PROC NEAR ;改名子程序 LEA DX,TISHI9 MOV

21、AH,9 INT 21H CALL INSERT ;調(diào)用輸入名字子程序 MOV DX,OFFSET WENJIANMING ADD DX,2 MOV AH,3DH MOV AL,0 INT 21H ;打開文件 JC FAULT3 MOV BX,AX LEA DX,BUF3 MOV CX,100 MOV AH,3FH INT 21H ;先讀文件 MOV AH,3EH INT 21H MOV DX,OFFSET TISHI3 MOV AH,9INT 21H CALL INSERT2 ;調(diào)用輸入新文件子程序 MOV DX,OFFSET WENJIANMING ;刪除文件 ADD DX,2 MOV AH,41H INT 21HJMP RE5FAULT3:CALL CUOWU ;調(diào)用出錯子程序RE5: RETCHANGE ENDPMOVE PROC NEAR ;移動文件子程序LEA DX,TISHI8 MOV AH,9 INT 21H CALL INSERT ;調(diào)用輸入名字子程序 MOV DX,OFFSET WENJIANMING ADD DX,2 MOV AH,3DH MOV AL,0 INT 21H ;打開文件 JC FAULT4 MOV BX,AX LEA DX,BUF3 MOV CX,100 MOV AH,3FH INT

溫馨提示

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

評論

0/150

提交評論