📄 page185.html
字号:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第7章 文件控制块</title>
</head>
<body>
<style type="text/css">
body {
background-color: #c0c0c0;
}
table {
background-color: #c0c0c0;
line-height: 24px;
}
</style>
<!导航条>
<p><a href="content1.html">目录</a> <a href="page184.html">上一页</a> <a href="page186.html">下一页</a> <a href="page207.html">下一章</a></p>
<table border=0 align="center" width=800 frame="box" rules="none">
<!标尺行>
<tr>
<td width=3%></td><td width=6%></td><td width=1%></td> <!左侧空白>
<td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td>
<td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td>
<td width=1%></td><td width=6%></td><td width=3%></td> <!右侧空白>
</tr>
<!页眉行>
<tr height=60 valign="bottom">
<td></td><td></td><td></td>
<td colspan=6><img src="icons/flag.gif"></td><td colspan=4></td><td colspan=6 align="right">第7章 文件控制块</td> <!章节名>
<td></td><td>-185-</td><td></td> <!页码>
</tr>
<!页眉线>
<tr valign="top">
<td></td><td colspan=20><hr></td><td></td>
</tr>
<!正文>
<font face="宋体" lang="ZH-CN" size=3>
<tr height=20><td colspan=22></td></tr> <!顶部空白>
<tr>
<td></td><td></td> <!左边距>
<td colspan=5>-des:80</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:0080</td><td colspan=10><u>0D 0A 0D 0A 5B 43 4F 4D-4D 4F 4E 5D 0D 0A 53 57</u></td><td></td><td colspan=5>....[COMMON]..SW</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:0090</td><td colspan=10><u>49 54 43 48 45 53 3D 2F-46 0D 0A</u> 00 00 00 00 00</td><td></td><td colspan=5>ITCHES=/F.......</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:00A0</td><td colspan=10>00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00</td><td></td><td colspan=5>................</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:00B0</td><td colspan=10>00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00</td><td></td><td colspan=5>................</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:00C0</td><td colspan=10>00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00</td><td></td><td colspan=5>................</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:00D0</td><td colspan=10>00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00</td><td></td><td colspan=5>................</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:00E0</td><td colspan=10>00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00</td><td></td><td colspan=5>................</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>2579:00F0</td><td colspan=10>00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00</td><td></td><td colspan=5>................</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>-d0 24</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>15F1:0000</td><td colspan=10>03 43 4F 4E 46 49 47 20-20 53 59 53 00 00 80 00</td><td></td><td colspan=5>.CONFIG SYS....</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>15F1:0010</td><td colspan=10>9B 02 00 00 38 21 4C 85-40 02 42 93 9B 61 B8 04</td><td></td><td colspan=5>....8!L.@.B..a..</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>15F1:0020</td><td colspan=10>06 00 00 00 00</td><td></td><td colspan=5>.....</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
可以看到DTA和FCB中的数据没有变化。至此关于错误码01H和03H的详细情况我们就已经全部搞清楚了,并没有什么很深奥的内容。那么错误码02H会在什么情况下返回呢?关于这个错误码我们给出的解释是"数据传输区超界",我们先给出一个假想的解释:当DTA的容量不足以装下一个完整的记录时,DOS就会返回这个错误码。这个解释是否正确,还要靠我们编制程序试验。在这里我不再给出试验程序,大家可以自己编制出来。<br>
有一点还要提醒大家注意,那就是缺省的DTA究竟有多大?回顾一下前面讨论的1AH功能,当使用这个功能设置新的DTA时DOS并未要求程序给出DTA的容量,那么是否可以说DOS会把从程序给出的DTA起始地址直至DTA所在段的末尾全部当做数据传输区呢?笔者分析是这样的。<br>
笔者这话说的不很肯定,因为笔者没有发现哪本书讨论过这个问题。笔者曾经试着把FCB中的记录长度设为129字节,然后利用缺省DTA读入一个记录,结果并未出现错误,第129个字节也被读入了。由此才得出了这样一个结论。那么什么情况下会出现DTA超界的错误,笔者认为如果把DTA设在接近一个段的边界时就有可能出现这样的错误。<br>
讨论到此关于"顺序读"功能大体上已经全部讲解完毕,按下来的任务就是研究如何将数据写入文件,这要用到DOS的一个新功能--顺序写。
</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=3 align="center"><img src="icons/note.gif"></td>
<td colspan=15>
功能号:15H<br>
用 途:将数据写入文件<br>
参 数:DS:DX = 打开的FCB起始地址<br>
调 用:INT 21H<br>
返 回:AL = 0 -- 写成功<br>
AL = 1 -- 盘已满(无法写)<br>
AL = 2 -- 写失败
</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
关于这个功能没有什么需要更多说明的,它和"顺序读"功能在用法上相近。我们给出一个示例程序FCB7.ASM演示这个功能的应用,通过这个程序你可以很好地掌握"顺序读写"功能的应用。这个程序的功能是将一个文本文件的内容完全变成小写后存入另一个文件中:
</td>
<td></td><td></td> <!右边距>
</tr>
</font>
<!页脚线>
<tr valign="top">
<td></td><td colspan=20><hr></td><td></td>
</tr>
<!页脚>
<tr height=60 valign="top">
<td></td><td></td>
<td colspan=9><i>Copyright © 2004-2005 <a href="mailto:webmaster@nucstorm.com">Chunk Lee</a></i></td>
<td colspan=9 align="right"><i><a href="http://www.nucstorm.com" target="_top">www.nucstorm.com</a></i></td>
<td></td><td></td>
</tr>
</table>
<!导航条>
<p align="right"><a href="content1.html">目录</a> <a href="page184.html">上一页</a> <a href="page186.html">下一页</a> <a href="page207.html">下一章</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -