微機(jī)課程設(shè)計磁盤無符號字節(jié)數(shù)據(jù)文件操作_第1頁
微機(jī)課程設(shè)計磁盤無符號字節(jié)數(shù)據(jù)文件操作_第2頁
微機(jī)課程設(shè)計磁盤無符號字節(jié)數(shù)據(jù)文件操作_第3頁
微機(jī)課程設(shè)計磁盤無符號字節(jié)數(shù)據(jù)文件操作_第4頁
微機(jī)課程設(shè)計磁盤無符號字節(jié)數(shù)據(jù)文件操作_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 微機(jī)原理及應(yīng)用課程設(shè)計 學(xué)院: 信息電子學(xué)院 班級:08電子信息工程(3)班 學(xué)號: e08610308 姓名: 陳建能 指導(dǎo)老師: 張國萍/鮑佳 日期: 2011/01/14 微機(jī)原理課程設(shè)計任務(wù)書一、設(shè)計題目 磁盤無符號字節(jié)數(shù)據(jù)文件(小于64kb)操作二、總則1、在19周完成并提交設(shè)計,通過演示和非抄襲確認(rèn)后所取得的成績?yōu)橛行С煽儭?、設(shè)計過程中嚴(yán)禁抄襲,否則將根據(jù)情節(jié)扣減成績直至取消成績。3、設(shè)計調(diào)試在eda實(shí)驗(yàn)室(408)進(jìn)行,時間為19周周一至周五。三、設(shè)計內(nèi)容及要求設(shè)計匯編語言程序,實(shí)現(xiàn)對數(shù)據(jù)文件的操作,具體要求如下:1、通過鍵盤輸入被操作的文件名,然后完成數(shù)據(jù)文件的排序(從大到

2、?。ㄟ^鍵盤輸入排序后的新文件名,并顯示文件的長度(字節(jié)數(shù))、最大值和最小值。2、通過鍵盤輸入要搜索的關(guān)鍵字,對新文件進(jìn)行搜索,并顯示搜索結(jié)果。3、根據(jù)需要可對搜索到的關(guān)鍵字進(jìn)行修改。四、設(shè)計報告要求1、設(shè)計思想描述及總體設(shè)計功能與結(jié)構(gòu)框圖2、程序流程框圖3、源程序(附程序及功能模塊注釋)。目錄1、課程設(shè)計目的42、課程設(shè)計工具及題目52.1、課程設(shè)計工具.5 2.2、課程設(shè)計題目.53、課程設(shè)計內(nèi)容及步驟53.1、課程設(shè)計內(nèi)容.53.2、課程設(shè)計步驟.54、課程設(shè)計程序(源代碼)5 4.1數(shù)據(jù)定義 54.2主函數(shù).74.3創(chuàng)建文件子程序.104.4顯示文件內(nèi)容子程序.114.5顯示文件內(nèi)容

3、長度子程序.124.6修改文件保存子程序.134.7排序子程序.144.8關(guān)鍵字搜索子程序.144.9替換關(guān)鍵字子程序.164.10打開讀取文件子程序.165、課程設(shè)計成果.18 5.1創(chuàng)建文件.18 5.2讀取文件.195.3顯示文件內(nèi)容.19 5.4顯示文件長度.20 5.5排序,輸出最大最小值.20 5.6搜索關(guān)鍵字.20. 5.7替換關(guān)鍵字.205.8退出程序.216、課程設(shè)計心得.227、參考文獻(xiàn).22課程設(shè)計目的微機(jī)原理和接口技術(shù)是計算機(jī)及電子類專業(yè)重要的基礎(chǔ)專業(yè)課之一,它不但要求有較高的理論水平,而且還要求有較強(qiáng)的實(shí)際動手能力。這次課程設(shè)計的主要目的是提高我們的實(shí)踐能力,包括提高

4、匯編等語言的編程能力和分析能力。 課程設(shè)計能把課本中分布學(xué)習(xí)的知識,在設(shè)計中綜合加以應(yīng)用,進(jìn)而得到鞏固、加深和發(fā)展。同時,學(xué)習(xí)者通過學(xué)習(xí)查找、運(yùn)用設(shè)計資料,完成工程設(shè)計所必備的基本訓(xùn)練。 通過課程設(shè)計,能夠?qū)λ鶎W(xué)的知識有更進(jìn)一步的理解,并能掌握學(xué)習(xí)理論時沒有注意的細(xì)節(jié)。在實(shí)際設(shè)計工作中,只要有一個環(huán)節(jié)沒有做好,整個體系都不能正常運(yùn)行。調(diào)試程序、排除故障有助于提高分析問題、解決問題的能力。課程設(shè)計中碰到的挫折,有助于養(yǎng)成良好的學(xué)習(xí)習(xí)慣、嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)。長期以來,注重書本知識,輕視實(shí)際動手設(shè)計能力是教學(xué)中普遍存在的現(xiàn)象。進(jìn)行課程設(shè)計的目的就是要改變這種狀況,使學(xué)習(xí)者既具有完備的理論知識,也能夠解決

5、在實(shí)際學(xué)習(xí)、生活工作中遇到的問題。學(xué)生應(yīng)該能夠把學(xué)到的理論知識用到實(shí)際中去,將知識轉(zhuǎn)變?yōu)閷?shí)際的生產(chǎn)力,同時通過這些理論知識和實(shí)際的應(yīng)用推動理論和實(shí)踐的發(fā)展。多年實(shí)踐證明,課程設(shè)計是一個不可缺少的教學(xué)環(huán)節(jié),它對學(xué)生微機(jī)知識的掌握和微機(jī)應(yīng)用能力的提高是十分重要的。通過微機(jī)原理課程設(shè)計,使學(xué)生能夠進(jìn)一步掌握微機(jī)的基本概念、原理和方法,掌握匯編語言,并能夠正確地進(jìn)行基本的計算機(jī)設(shè)計,編寫相關(guān)的軟件。使學(xué)生在完成本課程學(xué)習(xí)后,能夠進(jìn)行微機(jī)應(yīng)用方面的工作,并為其它課程奠定微機(jī)硬件基礎(chǔ)。課程設(shè)計工具及題目課程設(shè)計工具:pc機(jī)一臺課程設(shè)計題目:磁盤無符號字節(jié)數(shù)據(jù)文件(小于64kb)操作 課程設(shè)計內(nèi)容及步驟設(shè)計

6、一匯編語言程序,實(shí)現(xiàn)對數(shù)據(jù)文件的操作,具體要求如下:1 通過鍵盤輸入被操作的文件名,然后完成數(shù)據(jù)文件的排序(從大到?。?,通過鍵盤輸入排序后的新文件名,并顯示文件的長度(字節(jié)數(shù))、最大值和最小值。2 通過鍵盤輸入要搜索的關(guān)鍵字,對新文件進(jìn)行搜索,并顯示搜索結(jié)果。3 根據(jù)需要可對搜索到的關(guān)鍵字進(jìn)行修改。課程設(shè)計程序(源程序及功能模塊注釋);*數(shù)據(jù)段*data segment;主菜單mainmenu manu1 db 0ah,0ah,0dh,*mainmenu:* db 0ah,0dh, * 1. create a new file. * db 0ah,0dh, * 2. read a file.

7、* db 0ah,0dh, * 3. exit. * db 0ah,0dh, * db 0ah,0dh,please choose one operation:,0ah,0dh,$ ;子菜單submenumanu2 db 0ah,0ah,0dh,*submenu:* db 0ah,0dh, * 1. display the content of the file. * db 0ah,0dh, * 2. display the length of the content. * db 0ah,0dh, * 3. sort order and display maximum and minimum.

8、 * db 0ah,0dh, * 4. search a keyword. * db 0ah,0dh, * 5. change a keyword to another * db 0ah,0dh, * db 0ah,0dh,please choose one operation:,0ah,0dh,$ namebuff db 50,?,50 dup(?) ;輸入的磁盤文件路徑databuff db 200 dup(?) ;數(shù)據(jù)保存區(qū)datt db 200,?,200 dup(?) ;新文件輸入的內(nèi)容intro db 0dh,0ah,entery path:$ ;輸入磁盤文件路徑intronew

9、db 0dh,0ah,entery new path:$ ;輸入新文件路徑newname db 50,?,50 dup(?) ;輸入的新文件路徑handle dw ?changdu db 0dh,0ah,the length of the content is:$;輸出所指定文件的內(nèi)容長度textold db 0dh,0ah,the content is: ,0dh,0ah,$ ;輸入文本內(nèi)容textnew db 0dh,0ah,after order, the text is:,0dh,0ah,$;輸出排序后的文本內(nèi)容maxmsg db 0dh,0ah,maximum:$ ;輸出最大的字符m

10、inmsg db 0dh,0ah,mininum:$ ;輸出最小的字符keymsg db 0dh,0ah,please input the key word :$ ;輸入要查找的關(guān)鍵字changedmsg db 0dh,0ah,please input the word you want to change:$;輸入想要改變的關(guān)鍵字符changeto db 0dh,0ah,changed to:$ ;輸入改變后的關(guān)鍵字符chmsg db 0dh,0ah,the changed word is :$ ;輸出改變后的內(nèi)容found db 0dh,0ah,the number of keyword

11、is:$ ;輸出所要查找的關(guān)鍵字符的個數(shù)input db 0dh,0ah,please input content:$ ;輸入新建文件的內(nèi)容save db 0dh,0ah,saved to a new file?(y/n)$ ;是否把所修改后的內(nèi)容保存為一個新的文件maximum db 0 ;用于保存最大關(guān)鍵字minimum db 0 ;用于保存最小關(guān)鍵字keyword db 0 ;用于保存要查找的關(guān)鍵字count1 db 0 ;要查找的關(guān)鍵字的個數(shù)lengthth dw 0 ;文件字符的總長度 emess db error!$ ;表示操作出現(xiàn)錯誤crlf db 0dh,0ah,ok!$ ;顯

12、示一個回車data ends;*代碼段*code segment assume cs:code,ds:datastart: mov ax,data mov ds,ax;*主函數(shù)*mainmenu: lea dx,manu1 ;顯示主菜單 mov ah,9 ;字符串輸出 int 21h mov ah,1 ;有回顯的單字符輸入 int 21h cmp al,1 ;選擇創(chuàng)建文件 jz create cmp al,2 ;選擇顯示文件 jz read cmp al,3 ;選擇退出 jz exit jmp mainmenu ;返回主菜單 exit: mov ah,4ch int 21h create: m

13、ov dx,offset input mov ah,9 int 21h lea dx,datt mov ah,0ah ;字符串輸入 int 21h mov cl,datt+1 xor ch,ch mov lengthth,cx ;文件長度 call newfile ;調(diào)用新建文件子程序 jmp mainmenuread: call open ;調(diào)用打開文件子程序read1:mov dx,offset manu2 ; 顯示子菜單 mov ah,9 int 21h mov ah,1 ;選擇子菜單 int 21h cmp al,1 jz display ;顯示文件內(nèi)容 cmp al,2 jz lon

14、g ;顯示文件中字符的長度 cmp al,3 jz order ;排序,顯示最大值和最小值 cmp al,4 jz search ;搜索關(guān)鍵字 cmp al,5 jz change ;修改關(guān)鍵字 jmp mainmenu ;返回主菜單exitt: mov dx,offset save ;提示是否要保存修改的文件 mov ah,9 int 21h mov ah,1 ;是否保存已修改的內(nèi)容 int 21h cmp al,y jz save22 jmp mainmenusave22:call newfile1 ;調(diào)用修改文件保存子程序 jmp mainmenudisplay: mov dx,offs

15、et textold mov ah,09h int 21h call show ;調(diào)用顯示文件內(nèi)容子程序 jmp read1 long: call showlength ;調(diào)用顯示文件字符長度子程序 jmp read1order: call select ;調(diào)用文件內(nèi)容排序子程序 mov dx,offset textnew mov ah,09h int 21h call show mov dx,offset maxmsg mov ah,09h int 21h mov dl,maximum mov ah,02h int 21h mov dx,offset minmsg mov ah,09h in

16、t 21h mov dl,minimum mov ah,02h int 21h jmp exitt search: call search1 ;調(diào)用查找關(guān)鍵字子程序 mov dx,offset found mov ah,09h int 21h mov dl,count1 mov ah,02h int 21h jmp read1 change: call turn ;調(diào)用替換子程序 mov dx,offset chmsg mov ah,09h int 21h call show jmp exitt ret ;*創(chuàng)建新文件子程序*newfile procmov dx,offset intronew

17、 ;輸出輸入新文件路徑 mov ah,09h int 21h mov dx,offset newname ;輸入文件路徑 mov ah,0ah int 21h mov dx,offset crlf mov ah,09h int 21h ;在路徑后面加0 mov si,offset newname+1 mov bl,si ;得到實(shí)際字節(jié)數(shù) mov bh,0 mov byte ptr newname+bx+2,0 ;建立文件 mov dx,offset newname+2 mov cx,0 mov ah,3ch int 21h mov si,offset handle mov si,ax ;保存文

18、件代號 jc error2 ;*往文件寫內(nèi)容* mov bx,si ;文件代號 lea dx,datt+2 mov cx,lengthth mov ah,40h int 21hjc error2 ;*關(guān)閉文件*exit2:mov si,offset handle mov bx,si mov ah,3eh int 21h jc error2 reterror2:mov dx,offset emess ;出錯 mov ah,09h int 21h retnewfile endp;*顯示文件內(nèi)容子程序*show proc mov cx,lengthth mov bx,offset databuffn

19、ewchar: mov ah,2 mov dl,bx cmp dl,1ah ;進(jìn)行逐字顯示 je exitshow int 21h inc bx loop newcharexitshow:retshow endp;*顯示文件內(nèi)容長度子程序*showlength proc mov dx,offset changdu mov ah,09h int 21h mov dx,lengthth mov cl,4 shr dl,cl ;高低互換 cmp dl,9 jbe lp add dl,7 ;a-f的轉(zhuǎn)換lp: add dl,30h ;得到ascii碼 mov ah,6 int 21h mov dx,l

20、engthth and dl,0fh ;取低位 cmp dl,9 jbe lpp add dl,7 ;a-f的轉(zhuǎn)換lpp: add dl,30h mov ah,6 int 21h mov dl,h ;加入h表示十六進(jìn)制 mov ah,6 int 21h retshowlength endp;*修改文件保存子程序*newfile1 proc mov dx,offset intronew mov ah,09h int 21h mov dx,offset newname ;輸入文件路徑 mov ah,0ah int 21h mov dx,offset crlf ;回車換行 mov ah,09h in

21、t 21h;*在路徑后面加0* mov si,offset newname+1 mov bl,si ;得到實(shí)際字節(jié)數(shù) mov bh,0 mov byte ptr newname+bx+2,0;*建立文件* mov dx,offset newname+2 mov cx,0 mov ah,3ch int 21h mov si,offset handle mov si,ax ;保存文件代號 jc errort2;*往文件寫內(nèi)容* mov si,offset handle mov bx,si ;文件代號 lea dx,databuff mov cx,lengthth mov ah,40h int 21

22、h jc errort2;*關(guān)閉文件*exitt2:mov si,offset handle mov bx,si mov ah,3eh int 21h jc errort2 reterrort2:mov dx,offset emess ;出錯 mov ah,09h int 21h retnewfile1 endp;*排序子程序*select proc lea di,databuff ;di指向要排序的字符的首地址 mov cx,lengthth ;bl外循環(huán)次數(shù) mov bl,clpai1: mov si,di ;si指向當(dāng)前要比較的字符 mov cl,bl ;cl內(nèi)循環(huán)次數(shù)pai2:mov

23、al,si ;取一個字符 inc si ;指向下一字符 cmp al,si ;前一字符與下一字符比較 jnc pai3 ;若大于則不交換 mov dl,si ;若小于則前后兩字符交換 mov si-1,dl mov si,alpai3:dec cl ;內(nèi)循環(huán)是否結(jié)束 jnz pai2 ;未結(jié)束則繼續(xù) dec bl ;外循環(huán)是否結(jié)束 jnz pai1 ;未結(jié)束則繼續(xù)lea si,databuffmov al,byte ptrsimov maximum,allea si,databuffmov bx,lengththdec bxmov al,byte ptrsi+bxmov minimum,al

24、retselect endp;*關(guān)鍵字搜索子程序*search1 procmov dx,offset keymsg mov ah,9 int 21h mov ah,1 int 21h xor bx,bx lea si,databuff mov cx,lengththsch: cmp al,si jz add2net: inc si loop sch jmp next2add2: inc bx jmp netnext2: mov count1,bl mov dl,bl mov cl,4 shr dl,cl ;高低互換 cmp dl,9 jbe lp2 add dl,7 ;a-f的轉(zhuǎn)換lp2: a

25、dd dl,30h ;得到ascii shl dl,cl mov count1,dl mov dl,bl and dl,0fh ;取低位 cmp dl,9 jbe lp3 add dl,7 ;a-f的轉(zhuǎn)換lp3: add dl,30h or count1,dl ;加入h表示十六進(jìn)制,轉(zhuǎn)換為ascii碼 ret search1 endp;*替換關(guān)鍵字子程序*turn proc mov dx,offset changedmsg mov ah,9 int 21h mov ah,1 int 21h mov bl,al mov dx,offset changeto mov ah,9 int 21h mo

26、v ah,1 int 21h lea si,databuff mov cx,lengththsch1: cmp bl,si ;與放在bl中的字符比較 jz add11 ;找到則替換net1: inc si loop sch1 ;繼續(xù)尋找 jmp net21add11: mov si,al ;替換 jmp net1net21: retturn endp;*打開讀取文件子程序*open procopenfile: mov dx,offset intro mov ah,09h int 21h;*讀文件路徑名* mov dx,offset namebuff mov ah, 0ah int 21h mov dx,offset crlf mov ah,09h int 21h;*將緩沖區(qū)路徑名后面加0* mov si,offset namebuff+1 ;得到實(shí)際字節(jié)數(shù) mov bl,si mov bh,0 mov byte ptr namebuff+bx+2, 0;*打開文件* mov al,0 mov dx, offset namebuff+2 mov ah,3dh int 21h mov bx,ax mov handle,ax ;保存文件號 jc error1;*讀取文件*newbuff: mov cx,200 ;一次讀入的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論