![]() | 第7章 文件控制块 | -175- | |||||||||||||||||||
-d0 24 | 当前驱动器 | 文件名及扩展名 | |||||||||||||||||||
258A:0000 | 00 43 4F 4E 46 49 47 20-20 53 59 53 00 00 00 00 | .CONFIG SYS.... | |||||||||||||||||||
258A:0010 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ................ | |||||||||||||||||||
258A:0020 | 00 00 00 00 00 | ..... | |||||||||||||||||||
用"P"命令跟踪INT 21指令,然后再观察打开之后的FCB,可以看到先前为0的项目域均由DOS填入了相应的数据: | |||||||||||||||||||||
-P (执行INT 21) | |||||||||||||||||||||
AX=0F00 | BX=0000 | CX=004F | DX=0000 | SP=0000 | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=258A | ES=257A | SS=258A | CS=258D | IP=000C | NV UP EI PL NZ NA PO NC | ||||||||||||||||
258D:000C | 0AC0 | OR AL,AL | |||||||||||||||||||
-d0 24 | 当前驱动器 | ||||||||||||||||||||
258A:0000 | 03 43 4F 4E 46 49 47 20-20 53 59 53 00 00 80 00 | .CONFIG SYS.... | |||||||||||||||||||
258A:0010 | 9B 02 00 00 38 21 4C 85-40 02 42 DE 02 97 01 0F | ....8!L.@.B..... | |||||||||||||||||||
258A:0020 | 00 00 00 00 00 | ..... | |||||||||||||||||||
FCB的改变是很明显的,首先驱动器号由00H变为03H,说明DOS查出当前驱动器是"C:"。当前记录块号与记录长度都填入了相应值。值得注意的是日期和时间域的填写,这个文件的建立日期是2138H,时间是854CH,这两个数据是如何表示真正的日期和时间的呢? MicroSoft在设计DOS时表现得很"小气",它仅给文件的日期域和时间域各分配了两个字节,所以年月日与时分秒都只能用这两个字节中的一些位来表示。日期域的16个位是这样分配的: |
|||||||||||||||||||||
bit: | F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
| | 年份 | | | | | 月(1-12) | | | | | 日(1-31) | | | |||||||||||||
2138: | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | |||||
| | 年份:1980+16=1996 | | | | | 月份:9 | | | | | 日:18 | | | |||||||||||||
所以这个文件建立的日期是96年9月18日。年份占据了7个位,最大为127,也就是说我们可以在公元2107年前正常地建立文件,2107年之后建立的文件都将返回到1980年。好在这个限制还是很长的,我们有生之年不会遇到这个问题。但有个问题还是很有趣的,DOS在列目录时总是忽略"世纪",它总是给出96年而不给出1996年,所以如果我们在2000年还在使用DOS的话就会发现所有文件都是00年某月某日建立的。不知道DOS为什么被设计成这样,难道它已经预见到自己活不到21世纪了吗? 时间域的分配也是如此: |
|||||||||||||||||||||
bit: | F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
| | 小时(0-23) | | | | | 分(0-59) | | | | | 秒/2(0-29) | | | |||||||||||||
854C: | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | |||||
| | 小时:16 | | | | | 分:42 | | | | | 秒:24 | | | |||||||||||||
这个文件建立的时间是16:42:24。 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |