⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page184.html

📁 李春生的汇编书籍
💻 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="page183.html">上一页</a> <a href="page185.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>-184-</td><td></td> <!页码>
<td colspan=6>PC机汇编语言实战精解</td><td colspan=4></td><td colspan=6 align="right"><img src="icons/flag.gif"></td> <!书名>
<td></td><td></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=18>
只读取了"部分"数据,我们看一看究竟在读取哪个记录时出现了这个错误,列出FCB的内容:
</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&nbsp;&nbsp;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=2></td><td colspan=10><font face="楷体_GB2312" size=2>注意当前记录号</font></td><td></td><td colspan=5></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  当前记录号为06H,在上一次读取数据时它应该是05H,也就是说程序在读取第六个记录时出现了问题。我们知道这个文件只有5个完整的记录,第六个记录只有1BH个字节,这样一来错误码03H就很好理解了:若一个文件所剩的数据不足一个完整记录时,读取这些数据就会返回03H错误码。换言之,这个错误码告诉我们现在已经读到文件末尾了。我们列出读取到的数据,看看是不是如我们分析的那样:
</td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=5>-des:80</td><td colspan=13><font face="楷体_GB2312" size=2>带下划线的数据恰好为1BH个</font></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=18>
  可以看到DTA中只有前1BH个字节是文件中的内容,其余的都是0。这就是03H错误码所说明的问题。<br>
  跟踪至此这个文件的内容已经全部读取过了,这时FCB中的"当前记录号"为06H。在这种情况下如果我们继续执行"顺序读"功能会发生什么情况呢?
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>-t</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>AX=1403</td><td colspan=2>BX=0000</td><td colspan=2>CX=0001</td><td colspan=2>DX=0000</td><td colspan=2>SP=0000</td><td colspan=2>BP=001B</td><td colspan=2>SI=0000</td><td colspan=2>DI=0000</td><td colspan=2></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>DS=2589</td><td colspan=2>ES=2579</td><td colspan=2>SS=2589</td><td colspan=2>CS=258C</td><td colspan=2>IP=0024</td>
<td colspan=5>NV UP EI PL NZ NA PE NC</td><td colspan=3></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>258C:0024</td><td colspan=2>B414</td><td colspan=6>MOV AH,14</td><td colspan=4></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>-g=24 30</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>AX=1401</td><td colspan=2>BX=0000</td><td colspan=2>CX=0001</td><td colspan=2>DX=0000</td><td colspan=2>SP=0000</td><td colspan=2>BP=001B</td><td colspan=2>SI=0000</td><td colspan=2>DI=0000</td><td colspan=2></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>DS=2589</td><td colspan=2>ES=2579</td><td colspan=2>SS=2589</td><td colspan=2>CS=258C</td><td colspan=2>IP=0030</td>
<td colspan=5>NV UP EI PL NZ NA PO NC</td><td colspan=3></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>258C:0030</td><td colspan=2>E2F2</td><td colspan=6>LOOP 0024</td><td colspan=4></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  DOS返回了另一个错误码01H,含义是已经读到了文件末尾。在这种情况下FCB和DTA中的数据会有什么变化呢?
<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 &copy; 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="page183.html">上一页</a> <a href="page185.html">下一页</a> <a href="page207.html">下一章</a></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -