编辑: 匕趟臃39 | 2019-07-08 |
3 在文件名后加一个
0 ,构成适合句柄处理的文件名串.
4 使用 INT 21H 功能 3CH 或3DH 生成或打开文件,注意在打开文件时 CX 一般应置
0 表示无特 殊属性的文件, 调用后在 AX 中返回一个句柄,该句柄即可对应用户的文件. 利用 3CH 建立文件时, CX 的低字节表示文件的属性,要具有该属性可在该位置 1. D0 : 只读文件 D1 : 隐含文件 D2 : 系统文件 D3 : 卷标 D4 : 子目录 D5 : 归档( Archive ) D6 : 未用 D7 : 未用 显然,利用对属性的不同设置,可以实现其它任务,如建立子目录等.
5 建立文件指针
6 读/写文件
7 关闭文件 与文件处理相关的系统调用 利用句柄进行文件操作的方法及实现 对文件的操作可分成以下几种方式,用户在使用时可参照给出的程序.
1 建立/删除文件 建立文件过程一般应首先判别该文件是否存在 (利用 4EH 功能) ,因为若文件已存在,重新建立会 破坏已建立的文件内容 (将该文件长度置
0 ) .
2 打开/关闭文件 建立文件过程包括打开操作,第一次应使用建立,以后的文件操作则由 打开 文件开始. 关闭文件在程序中是必须的,因为没有按正常的关闭文件操作进行的话,有可能导致信息的丢失.
3 重新命名文件/移动文件目录
4 写顺序文件
5 读顺序文件
6 写随机文件
7 读随机文件
2 程序段前缀 PSP PSP ( Program segment prefix ) 称为程序段前缀,是DOS 在加载外部命令或应用程序 ( .EXE 或.COM 文件 ) 时,在加载的程序段前面设置的一个固定长度的信息区 ( 共100H 字节 ) , PSP 包 括以下四个组成部分: 供进程调用的 DOS 入口 PSP+0 , +2 , +5, +50H 和+2CH 字段 供进程使用的传递参数 PSP+5CH, +6CH 和+80H 字段 为DOS 保存的中断向量 PSP+0AH, +0EH , 和+12H 字段 由DOS 专用的保留区域 PSP+16H ~ 2BH 和2EH ~ 37H 字段 PSP 的某些关键字段涉及到系统内部管理,所以使用者不得更改 PSP 的结构 段内偏移地址 分配情况 PSP+00H ~ 01H 程序终止中断 INT 20H PSP+02H ~ 03H 可用内存空间高端段址 PSP+04H 备用 PSP+05H ~ 09H DOS 远调用入口 PSP+0AH ~ 0DH 程序结束处理中断向量保存处 PSP+0EH ~ 11H Ctrl-C 处理中断向量保存处 PSP+12H ~ 15H 严重错误处理中断向量保存处 PSP+16H ~ 17H 存放父进程 PSP 段址 PSP+18H ~ 2BH 系统打开文件表 PSP+2CH ~ 2DH 环境块段址 PSP+2EH ~ 31H 保存进入内核时用户栈双字指针 PSP+32H ~ 33H 指示系统打开文件表的大小 PSP+00H ~ 01H 指示系统打开文件表的地址 PSP+05H ~ 09H 备用 PSP+0AH ~ 0DH INT 21H 入口 PSP+0EH ~ 11H 备用 PSP+12H ~ 15H 用于特殊文件的扩展 FCB 的前缀 PSP+16H ~ 17H 存放格式化未打开的第一个 FCB PSP+18H ~ 2BH 存放格式化未打开的第二个 FCB PSP+2CH ~ 2DH 备用 PSP+2EH ~ 31H 未格式化参数长度 PSP+32H ~ 33H 未格式化参数内容 当可执行文件加载后, 根据其不同的类型, 系统会采用相应的方式进行处理. 若用户程序是 . COM 文件,则加载后把程序装入程序段偏移量为 100H 处, 并把所有的段寄存器指向 PSP, 实际上, 由于 . COM 文件是以长度小于 64K 为要求设计的,所有的程序,数据包括 PSP 都在同一段内.对于 .EXE 文件, 加载后把程序的 DS 和ES 指向 PSP 段,若要使用 PSP ,例如,要利用输入参数,可在程序的开始利 用DS 或ES 实现获取.当然,获取 PSP 的段址也可以利用以下介绍的系统调用实现. 对编程者而言,在PSP 中较为有用的是参数区,参数是通过在程序执行开始时,利用空格与之分隔的 字符串,用回车表示结束,具体的说,就是程序和参数在同一行输入.当程序加载时,系统将参数及参数 长度填入 PSP+80H 开始的参数区,其中 80H 处是参数长度,参数由 81H 开始存放. PSP 在DOS 中十分重要,以至于 DOS 专门为其设置了系统服务功能,以下给出了与 PSP 有关的 系统调用: 与PSP 有关的