![]() | 第7章 文件控制块 | -199- | |||||||||||||||||||
![]() 图7-3 特殊的FCB结构 |
|||||||||||||||||||||
可以看到和标准的FCB相比这个新的FCB主要是对偏移11H后作了改进,很显然,既然要改名,总要给出一个新的文件名才行,这个新文件名就填在FCB偏移11H处。第二我们要讨论一下究竟什么文件可以删除。我们平常使用DOS时都知道只读文件或隐含文件是不能删除的,那么使用13H功能删除文件时也要遵守这个规矩。同样,若不使用扩展FCB,那么卷标、子目录也不能用此功能删除,这个功能唯一能删除的就是那些普通的文件。第三,我们平常使用DOS时都知道DEL命令可以一次删除一批文件,也就是使用"*"或"?",我们习惯上称这两个符号为通配符。13H功能同样支持通配符,也就是说你在FCB中填入的文件名可以是"*.*"或"FILE.???"这样的字符串。当然,使用通配符是有条件的,并非所有的DOS版本都支持通配符,2.1版仅支持".",3.0以上版才支持"*"。考虑到现在所使用的DOS版本都在3.3以上,所以大家可以不必判断DOS版本而放心使用通配符。 下面这两个程序演示了这两个功能的使用方法,对于我们平时编制程序来讲,这两个功能其实并不常用,所以大家对它们的用法有些印象也就可以了,不必深究。 |
|||||||||||||||||||||
CHANAME. DATA FCB1 DRIVE1 OLD_NAME OLD_EXT NEW_NAME NEW_EXT MSG DATA CODE MAIN |
ASM SEGMENT ASSUME LABEL ENDS SEGMENT ASSUME PROC MOV MOV MOV MOV INT |
DS:DATA BYTE DB 0 DB 'CONFIG ' DB 'SYS' DB 5 DUP(0) DB 'ABCDEFGH' DB 'LCS' DB 'OK!!!',0DH,0AH,24H CS:CODE FAR AX,DATA DS,AX AH,17H DX,OFFSET FCB1 21H |
;驱动器号,0:当前 1:A 2:B ... ;文件原名 ;原扩展名 ;新文件名 ;新扩展名 ;选择DOS的17H功能 ;DX指向特殊的FCB ;将文件改名 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |