匯編語言實驗報告:實驗六 磁盤文件存取實驗(設計性實驗)_第1頁
匯編語言實驗報告:實驗六 磁盤文件存取實驗(設計性實驗)_第2頁
匯編語言實驗報告:實驗六 磁盤文件存取實驗(設計性實驗)_第3頁
匯編語言實驗報告:實驗六 磁盤文件存取實驗(設計性實驗)_第4頁
匯編語言實驗報告:實驗六 磁盤文件存取實驗(設計性實驗)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、匯編語言實驗報告 實驗六 磁盤文件存取實驗(設計性實驗)實驗六 磁盤文件存取實驗(設計性實驗)一、實驗要求和目的1 理解文件、目錄的概念;2 了解 FCB(文件控制塊)方式文件管理方法;3 掌握文件代號式文件存取方式;4 學習使用文件指針讀取文件二、軟硬件環(huán)境1、硬件環(huán)境:計算機系統(tǒng) windows;2、軟件環(huán)境:裝有MASM、DEBUG、LINK、等應用程序。三、實驗涉及的主要知識DOS功能調(diào)用中斷(INT 21H)提供了兩類磁盤文件管理功能,一類是FCB(文件控制塊)方式,另一類是文件代號式存取方式。對于文件的管理,實際上是對文件的讀寫管理, DOS 設計了四種存取文件方式:順序存取方式、

2、隨機存取方式、隨機分塊存取方式和代號法存取方式。文件的處理步驟A) 寫之前必須先建立文件、讀之前必須先打開文件。B) 寫文件之后一定要關(guān)閉文件。通過關(guān)閉文件,使操作系統(tǒng)確認此文件放在磁盤哪一部分,寫后不關(guān)閉會導致寫入文件不完整。1、文件代號式存取方式:當用戶需要打開或建立一個文件時,必須提供文件標識符。文件標識符用ASCII Z 字符串表示。ASCII Z 字符串是指文件標識符的ASCII 字符串后面再加1 個“0”字符。文件標識符的字符串包括驅(qū)動器名、路徑名和文件名。其格式為d:pathfilename.exe其中d 為驅(qū)動器名,path 為路徑名,.exe 為文件名后綴。中斷 21H 提供

3、了許多有關(guān)目錄和文件操作的功能,其中文件代號式存取方式常用的功能如下:2、操作目錄的常用功能39H創(chuàng)建目錄 3BH設置當前目錄3AH刪除目錄 47H讀取當前目錄有關(guān)中斷功能的詳細描述和調(diào)用參數(shù)在此從略,需要查閱者可參閱相關(guān)資料之目錄控制功能。3、用文件句柄操作文件的常用功能3CH創(chuàng)建文件 4EH查找到第一個文件3DH打開文件 4FH查找下一個文件3EH關(guān)閉文件 56H文件換名3FH讀文件或設備 57H讀取/設置文件的日期和時間40H寫文件或設備 5AH創(chuàng)建臨時文件41H刪除文件 5BH創(chuàng)建新文件42H設置文件指針 67H設置文件句柄數(shù)(最多文件數(shù))43H讀取/設置文件屬性 6CH擴展的打開文件

4、功能有關(guān)中斷功能的詳細描述和調(diào)用參數(shù)在此從略,需要查閱者可參閱相關(guān)資料之文件操作功能。下面簡單介紹幾種常用的功能:(1)建立文件(3CH)功能:按指定文件名建立文件。入口參數(shù):(AH)3CH,DS:DX 指向ASCII Z 字符串的段地址和偏移地址,(CX)文件屬性。出口參數(shù):若操作成功,則CF0,(AX)文件代號;若操作失敗,則CF1,(AX)錯誤代碼。(2)打開文件(3DH)功能:打開由ASCII Z 串指定的文件。入口參數(shù):(AH)3DH,DS:DX 指向ASCII Z 字符串的段地址和偏移地址,(AL)存取方式代碼(0:讀文件,1:寫文件,2:讀、寫文件)。出口參數(shù):若操作成功,則CF

5、0,(AX)文件代號;若操作失敗,則CF1,(AX)錯誤代碼。(3)關(guān)閉文件(3EH)功能:關(guān)閉文件代號指定的文件。入口參數(shù):(AH)3EH,(BX)文件代號。出口參數(shù):若操作成功,則CF0;若操作失敗,則CF1,(AX)錯誤代碼。(4)讀文件(3FH)功能:按文件代號讀取文件。入口參數(shù):(AH)3FH,(BX)文件代號,(CX)要讀取的字節(jié)數(shù);DS:DX 指向接收數(shù)據(jù)緩沖區(qū)的段地址和偏移地址。出口參數(shù):若操作成功,則CF0,(AX)實際讀入字節(jié)數(shù),(AX)0,文件結(jié)束;若操作失敗,則CF1,(AX)錯誤代碼。(5)寫文件(40H)功能:按文件代號寫文件。入口參數(shù):(AH)40H,(BX)文件

6、代號,(CX)要寫入的字節(jié)數(shù);DS:DX 指向存放寫入信息數(shù)據(jù)緩沖區(qū)的段地址和偏移地址。出口參數(shù):若操作成功,則CF0,(AX)寫入字節(jié)數(shù);若操作失敗,則CF1,(AX)錯誤代碼。(6)移動文件指針(42H)功能:移動由文件代號標志的文件讀寫指針的位置入口參數(shù):在bx 預置文件代號,在cx:dx 雙字中預置移動位移量,在 al 中預置移動方式移動方式:00h 移動后文件指針值=0+移動位移量01h 移動后文件指針值=當前文件指針值+移動位移量02h 移動后文件指針值=文件尾值+移動位移量出口參數(shù):CF=0 表示移動成功,此時CX:DX 雙字中返回移動后文件指針值;CF=1 表示移動失敗,此時A

7、X 中返回值為1 表示移動方式無效,為6 表示無效的文件代號。(7)取/置文件屬性(43H)功能:按文件代號寫文件。入口參數(shù):(AH)43H,DS:DX 指向ASCII Z 串的段地址和偏移地址。(AL)0,取文件屬性,(AL)1,置文件屬性;置文件屬性時,(CX)新文件屬性(低字節(jié))。出口參數(shù):若操作成功,則CF0,若為取屬性,(CX)文件屬性;若操作失敗,則CF1,(AX)錯誤代碼。用FCB 操作文件的常用功能和磁盤絕對讀寫中斷請參閱相關(guān)資料,不作要求。四、實驗內(nèi)容與步驟(文件代號式存取方式)1、編寫一個創(chuàng)建子目錄的程序,具體要求如下:1)用鍵盤輸入一個目錄路徑名,若輸入的字符串為空,則程

8、序運行結(jié)束;2)若目錄創(chuàng)建成功,顯示成功信息,否則,顯示創(chuàng)建失敗信息。2、編寫一個創(chuàng)建文件的程序,其要求如下:1)用鍵盤輸入文件名(可包含路徑),若輸入的字符串為空,則程序運行結(jié)束;2)若目錄創(chuàng)建成功,顯示成功信息,否則,顯示創(chuàng)建失敗信息;3)從鍵盤輸入20 個字符存放到新建立的文件中。3、利用文件句柄將兩個文件合并成一個文件。要求: 1)在第一個文件末尾處換行回車,插入“The second file as follow:”; 2)換行回車,把第二個文件內(nèi)容存放在后面。五、實驗要求與提示1、實驗要求(1)畫出各程序流程圖;(2)列出程序清單,加上適量注釋;(3)回答思考問題;(4)記錄實驗結(jié)

9、果;(5) 完成實驗報告(實驗材料上的內(nèi)容簡寫,自己的工作要詳盡)。六、程序設計:實驗1: 實驗2:實驗3: 七、實驗過程及結(jié)果:實驗1:根據(jù)要求,設計程序如下:1.DATAS SEGMENT HANDLE DW ? ONE DB PLEASE INPUT THE DIRECTORY ROUTE$ TWO DB ERROR: CREATE DIRECTORY FAILED!$ THREE DB CREATE DIRECTORY SUCCESSFUL!$ BUF DB 64 DB ? DIRN_STR DB 64 DUP(0)DATAS ENDSCODES SEGMENT ASSUME CS:C

10、ODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DX,TWO MOV AH,09H INT 21H CALL RETURN LEA DX,BUF MOV AH,0AH INT 21H MOV BL,BUF+1 MOV BH,0 MOV DIRN_STRBX,0 CMP BYTE PTR BUF+1,0 JZ EXIT LEA DX,DIRN_STR MOV CX,00H MOV AH,39H INT 21H JC ERROR MOV HANDLE,AX CALL RETURN LEA DX,THREE MOV AH,09H INT 21H CALL

11、 RETURN MOV BX,HANDLE MOV AH,3EH INT 21H JMP EXITERROR: CALL RETURN LEA DX,THREE MOV AH,09H INT 21H CALL RETURN JMP EXIT RETURN PROC MOV AH,2 MOV DL,0DH INT 21H MOV AH,2 MOV DL,0AH INT 21H RETRETURN ENDPEXIT: MOV AH,4CH INT 21HCODES ENDSEND START2. 編譯代碼,生成OBJ文件,再生成EXE文件,可成功運行。3. 結(jié)果如下:實驗2:根據(jù)要求,編寫程序如下

12、: DATASSEGMENTADDRESSDB16DB?ADDNAMEDB16 DUP(?)DB00HBUFDB21DB?STRINGDB21 DUP(?)FILEHDW?SS1DBFile creating: Success!$SS2DBFile is written!$SF1DBFile creating: Fail!$SF2DBCan not write!$DATASENDSCODESSEGMENTASSUMEDS:DATAS,CS:CODESSTART:MOVAX,DATASMOVDS,AXMOVES,AXNEXT:LEADX,ADDRESSMOVAH,0AHINT21HCALLNEW

13、LINELEASI,ADDRESS+1CMPBYTE PTR SI,0JEEXITMOVBL,BYTE PTR SIXORBH,BHADDSI,BXINCSIMOVBYTE PTR SI,00HCLCXORCL,CLXORAL,ALMOVAH,3CHMOVCH,00HLEADX,ADDNAMEINT21HJCERRMOVFILEH,AXLEADX,SS1MOVAH,09HINT21HCALLNEWLINELEADX,BUFMOVAH,0AHINT21HCALLNEWLINECALLWRITECALLNEWLINECALLTOZCALLEFILEJMPNEXTERR:LEADX,SF1MOVAH

14、,09HINT21HCALLTOZCALLNEWLINEJMPNEXTEXIT:MOVAH,4CHINT21HNEWLINEPROCNEARMOVDL,0DHMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HRETNEWLINEENDPTOZPROCNEARMOVCX,16LEASI,ADDNAMEL1:MOVBYTE PTR SI,00HINCSILOOPL1RETTOZENDPEFILEPROCNEARMOVAH,3EHMOVBX,FILEHINT21HRETEFILEENDPWRITEPROCNEARMOVAH,40HMOVBX,FILEHMOVCX,20LE

15、ADX,STRINGINT21HJNCR2CALLERR2R2:CALLSUC1RETWRITEENDPERR2PROCNEARLEADX,SF2MOVAH,09HINT21HRETERR2ENDPSUC1PROCNEARLEADX,SS2MOVAH,09HINT21HRETSUC1ENDPCODESENDSENDSTART2.編譯代碼,生成OBJ文件,再生成EXE文件,可成功運行。3.結(jié)果如下:實驗3:依據(jù)題意編寫代碼如下: DATASSEGMENTFN1DBC:SHIYANa.txt,00HFN2DBC:SHIYANb.txt,00HBUFDB256 DUP(?)FH1DW?FH2DW?S

16、1DBThe second file as follow:S2DB0DH,0AHS3DBSuccess!$S4DBFail!$DATASENDSCODESSEGMENTASSUMEDS:DATAS,CS:CODESSTART:MOVAX,DATASMOVDS,AXMOVES,AXLEADX,FN2MOVAL,00HMOVAH,3DHINT21HMOVFH2,AXLEADX,FN1MOVAL,01HMOVAH,3DHINT21HMOVFH1,AXLEADX,BUFMOVBX,FH2MOVCX,256MOVAH,3FHINT21HXORDX,DXXORCX,CXMOVBX,FH1MOVAL,02H

17、MOVAH,42HINT21HCALLNEWLINELEADX,S1MOVBX,FH1MOVCX,26MOVAH,40HINT21HCALLNEWLINELEADX,BUFMOVBX,FH1MOVCX,256MOVAH,40HINT21HMOVBX,FH1MOVAH,3EHINT21HMOVBX,FH2MOVAH,3EHINT21HEXIT:MOVAH,4CHINT21HNEWLINEPROCNEARLEADX,S2MOVBX,FH1MOVCX,2MOVAH,40HINT21HRETNEWLINEENDPCODESENDSENDSTART2.編譯代碼,生成OBJ文件,再生成EXE文件,可成功運行。3.結(jié)果如下:運行程序前:運行程序后:八、思考與練習1有興趣的同學考慮用子程序方法實現(xiàn)上述實驗內(nèi)容;2文件在使用之前為何要打開?使用后為何要關(guān)閉?怎樣計算文件的長度和移動文件的讀寫指針?答:只有打開文件才能獲得文件代號,后續(xù)對該文件的讀寫操作及關(guān)閉均需要這個文件代號。 移動文件指針(42H) 功能:入口參數(shù):在 bx 預置文件代號,在 cx:dx 雙字中預置移動位移量,在 al 中預置移動方式移動方式: 00h 移動后文件指針值=0+移動位移量 01h 移動后文件指針值=當前文件指針值+移動位移量 02h 移動后文件指針

溫馨提示

  • 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

提交評論