  
- UID
- 1
- 威望
- 1240 点
- 金钱
- 24019 金币
- 点卡
- 317 点
|
[转帖]汉字显示编程示例
文件操作是编程中经常要用到的功能,读取运行参数、保存运行结果等等都需要用到文件操作。
在大多数编程语言中文件操作都是很容易实现的,因为它们都附带了相关的函数库,但在汇编语言中没有这样的库,因此就只有自己动手来做了。
在DOS平台下文件读写操作要通过DOS功能调用来做到。DOS功能调用提供了非常丰富的文件操作服务,涵盖了包括文件查找、建立、删除、读写、重定向等大量功能。其他的编程语言的文件访问库函数只不过是对DOS功能调用进行了封装而已。下面我们就来看一下几个常用的文件操作服务的功能及调用参数:
AH = 3cH 建立文件
入口参数
CX = 文件属性
DS X = 文件名字符串
返回值
CF = 0 操作成功,此时 AX = 文件句柄
CF = 1 操作失败,此时 AX = 错误代码
AH = 3dH 打开文件
入口参数
AL = 0 按只读方式打开
1 按只写方式打开
2 按读写方式打开
DS X = 文件名字符串
返回值
CF = 0 操作成功,此时 AX = 文件句柄
CF = 1 操作失败,此时 AX = 错误代码
AH = 3eH 关闭文件
入口参数
BX = 文件句柄
返回值
无
AH = 3fH 读文件
入口参数
BX = 文件句柄
CX = 要读的字节数
DS X = 存放读入数据的缓冲区
返回值
CF = 0 操作成功,此时 AX = 成功读入的字节数
CF = 1 操作失败,此时 AX = 错误代码
AH = 40H 写文件
入口参数
BX = 文件句柄
CX = 要写的字节数
DS:DX = 要写的数据
返回值
CF = 0 操作成功,此时 AX = 成功写入文件的字节数
CF = 1 操作失败,此时 AX = 错误代码
AH = 42H 移动文件指针
入口参数
AL = 0 从文件头开始向后移动文件指针
1 从文件指针当前位置开始向后移动文件指针
2 从文件尾开始向前移动文件指针
BX = 文件句柄
CX:DX = 文件指针要移动的字节数
返回值
CF = 0 操作成功,此时 DX:AX = 当前文件指针的位置
CF = 1 操作失败,此时 AX = 错误代码
从上面的说明可以看出,文件访问操作只需要按要求设置好参数然后调用指定的调用即可。下面我就给出一个例子来说明文件操作的使用。
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 ;关闭文件
Mov AX,3d02H
Mov DX,Offset FileName
Int 21H ;按读写方式打开文件
Jc Err2
Mov BX,AX
Mov AX,4000H
Mov CX,14 ;要写的字节数
Mov DX,Offset Msg
Int 21H ;写数据到文件
Jc Err3
Mov AX,3e00H
Int 21H ;关闭文件
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
最后要注意的一点是:在对文件写操作完毕之后记得要关闭文件才能使用系统将数据刷新到磁盘上,否则写进去的东西很可能会丢失。 |
我是一个呼吸着现在的空气而生活在过去的人
这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
我已习惯了孤独,爱上孤独
他让我看清了自我,还原了自我
让我再静静的沉思中得到快乐和满足
再孤独的世界里我一遍又一遍
不厌其烦的改写着自己的过去
延伸到现在与未来
然而那只是泡沫般的美梦
产生的时刻又伴随着破灭的到来
在灰飞烟灭的瞬间我看到的是过程的美丽
而不是结果的悲哀。。。
|
|