[轉(zhuǎn)帖]漢字顯示編程示例作者:
cnangel[第
1 樓]
內(nèi)容:文件操作是編程中經(jīng)常要用到的功能,讀取運行參數(shù)、保存運行結(jié)果等等都需要用到文件操作。
在大多數(shù)編程語言中文件操作都是很容易實現(xiàn)的,因為它們都附帶了相關(guān)的函數(shù)庫,但在匯編語言中沒有這樣的庫,因此就只有自己動手來做了。
在DOS平臺下文件讀寫操作要通過DOS功能調(diào)用來做到。DOS功能調(diào)用提供了非常豐富的文件操作服務(wù),涵蓋了包括文件查找、建立、刪除、讀寫、重定向等大量功能。其他的編程語言的文件訪問庫函數(shù)只不過是對DOS功能調(diào)用進行了封裝而已。下面我們就來看一下幾個常用的文件操作服務(wù)的功能及調(diào)用參數(shù):
AH = 3cH 建立文件
入口參數(shù)
CX = 文件屬性
DS:DX = 文件名字符串
返回值
CF = 0 操作成功,此時 AX = 文件句柄
CF = 1 操作失敗,此時 AX = 錯誤代碼
AH = 3dH 打開文件
入口參數(shù)
AL = 0 按只讀方式打開
1 按只寫方式打開
2 按讀寫方式打開
DS:DX = 文件名字符串
返回值
CF = 0 操作成功,此時 AX = 文件句柄
CF = 1 操作失敗,此時 AX = 錯誤代碼
AH = 3eH 關(guān)閉文件
入口參數(shù)
BX = 文件句柄
返回值
無
AH = 3fH 讀文件
入口參數(shù)
BX = 文件句柄
CX = 要讀的字節(jié)數(shù)
DS:DX = 存放讀入數(shù)據(jù)的緩沖區(qū)
返回值
CF = 0 操作成功,此時 AX = 成功讀入的字節(jié)數(shù)
CF = 1 操作失敗,此時 AX = 錯誤代碼
AH = 40H 寫文件
入口參數(shù)
BX = 文件句柄
CX = 要寫的字節(jié)數(shù)
DS:DX = 要寫的數(shù)據(jù)
返回值
CF = 0 操作成功,此時 AX = 成功寫入文件的字節(jié)數(shù)
CF = 1 操作失敗,此時 AX = 錯誤代碼
AH = 42H 移動文件指針
入口參數(shù)
AL = 0 從文件頭開始向后移動文件指針
1 從文件指針當(dāng)前位置開始向后移動文件指針
2 從文件尾開始向前移動文件指針
BX = 文件句柄
CX:DX = 文件指針要移動的字節(jié)數(shù)
返回值
CF = 0 操作成功,此時 DX:AX = 當(dāng)前文件指針的位置
CF = 1 操作失敗,此時 AX = 錯誤代碼
從上面的說明可以看出,文件訪問操作只需要按要求設(shè)置好參數(shù)然后調(diào)用指定的調(diào)用即可。下面我就給出一個例子來說明文件操作的使用。
Code Segment
Assume CS:Code
Start:
Mov AX,CS
Mov DS,AX
Mov AX,3c00H
Mov CX,20H ;文件屬性為歸檔
Mov DX,Offset FileName
Int 21H ;建立文件
Jc Err1
Mov BX,AX
Mov AX,3e00H
Int 21H ;關(guān)閉文件
Mov AX,3d02H
Mov DX,Offset FileName
Int 21H ;按讀寫方式打開文件
Jc Err2
Mov BX,AX
Mov AX,4000H
Mov CX,14 ;要寫的字節(jié)數(shù)
Mov DX,Offset Msg
Int 21H ;寫數(shù)據(jù)到文件
Jc Err3
Mov AX,3e00H
Int 21H ;關(guān)閉文件
Exit:
Mov AX,4c00H
Int 21H
Err1:
Mov DX,Offset Error1
Jmp ShowErr
Err2:
Mov DX,Offset Error2
Jmp ShowErr
Err3:
Mov DX,Offset Error3
Jmp ShowErr
ShowErr:
Mov AX,900H
Int 21H
Jmp Exit
Error1 DB "Create file fail.",13,10,"$"
Error2 DB "Open file fail.",13,10,"$"
Error3 DB "Write file fail.",13,10,"$"
FileName DB "Data.txt",0
Msg DB "Hello World!",13,10
Code Ends
End Start
最后要注意的一點是:在對文件寫操作完畢之后記得要關(guān)閉文件才能使用系統(tǒng)將數(shù)據(jù)刷新到磁盤上,否則寫進去的東西很可能會丟失。
日期:
2003年
10月
16日
07:59pm