文件操作是编程中经常要用到的功能,读取运行参数、保存运行结果等等都需要用到文件操作。在大多数编程语言中文件操作都是很容易实现的,因为它们都附带了相关的函数库,但在汇编语言中没有这样的库,因此就只有自己动手来做了。在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=错误代码从上面的说明可以看出,文件访问操作只需要按要求设置好参数然后调用指定的调用即可。下面我就给出一个例子来说明文件操作的使用。CodeSegmentAssumeCS:CodeStart:MovAX,CSMovDS,AXMovAX,3c00HMovCX,20H;文件属性为归档MovDX,OffsetFileNameInt21H;建立文件JcErr1MovBX,AXMovAX,3e00HInt21H;关闭文件MovAX,3d02HMovDX,OffsetFileNameInt21H;按读写方式打开文件JcErr2MovBX,AXMovAX,4000HMovCX,14;要写的字节数MovDX,OffsetMsgInt21H;写数据到文件JcErr3MovAX,3e00HInt21H;关闭文件Exit:MovAX,4c00HInt21HErr1:MovDX,OffsetError1JmpShowErrErr2:MovDX,OffsetError2JmpShowErrErr3:MovDX,OffsetError3JmpShowErrShowErr:MovAX,900HInt21HJmpExitError1DBCreatefilefail.,13,10,$Error2DBOpenfilefail.,13,10,$Error3DBWritefilefail.,13,10,$FileNameDBData.txt,0MsgDBHelloWorld!,13,10CodeEndsEndStart