![]() | 第7章 文件控制块 | -173- | |||||||||||||||||||
在这个FCB中我需要提醒大家注意这样一个问题那就是填写文件名与扩展名时不要使用这个字符--"\"。利用FCB只能处理"当前目录"下的文件,所以你不能使用"路径名"。至于分割文件名与扩展名的那个句点也是不需要的。特别要记住,文件名在FCB中占据了8个字节空间,如果填入的文件名不足8个字节要用空格补齐。 有了FCB的知识,我们现在就可以开始学习系统功能调用了。我们要学的第一个功能就是"打开文件",这要使用21H中断的0FH功能: |
|||||||||||||||||||||
![]() |
功能号:0FH 用 途:打开指定的文件供存取处理。 参 数:DS:DX=未打开FCB的段:偏移地址 调 用:INT 21H 返 回:AL=00H 驱动器号:填入实际驱动器号 当前记录块号:00H 记录长度:0080H 文件长度:目录项的文件长度数值 建立日期:目录项的建立日期 建立时间:目录项的建立时间 |
||||||||||||||||||||
使用这个功能之前我们需要让DS:DX指向一个未打开的FCB,在这个FCB中已经填好了驱动器号,文件及扩展名这三部分信息,然后调用0FH功能即可打开文件。如果DOS确实找到了所要打开的文件那么它会在AL寄存器中返回00H,并且DOS会自动填好FCB中那些由它负责的数据。如果它没有找到指定的文件,那么DOS会在AL寄存器中返回-1表示出现了错误。请看下面这个程序: | |||||||||||||||||||||
FCB1.ASM DATA MY_FCB DRIVE FILE_NAME EXT_NAME CUR_BLOCK REC_SIZE FILE_SIZE CREA_DATE POSITION CUR_REC REL_REC ERRMSG DATA |
SEGMENT ASSUME LABEL DB DB DB DW DW DW DW DB DB DW DB ENDS |
DS:DATA BYTE 0 'CONFIG ' 'SYS' ? ? 2 DUP(?) ? 10 DUP(?) ? 2 DUP(?) 'Error',0DH,0AH,24H |
;驱动器号,0:当前 1:A 2:B ... ;文件名 ;扩展名 ;当前记录块号 ;记录长度 ;文件长度,由系统填入 ;建立或最后修改的日期,由系统填入 ;保留空间,由系统填入 ;当前记录号 ;相对记录号 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |