磁盤文件讀寫程序設(shè)計(jì)_第1頁
磁盤文件讀寫程序設(shè)計(jì)_第2頁
磁盤文件讀寫程序設(shè)計(jì)_第3頁
磁盤文件讀寫程序設(shè)計(jì)_第4頁
磁盤文件讀寫程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué) 號課 程 設(shè) 計(jì)題 目磁盤文件讀寫程序設(shè)計(jì)學(xué) 院自動(dòng)化專 業(yè)自動(dòng)化班 級1102姓 名指導(dǎo)教師張丹紅2014年1月14日課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 專業(yè)班級: 自動(dòng)化1102 指導(dǎo)教師: 張 丹 紅 工作單位: 自動(dòng)化學(xué)院 題 目:磁盤文件讀寫程序設(shè)計(jì) 初始條件:帶有編輯器、匯編程序、連接程序和調(diào)試程序的電腦一臺(tái)。要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求)采用匯編語言設(shè)計(jì)一個(gè)讀寫磁盤文件的程序。建立一個(gè)文件,向文件中寫入32個(gè)字節(jié)內(nèi)容并讀出,操作成功后顯示提示OK,按Q退出程序。(1) 設(shè)計(jì)任務(wù)及要求分析(2) 方案比較及認(rèn)證說明(3) 系統(tǒng)原理闡述(

2、4) 軟件設(shè)計(jì)課題需要說明:軟件思想,流程圖,源程序及程序注釋(5) 調(diào)試記錄及結(jié)果分析(6) 總結(jié)(7) 參考資料(8) 附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實(shí)物圖時(shí)間安排:1月6 日 1月 8日: 收集資料,方案選擇1月9 日 1月12日: 整體設(shè)計(jì),程序編寫1月13日1月16日: 調(diào)試程序,報(bào)告撰寫1月17日: 交設(shè)計(jì)報(bào)告,程序演示,答辯指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日摘 要匯編語言是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語言中,用助記符代替機(jī)器指令的操作碼,用地址符號或標(biāo)號代替指令或操作數(shù)的地址,如此就增強(qiáng)了程序的可讀性并且降低了編寫難度,象這樣符

3、號化的程序設(shè)計(jì)語言就是匯編語言,因此亦稱為符號語言。使用匯編語言編寫的程序,機(jī)器不能直接識別,還要由匯編程序或者叫匯編語言編譯器轉(zhuǎn)換成機(jī)器指令。匯編程序?qū)⒎柣牟僮鞔a組裝成處理器可以識別的機(jī)器指令,這個(gè)組裝的過程稱為組合或者匯編。因此,有時(shí)候人們也把匯編語言稱為組合語言。匯編語言是一種功能性很強(qiáng)的程序設(shè)計(jì)語言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語言,應(yīng)對與高級語言的編譯器,需要一個(gè)“匯編器”來把匯編語言原文件匯編成機(jī)器可執(zhí)行的代碼。高級匯編器如MASM就為我們寫程序提供了很多類似于高級語言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部

4、分是面向匯編器的偽指令,已經(jīng)類同于高級語言?,F(xiàn)在的匯編環(huán)境已經(jīng)如此高級,即使全部用匯編語言來編寫windows的應(yīng)用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效而且需要對機(jī)器語言精確控制的程序。此次課設(shè)將使用匯編語言和MASM軟件設(shè)計(jì)一個(gè)對磁盤文件進(jìn)行讀寫的程序。關(guān)鍵詞:匯編 MASM 磁盤讀寫 編譯 程序設(shè)計(jì)目 錄1 設(shè)計(jì)任務(wù)及要求分析1.1設(shè)計(jì)任務(wù)及要求1.2設(shè)計(jì)任務(wù)分析2 方案比較及認(rèn)證說明2.1寫文件2.2讀文件2.3方案比較3系統(tǒng)實(shí)現(xiàn)原理說明3.1程序設(shè)計(jì)思想3.2程序中用到的DOS功能調(diào)用4程序流程圖4.1寫文件程序流程圖4.2讀文件程序流程圖5程序設(shè)計(jì)結(jié)果顯

5、示5.1寫文件程序運(yùn)行結(jié)果5.2讀文件程序運(yùn)行結(jié)果6 調(diào)試記錄與分析心得體會(huì)參考文獻(xiàn)附錄一:寫文件源程序附錄二:讀文件源程序磁盤文件讀寫程序設(shè)計(jì)1設(shè)計(jì)任務(wù)及要求分析1.1設(shè)計(jì)任務(wù)及要求設(shè)計(jì)要求:采用匯編語言設(shè)計(jì)一個(gè)讀寫磁盤文件的程序。建立一個(gè)文件,向文件中寫入32個(gè)字節(jié)內(nèi)容并讀出,操作成功后顯示提示OK,按Q退出程序。設(shè)計(jì)任務(wù):(1) 設(shè)計(jì)任務(wù)及要求分析(2) 方案比較及認(rèn)證說明(3) 系統(tǒng)原理闡述(4) 軟件設(shè)計(jì)課題需要說明:軟件思想、流程圖、源程序及程序注釋(5) 調(diào)試記錄及結(jié)果分析(6) 總結(jié)(7) 參考資料(8) 附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實(shí)物圖1.2設(shè)計(jì)任務(wù)分

6、析由要求可知,本題目是一道文件讀取的題目,程序主要是分兩步走:(1)寫文件:建立一個(gè)文本文件,寫入內(nèi)容,若操作成功則顯示“OK”,若失敗則顯示“BAD”,按“Q”可退出程序。(2)讀文件:從建立的文件中讀取32個(gè)字節(jié)并顯示內(nèi)容,若操作成功則顯示“OK”,若失敗則顯示“BAD”,按“Q”可退出程序。2方案論證及說明2.1寫文件按要求需要建立一個(gè)文件,向文件中寫入內(nèi)容, 程序如下:mov ax , datamov ds , ax ;目錄路徑名的ASCII字符串的段地址mov dx , offset file ;目錄路徑名的ASCII字符串的偏移地址mov cx , 0mov ah , 3ch ;調(diào)

7、用功能3CH創(chuàng)建新的文件int 21h jc error ;創(chuàng)建出錯(cuò),轉(zhuǎn)error處mov handle , ax ;保存文件號mov bx , ax ;bx文件控制字mov cx , 255 ;cx要寫的字節(jié)數(shù)mov dx , offset buf ;dx內(nèi)存緩沖區(qū)的偏移地址mov ah , 40h ;調(diào)用功能40H實(shí)現(xiàn)內(nèi)存緩沖區(qū)中的數(shù)據(jù)寫入到磁盤文件或設(shè)備int 21h ;向文件中寫入32個(gè)字節(jié)內(nèi)容2.2讀文件打開創(chuàng)建的文件并讀取文件中的前32個(gè)字符的內(nèi)容,程序如下:mov ax , datamov ds , ax ;目錄路徑名的ASCII字符串的段地址mov dx , offset fi

8、le ;目錄路徑名的ASCII字符串的偏移地址mov al , 0mov ah , 3dh ;調(diào)用功能3DH打開指定文件int 21h jc error ;若打開出錯(cuò),轉(zhuǎn)errormov handle , ax ;保存文件號mov bx , axmov cx , 32 ;要讀取的字節(jié)數(shù)mov dx , offset buf ;內(nèi)存緩沖區(qū)的偏移地址mov ah , 3fh ;調(diào)用功能3FH從文件中讀32字節(jié)bufint 21hjc error ;若讀出錯(cuò),轉(zhuǎn)errormov bx , ax ;實(shí)際讀到的字符數(shù)送入bxmov bufbx , $ ;在文件結(jié)束處放置一“$”符mov dx , off

9、set bufmov ah , 9h ;DOS功能調(diào)用輸出一串字符int 21h ;顯示文件內(nèi)容mov bx , handlemov ah , 3eh ;調(diào)用功能3EH關(guān)閉文件int 21h 2.3方案比較文件讀取有4種方式:順序存取方式、隨機(jī)存取方式、隨即分塊存取方式以及文件代號式磁盤存取方式。相比于其它三種方式,文件代號式磁盤存取方式中有關(guān)文件的各種信息都包括在DOS中,對用戶時(shí)透明的,在處理指定文件時(shí),必須使用一個(gè)完整的路徑名。對各種錯(cuò)誤采取了更統(tǒng)一的處理方法,操作過程中,AX中回送錯(cuò)誤代碼,這些錯(cuò)誤代碼對所有的代號式存取功能都是相同的,為用戶進(jìn)行分析提供了方便。3系統(tǒng)實(shí)現(xiàn)原理說明3.1

10、程序設(shè)計(jì)思想由設(shè)計(jì)題目“建立一個(gè)文件,從文件中讀32字節(jié),顯示文件內(nèi)容,操作成功后顯示提示OK,操作失敗后顯示提示BAD,按Q退出程序。”可知大致可分兩步走,建立文件,讀取并顯示文件內(nèi)容。通過查閱資料了解到文件代號式存取方式的方法,通過DOS中斷調(diào)用21H完成。建立磁盤文件:寫一個(gè)新文件或重寫一個(gè)舊文件,首先要建立文件并賦給它一個(gè)屬性。如果DOS發(fā)現(xiàn)要建立的文件已經(jīng)存在,那么原來的文件就被破壞。建立文件的功能調(diào)用是3CH。寫磁盤文件是利用功能調(diào)用40H,要寫入的字?jǐn)?shù)放在CX中,輸入緩沖區(qū)的地址放在DX中。讀取磁盤文件:讀文件或設(shè)備的功能調(diào)用是3FH,要求先把文件打開取得文件代號,然后按照制定的

11、字節(jié)數(shù)從磁盤把文件讀出,讀入內(nèi)存中預(yù)先定義好的數(shù)據(jù)緩沖區(qū)。如果讀入的字節(jié)數(shù)大于緩沖區(qū)空間,那么這些多余的數(shù)據(jù)將送到程序所占空間之上的存儲(chǔ)器中。打開文件操作的功能調(diào)用是3DH,需要檢查文件名是否合法,文件是否有效。3.2程序中用到的DOS功能調(diào)用(1) 9H:在標(biāo)準(zhǔn)輸出設(shè)備輸出一串字符。調(diào)用:AH=0AH DS=輸入緩沖區(qū)的段地址 DX=輸入緩沖區(qū)的偏移地址(2) 3CH:創(chuàng)建新的文件或?qū)⒋疟P上已存在的文件的長度變成0。 調(diào)用:AH=3CH DS=驅(qū)動(dòng)器和目錄路徑名的ASCII字符串的段地址 DX=驅(qū)動(dòng)器和目錄路徑名的ASCII字符串的偏移地址(3) 3DH:打開指定的文件。 調(diào)用:AH=3DH

12、 DS=驅(qū)動(dòng)器和目錄路徑名的ASCII字符串的段地址 DX=驅(qū)動(dòng)器和目錄路徑名的ASCII字符串的偏移地址(4) 3EH:關(guān)閉指定的文件。 調(diào)用:AH=3EH BX=打開或創(chuàng)建時(shí)返回的文件控制字(5) 3FH:將指定的文件或設(shè)備的數(shù)據(jù)讀入內(nèi)存緩沖區(qū)中。 調(diào)用:AH=3FH BX=文件控制字 DS=內(nèi)存緩沖區(qū)的段地址 DX=內(nèi)存緩沖區(qū)的偏移地址 CX=要讀取的字節(jié)數(shù)(6) 21H:將當(dāng)前塊和當(dāng)前記錄所表示的記錄讀入磁盤傳送地址。 調(diào)用:AH=21H(7) 40H:將內(nèi)存的緩沖區(qū)中的數(shù)據(jù)寫入到磁盤文件或設(shè)備。 調(diào)用:AH=40H BX=文件控制字 DS=內(nèi)存緩沖區(qū)的段地址 DX=內(nèi)存緩沖區(qū)的偏移地

13、址 CX=要寫的字節(jié)數(shù)(8) 4CH:結(jié)束當(dāng)前的進(jìn)程,控制返回給調(diào)用該進(jìn)程的程序。 調(diào)用:AH=4CH AL=返回值4程序流程圖4.1寫文件程序流程圖開始建立文件思路為:輸入文件名創(chuàng)建文件判斷文件是否存在寫入文件內(nèi)容關(guān)閉文件創(chuàng)建文件判斷文件是否存在Y覆蓋原文件N寫入文件內(nèi)容圖4-1寫文件程序流程圖YN結(jié)束成功顯示OK失敗顯示BAD判斷操作存在關(guān)閉文件4.2讀文件程序流程圖開始讀取文件思路為:找到并打開指定位置文件讀取文件顯示文件前32個(gè)字符關(guān)閉文件打開文件讀取文件顯示文件關(guān)閉文件判斷操作是否成功N失敗顯示BADY成功顯示OK結(jié)束圖4-2讀文件程序流程圖5程序設(shè)計(jì)結(jié)果顯示5.1寫文件程序運(yùn)行結(jié)果

14、程序運(yùn)行成功顯示“OK”,按“Q”或“q”退出圖5-1寫文件程序運(yùn)行結(jié)果5.2讀文件程序運(yùn)行結(jié)果程序運(yùn)行成功顯示文件前32個(gè)字符并顯示“OK”,按“Q”或“q”退出圖5-2讀文件程序運(yùn)行結(jié)果6調(diào)試記錄與分析本程序應(yīng)用的主要是DOS中斷調(diào)用21H里面的功能,如9H、3CH、3DH等。由于以前接觸較少的原因,使用不熟練,出現(xiàn)了一些問題。經(jīng)過詳細(xì)的對課本和圖書館借來的資料的了解,以及同學(xué)的幫助最終順利的完成了程序。通過圖書館以及上網(wǎng)查閱的一些資料大致了解了磁盤文件讀寫的框架程序的編寫。完成寫文件程序的主要部分,運(yùn)行的時(shí)候出現(xiàn)問題。運(yùn)行完成程序自動(dòng)退出,未能按要求實(shí)現(xiàn)“按Q或q退出”。查閱相關(guān)資料以后

15、知道可以在程序開始定義“exit_message”,最后加上1H功能調(diào)用可以實(shí)現(xiàn)。完成讀文件程序的內(nèi)容后運(yùn)行程序,運(yùn)行出錯(cuò)顯示了“BAD”,查找原因。后來發(fā)現(xiàn)是寫入內(nèi)容不足32個(gè)字符,無法讀出,故出錯(cuò)。后來在寫文件程序里改了寫入內(nèi)容夠了32個(gè)字符以后運(yùn)行成功。通過不斷的調(diào)試、運(yùn)行,我認(rèn)識到編程序是需要耐心與細(xì)心才能完成的事情,磨練了我們的毅力。心得體會(huì)課程設(shè)計(jì)的過程是綜合運(yùn)用所學(xué)知識的過程。要求將課本中分布獨(dú)立學(xué)習(xí)的知識,在設(shè)計(jì)中綜合加以應(yīng)用,從而對所學(xué)知識有更進(jìn)一步的理解、鞏固、和發(fā)展,并掌握在理論學(xué)習(xí)時(shí)忽略的細(xì)節(jié)和要點(diǎn)。通過課程設(shè)計(jì),提高學(xué)生綜合運(yùn)用所學(xué)知識分析問題、解決問題的能力,同時(shí),

16、通過查找、運(yùn)用設(shè)計(jì)資料,完成工程設(shè)計(jì)所必備的基本訓(xùn)練。本次的課程設(shè)計(jì)的題目是“磁盤文件讀取”,通過老師給的資料去圖書館查閱書籍,找到了完成該題目的框架程序,就是利用DOS功能調(diào)用21H里面的幾種功能實(shí)現(xiàn)。同時(shí),通過查閱資料還了解了一些其他的匯編相關(guān)的知識,強(qiáng)化了自己的理論知識。整個(gè)課程設(shè)計(jì)過程應(yīng)該說還是比較順利的,框架程序確定后,回來在電腦上一步步運(yùn)行,調(diào)試,知道達(dá)到要求,可以實(shí)現(xiàn)預(yù)訂的效果。過程中,遇到一些困難,都是通過查閱資料或請教同學(xué)解決的,無形中加深了同學(xué)之間的感情,也提升了自己的能力。完成了課程設(shè)計(jì),不僅僅有一種完成作業(yè)的快感,更是為自己學(xué)習(xí)的東西可以在實(shí)踐中應(yīng)用感到興奮。一次次的課

17、程設(shè)計(jì),不進(jìn)強(qiáng)化了我們的理論知識,加強(qiáng)了我們的動(dòng)手能力,讓我們更深入的了解理論結(jié)合實(shí)踐的重要性,不能只局限于紙上寫寫畫畫,這對我們以后的學(xué)習(xí)、工作都有好處??傊n程設(shè)計(jì)是我們的一門必修課,通過了它,我們以后的路才會(huì)更順暢。參考文獻(xiàn)1 沈美明、溫冬嬋.IBMPC匯編語言程序設(shè)計(jì)(第二版).北京:清華大學(xué)出版社.20052 索梅、鄭甫京、張鹿.80386/80286匯編語言程序設(shè)計(jì).北京:清華大學(xué)出版社.19943 周佩玲、彭虎、傅忠謙.微機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社.20054 齊志儒、高福祥.匯編語言程序設(shè)計(jì).沈陽:東北大學(xué)出版社.20015 馮萍、史新福.匯編語言與接口技術(shù).北京

18、:機(jī)械工業(yè)出版社.2002附錄一:寫文件源程序data segment ;數(shù)據(jù)段開始file db e:R_Hand.txt , 0 ;創(chuàng)建文件的文件名buf db Traveling to another country is good ;寫到文件中去的內(nèi)容error_message db 0ah , BAD ! , $ ;出錯(cuò)時(shí)的提示exit_message db 0dh,0ah,Press Q or q to exit,or others to continue!,0dh,0ah,$ ;按“Q”或“q”退出message db 0ah , OK !$ ;操作成功后的提示handle dw

19、 ? ;保存文件號data ends ;數(shù)據(jù)段結(jié)束code segment ;代碼段開始 assume cs:code , ds:datastart: mov ax , data mov ds , ax mov dx , offset file ;目錄路徑名的字符串偏移地址 mov cx , 0 ;文件屬性 mov ah , 3ch ;調(diào)用功能3CH建立新的文件 int 21h jc error ;創(chuàng)建出錯(cuò),轉(zhuǎn)error處 mov handle , ax ;保存文件號 mov bx , ax ;bx文件控制字 mov cx , 32 ;cx要寫的字節(jié)數(shù) mov dx , offset buf

20、;dx內(nèi)存緩沖區(qū)的偏移地址 mov ah , 40h ;調(diào)用功能40H實(shí)現(xiàn)內(nèi)存緩沖區(qū)中的數(shù)據(jù)寫入到磁盤文件或設(shè)備 int 21h ;向文件中寫入32個(gè)字節(jié)內(nèi)容 jc error ;寫出錯(cuò),轉(zhuǎn)error處 mov bx , handle mov ah , 3eh ;調(diào)用功能3EH關(guān)閉文件 int 21h jc error ;關(guān)閉文件出錯(cuò),轉(zhuǎn)error處 mov dx , offset message mov ah , 9h ;調(diào)用功能9H顯示輸出字符 int 21h ;操作成功后顯示提示 jmp end1error: mov dx , offset error_message mov ah ,

21、9h ;調(diào)用功能9H顯示輸出字符 int 21h ;顯示錯(cuò)誤提示end1: mov dx,offset exit_message mov ah,9h ;調(diào)用功能9H顯示輸出字符 int 21h mov ah,1h ;輸出顯示al的內(nèi)容 int 21h cmp al,Q jz over cmp al,q jz over jmp start ;退出顯示 over: mov ah , 4ch ;調(diào)用功能4CH結(jié)束當(dāng)前的進(jìn)程,返回主程序 int 21hcode ends ;代碼段結(jié)束 end start附錄二:讀文件的源程序data segment ;數(shù)據(jù)段開始file db e:R_Hand.txt

22、 , 0 ;文件名buf db 33 dup(0) ;文件內(nèi)容暫存區(qū)error_message db 0ah , BAD! , $ ;出錯(cuò)時(shí)的提示message db 0ah , OK!,$ ;操作成功后的提示exit_message db 0dh,0ah,Press Q or q to exit,or others to continue!,0dh,0ah,$ ;按“Q”或“q”退出handle dw ? ;保存文件號data ends ;數(shù)據(jù)段結(jié)束code segment ;代碼段開始 assume cs:code , ds:datastart: mov ax , data mov ds , ax ;目錄名段地址 mov dx , offset file ;目錄名偏移地址 mov al , 0 ;表示為讀取而打開文件 mov ah , 3dh ;調(diào)用功能3DH打開文件 int 21h jc error ;若打開出錯(cuò),轉(zhuǎn)error mov handle , ax ;保存文件號 mov bx , ax mov cx , 32 ;要讀取的字節(jié)數(shù) mov dx , offset buf ;內(nèi)存緩沖區(qū)的偏移地址 mov ah , 3fh ;調(diào)用功能3FH從文件中讀32字節(jié)

溫馨提示

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

評論

0/150

提交評論