目录 上一页 下一页 下一章

第7章 文件控制块 -185-

-des:80[Enter]
2579:00800D 0A 0D 0A 5B 43 4F 4D 4D 4F 4E 5D 0D 0A 53 57....[COMMON]..SW
2579:009049 54 43 48 45 53 3D 2F-46 0D 0A 00 00 00 00 00ITCHES=/F.......
2579:00A000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
2579:00B000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
2579:00C000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
2579:00D000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
2579:00E000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
2579:00F000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
-d0 24[Enter]
15F1:000003 43 4F 4E 46 49 47 20-20 53 59 53 00 00 80 00.CONFIG  SYS....
15F1:00109B 02 00 00 38 21 4C 85-40 02 42 93 9B 61 B8 04....8!L.@.B..a..
15F1:002006 00 00 00 00.....
  可以看到DTA和FCB中的数据没有变化。至此关于错误码01H和03H的详细情况我们就已经全部搞清楚了,并没有什么很深奥的内容。那么错误码02H会在什么情况下返回呢?关于这个错误码我们给出的解释是"数据传输区超界",我们先给出一个假想的解释:当DTA的容量不足以装下一个完整的记录时,DOS就会返回这个错误码。这个解释是否正确,还要靠我们编制程序试验。在这里我不再给出试验程序,大家可以自己编制出来。
  有一点还要提醒大家注意,那就是缺省的DTA究竟有多大?回顾一下前面讨论的1AH功能,当使用这个功能设置新的DTA时DOS并未要求程序给出DTA的容量,那么是否可以说DOS会把从程序给出的DTA起始地址直至DTA所在段的末尾全部当做数据传输区呢?笔者分析是这样的。
  笔者这话说的不很肯定,因为笔者没有发现哪本书讨论过这个问题。笔者曾经试着把FCB中的记录长度设为129字节,然后利用缺省DTA读入一个记录,结果并未出现错误,第129个字节也被读入了。由此才得出了这样一个结论。那么什么情况下会出现DTA超界的错误,笔者认为如果把DTA设在接近一个段的边界时就有可能出现这样的错误。
  讨论到此关于"顺序读"功能大体上已经全部讲解完毕,按下来的任务就是研究如何将数据写入文件,这要用到DOS的一个新功能--顺序写。
功能号:15H
用 途:将数据写入文件
参 数:DS:DX = 打开的FCB起始地址
调 用:INT 21H
返 回:AL = 0 -- 写成功
    AL = 1 -- 盘已满(无法写)
    AL = 2 -- 写失败
  关于这个功能没有什么需要更多说明的,它和"顺序读"功能在用法上相近。我们给出一个示例程序FCB7.ASM演示这个功能的应用,通过这个程序你可以很好地掌握"顺序读写"功能的应用。这个程序的功能是将一个文本文件的内容完全变成小写后存入另一个文件中:

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章