磁盤文件存取技術(shù)_第1頁
磁盤文件存取技術(shù)_第2頁
磁盤文件存取技術(shù)_第3頁
磁盤文件存取技術(shù)_第4頁
磁盤文件存取技術(shù)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章磁盤文件存取技術(shù)

11.1有關(guān)概念

11.2磁盤文件管理系統(tǒng)功能調(diào)用

11.1擴展磁盤文件管理有關(guān)概念

DOS提供的磁盤管理功能包括三個方面:一是關(guān)于文件內(nèi)部所存放的數(shù)據(jù),比如建立、讀、寫等二是針對文件的外部屬性,如查找文件的名稱、日期三是目錄管理的創(chuàng)建、刪除功能等1、ASCIIZ串

ASCIIZ串—對文件進行說明。ASCIIZ串最后一個字節(jié)為0,其余字節(jié)是指示文件位置的ASCII碼字符串。

[d:][path]filename.ext,00用變量定義的形式就寫作:

filenameDB'C:\SAMPLE.TXT',002、文件代號文件建立或打開后,DOS在自已的保留區(qū)建立一個有關(guān)文件名、存放盤、路徑及讀寫位置指針等信息的控制塊,而返回給用戶的是一個16位的二進制控制字,稱為文件代號。用這個上文件代號可以方便的訪問相應(yīng)的文件。

DOS已經(jīng)預定義了文件代號0到4與標準輸入輸出設(shè)備對應(yīng),即

0──標準輸入設(shè)備,鍵盤;

1──標準輸出設(shè)備,屏幕;

2──錯誤輸出的標準設(shè)備,屏幕;

3──標準輔助設(shè)備(通信端口);

4──標準打印設(shè)備。這5個文件代號長期處于打開狀態(tài),應(yīng)用程序可以直接使用。3、錯誤返回碼

0,操作成功

CF=1,操作失敗錯誤類型碼保存在AX寄存器中(如圖)4、文件屬性—有一個字節(jié)表示

只讀隱藏系統(tǒng)卷標子目錄歸檔

76543 21 0位號:代碼(Hex)錯誤原因代碼(Hex)錯誤原因0001非法功能號0008內(nèi)存不夠0002文件未找到000C非法存取代碼0003路徑未找到000D非法數(shù)據(jù)0004同時打開的文件太多0010試圖刪除當前目錄0005拒絕訪問0011設(shè)備不一致0006非法文件代號

文件操作的錯誤代碼

子功能號(AH)功能入口參數(shù)出口參數(shù)3CH創(chuàng)建DS:DX=文件名首字符邏輯地址CX=文件屬性AX=文件代號3DH打開DS:DX=文件名首字符邏輯地址AL=存取代碼AX=文件代號

3EH關(guān)閉BX=文件代號3FH讀DS:DX=數(shù)據(jù)緩沖區(qū)邏輯地址BX=文件代號CX=讀取的字節(jié)數(shù)AX=實際讀取的字節(jié)數(shù)40H讀DS:DX=數(shù)據(jù)緩沖區(qū)邏輯地址BX=文件代號CX=寫入的字節(jié)數(shù)AX=實際寫入的字節(jié)數(shù)42H移動指針(CX,DX)=移動字節(jié)數(shù),有符號雙字AL=方式碼BX=文件代號(DX,AX)=新的指針位置11.2常用擴展磁盤文件管理系統(tǒng)功能調(diào)用(21H)

【例11.1】從鍵盤讀入一個符號串作為文件名,如果文件存在,則顯示其中的內(nèi)容。

【解】dataSEGMENTstr1DB'InputFileName:$'str2DB13,10,'Filenotfound.',13,10,'$'fnDB80,81dup(0)handleDW0

bufDB10000DUP(0)dataENDScodeSEGMENTASSUMECS:code,DS:datamain:MOVAX,dataMOVDS,AXLEADX,str1MOVAH,9INT21H;先顯示出提示信息InputFileName:INCAHLEADX,fnINT21H;以DOS的10號子功能讀入字符串,作為文件名

MOVBL,[fn+1]XORBH,BH

MOV[fn+BX+2],0;置文件名字符串的結(jié)束標記

LEADX,[fn+2]MOVAX,3D00HINT21H;打開文件

JNCopened;打開成功轉(zhuǎn)

MOVAH,9LEADX,str2INT21H;提示Filenotfound.JMPfinishopened:MOV[handle],AX;保存文件代號到變量handle中next:MOVBX,[handle];取文件代號

MOVAH,3FHLEADX,buf

MOVCX,10000INT21H;讀10000個字符,若不足則按實際情況讀入

MOVCX,AX;實際讀入字符數(shù)

MOVAH,40HMOVBX,1

INT21H;向1號文件(標準輸出設(shè)備,屏幕)輸出

CMPCX,10000JEnext;讀滿緩沖區(qū),而文件可能未讀完,轉(zhuǎn)

MOVBX,[handle]MOVAH,3EHINT21H;關(guān)閉文件finish:MOVAH,4CHINT21HRETcodeENDSENDmain

【例11.2】給定如下條件:(1)文件student.dbf中存放著1000個學生的信息,每條信息占用40個字節(jié)的存儲空間,依次存放1個字型的學號、8個字符構(gòu)成的字符串作為姓名、30個字符構(gòu)成的字符串作為家庭住址。(2)子程序lookup能夠完成查找索引的功能。調(diào)用前以入口參數(shù)AX中存放學號,調(diào)用后若該學號存在,CF會置0,且(CX,DX)存放該學號在主文件中的地址(即文件指針),學號不存在則CF為1。(3)文件student.dbf已經(jīng)打開,文件代號存放在變量handle中。(4)變量buf已在數(shù)據(jù)段中定義,用于存放讀入的一個學生的信息。要求:編寫一個子程序search,入口參數(shù)是在AX中存放的正整數(shù)作為學號。若該學號存在,把CF置0,并讀出該學生有關(guān)信息,送到變量buf中,否則把CF置1。

【解】子程序的功能、入口參數(shù)及出口參數(shù)都很明確,子程序清單如下:

searchPROCNEARPUSHBXPUSHCXPUSHDXPUSHDS

CALLlookup;調(diào)用已給出的子程序,在索引中查找

JCerror;找不到轉(zhuǎn),找到時(CX,DX)值剛好作為移動文件指針的入口參數(shù)

MOVBX,[handle];取文件代號

MOVAX,4200HINT21H;移動指針到正確位置

JCerror;文件操作出錯轉(zhuǎn)

MOVAX,SEGbufMOVDS,AXMOVAH,3FH

LEADX,buf;DS:DX為讀盤緩沖區(qū)首地址

MOVCX,40;讀取的字節(jié)數(shù)

INT21Herror:POPDSPOPDXPOPCXPOPBXRETsearchENDP11.3有關(guān)文件外部特性與目錄的操作子功能號(AH)功能入口參數(shù)出口參數(shù)39H建立子目錄DS:DX=路徑字符串首地址

3AH刪除子目錄DS:DX=路徑字符串首地址

3BH改變當前目錄DS:DX=路徑字符串首地址

41H刪除文件DS:DX=待刪除文件名字符串首地址

溫馨提示

  • 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

提交評論