[转帖]汉字显示编程示例
作者:cnangel
[第 1 楼]
内容:文件操作是编程中经常要用到的功能,读取运行参数、保存运行结果等等都需要用到文件操作。 在大多数编程语言中文件操作都是很容易实现的,因为它们都附带了相关的函数库,但在汇编语言中没有这样的库,因此就只有自己动手来做了。 在DOS平台下文件读写操作要通过DOS功能调用来做到。DOS功能调用提供了非常丰富的文件操作服务,涵盖了包括文件查找、建立、删除、读写、重定向 等大量功能。其他的编程语言的文件访问库函数只不过是对DOS功能调用进行了封装而已。下面我们就来看一下几个常用的文件操作服务的功能及调用参数: AH = 3cH 建立文件 入口参数 CX = 文件属性 DS:DX = 文件名字符串 返回值 CF = 0 操作成功,此时 AX = 文件句柄 CF = 1 操作失败,此时 AX = 错误代码 AH = 3dH 打开文件 入口参数 AL = 0 按只读方式打开 1 按只写方式打开 2 按读写方式打开 DS:DX = 文件名字符串 返回值 CF = 0 操作成功,此时 AX = 文件句柄 CF = 1 操作失败,此时 AX = 错误代码 AH = 3eH 关闭文件 入口参数 BX = 文件句柄 返回值 无 AH = 3fH 读文件 入口参数 BX = 文件句柄 CX = 要读的字节数 DS:DX = 存放读入数据的缓冲区 返回值 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 最后要注意的一点是:在对文件写操作完毕之后记得要关闭文件才能使用系统将数据刷新到磁盘上,否则写进去的东西很可能会丢失。 日期:2003年10月16日 07:59pm |
|