關(guān)于文件號(hào)(file handle)
文件號(hào)是一個(gè)十六位的二進(jìn)制整數(shù),代表一個(gè)已被打開文件的標(biāo)識(shí)碼。應(yīng)用程序借助這個(gè)標(biāo)識(shí)碼,即可對(duì)相應(yīng)的文件進(jìn)行存取操作。
旅者住招待所要填寫姓名、工作單位等,(dos用ascⅱ碼表示的文件路徑名),當(dāng)?shù)玫焦芾韱T許可(文件被成功打開)后,發(fā)給旅者一個(gè)標(biāo)有房間號(hào)碼的出入證(房間號(hào)碼相當(dāng)于dos返回的文件號(hào)),旅者憑出入證進(jìn)出房間而不必通報(bào)姓名(應(yīng)用程序憑文件號(hào)存取文件)
ms-dos中僅有20個(gè)文件號(hào),前5個(gè)已分配給i/o設(shè)備:
0—鍵盤 1—顯示器2—顯示器3—rs-232的設(shè)備4—打印機(jī)
在dos控制下,應(yīng)用程序同時(shí)打開的文件數(shù)最大為15個(gè)
一、文件重新命名(int 21h)
入口參數(shù):ah功能號(hào) 56h
ds:dx 原文件名及路徑串地址
es:di 新文件名及路徑串地址
輸出參數(shù):cf=1, 改名失敗,ax中為錯(cuò)誤信息
ax=02h,ds:dx指定的文件不存在
ax=03h,ds:dx指定的路徑錯(cuò)
ax=05h,es:di指定的文件已存在
ax=11h, 原文件與新文件指定的驅(qū)動(dòng)器不同
二、刪除指定的文件(int 21h)
輸入?yún)?shù):ah:功能號(hào)41h
ds:dx文件路徑及文件名
輸出參數(shù):cf=0 刪除成功
cf=1 失敗,ax=錯(cuò)誤代碼
ax=02h;找不到指定文件
ax=05h;指定的是目錄或只讀文件
三、改變文件屬性(int 21h)
輸入?yún)?shù): ah功能號(hào) 43h
ds:dx文件名首址
al=1 置文件屬性
cx 文件屬性
輸出參數(shù):cf=0成功
cf=1失敗,ax=錯(cuò)誤代碼
=03路徑名無效
=01al值無效
四、文件的建立、打開、讀、寫、關(guān)閉
1、建立文件
mov ah,3ch
lea dx,文件名串首址
mov cx,屬性
int 21h
2、打開文件
mov ah,3dh
lea dx,文件名首址
mov al,屬性
int 21h
3、讀文件
mov ah,3fh
mov bx,文件號(hào)
lea dx,文件名首址
mov cx,要讀字節(jié)數(shù)
int 21h
4、寫文件
mov ah,40h
mov bx,文件號(hào)
mov cx,寫字節(jié)數(shù)
lea dx,數(shù)據(jù)緩沖區(qū)首址
int 21h
5、關(guān)閉文件
mov ah,3eh
mov bx,文件號(hào)
int 21h