汇编知识点之磁盘文件存取技术

  • Post author:
  • Post category:其他


1.文件代号式磁盘存取


(1)两个重要的表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)简要说明:

文件代号式存取方式将有关文件的各种信息都包括在DOS中。 在处理指定文件时必须使用一个完整的路径名,一旦文件的路径名被送入操作系统,就被赋予一个简单的文件代号,这个文件代号是一个16位的数(16位的二进制)。以后对文件进行读写操作时,就用这个文件代号去查找相应的文件。对于每一个打开的文件,DOS还为其管理一个读写指针,读写指针总是指向下一次要存取的文件中的字节,这个读写指针可以移动到文件的任意位置,从而能满足随机存取的要求。


将指针指向开头位置的两种方法:

①关闭文件,重新打开此文件

②利用DOS相应的功能调用


(3)路径名和ASCIZ串



ASCIZ串包括文件的路径名和一个全0的字节。





ASCIZ串的地址装在DX寄存器中。



路径名说明文件的位置,包括磁盘驱动器、目录路径和文件名。

例:PN DB  ‘D:\ABC.TXT’,00H  ;ASCIZ串

PH DW  ? ;文件代号



LEA DX,PN

MOV PH,AX  ;存储文件代号


(4)文件代号和错误返回代码

对于存取磁盘文件,首先用一个ASCIZ串指定文件并调用DOS功能3CH建立或打开文件。


如果成功,操作置CF为0,并把文件代号传送到AX中


,这时文件和代号建立了对应关系,所以要注意保存这个代号。


如果操作不成功,CF被置1,AX中包含的是错误代码


,这个错误代码都取自一个统一的错误信息表。


(5)文件属性

文件属性字节:


CX(存放属性字节)


:xxxxxxxx00xxxxxx

前10位没用到,属性字节只用后六位。



01-只读文件


,该文件不能为写而打开。

02-隐文件,用DIR查不到该文件。

03-系统文件,用DIR查不到该文件。

08-软盘的卷标号。

10-子目录。



20-已写入并关闭了文件


(硬盘用)。

使用改变文件属性功能(43H)可以改变现有文件的属性。

MOV  AH,43H

MOV  AL,01

MOV  CX,01

MOV  DX,SEG FNAME

MOV  DS,DX

MOV  DX,OFFSET FNAME

INT   21H ;CALL DOS



检验文件属性,AL置为00


,操作后当前的属性值返回到CX寄存器。



改变文件属性,置AL为01


,CX放入新的属性,操作把这个新属性置入目录项。


(6)写磁盘文件



1.用ASCIZ串从系统中得到文件代号

2.用INT 21H的3CH功能号建立文件

3.用INT 21H的40H功能号写入文件

4.用INT 21H的3EH关闭文件


(7)读磁盘文件


1.用ASCIZ串从系统中得到文件代号

2.用INT 21H的3DH功能号打开文件

3.用INT 21H的3FH功能号读入文件

4.用INT 21H的3EH关闭文件


(8)移动读写指针

DOS提供了

移动读写指针功能42H

,该功能要求在

BX中指定文件代号

,由AL中的代码确定改变指针的三种方式。在每种方式中,

由CX和DX指定一个双字长的偏移值,低位字在DX中,高位字在CX中

,这个偏移值是一个带符号的整数,它可以是正数,也可以是负数。

①AL=00 绝对移动方式 偏移从文件首开始计算。

例:从文件首开始,移动指针1024字节。

MOV AH,42H

MOV AL,00

MOV BX,HANDLE1

MOV CX,00

MOV DX,1024

INT 21H

JC ERROR

②AL=01 相对移动方式 当前的指针值加上偏移值作为新的指针值。

例:MOV BX,HANDLE

MOV CX,0

MOV DX,N

CMP DX,0

JGE POINT

NOT CX

POINT:MOV AL,1

MOV AH,42H

INT 21H

JC ERROR



版权声明:本文为weixin_47906677原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。