目录 上一页 下一页 下一章

-184- PC机汇编语言实战精解

只读取了"部分"数据,我们看一看究竟在读取哪个记录时出现了这个错误,列出FCB的内容:
-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.....
注意当前记录号
  当前记录号为06H,在上一次读取数据时它应该是05H,也就是说程序在读取第六个记录时出现了问题。我们知道这个文件只有5个完整的记录,第六个记录只有1BH个字节,这样一来错误码03H就很好理解了:若一个文件所剩的数据不足一个完整记录时,读取这些数据就会返回03H错误码。换言之,这个错误码告诉我们现在已经读到文件末尾了。我们列出读取到的数据,看看是不是如我们分析的那样:
-des:80[Enter]带下划线的数据恰好为1BH个
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................
  可以看到DTA中只有前1BH个字节是文件中的内容,其余的都是0。这就是03H错误码所说明的问题。
  跟踪至此这个文件的内容已经全部读取过了,这时FCB中的"当前记录号"为06H。在这种情况下如果我们继续执行"顺序读"功能会发生什么情况呢?
-t
AX=1403BX=0000CX=0001DX=0000SP=0000BP=001BSI=0000DI=0000
DS=2589ES=2579SS=2589CS=258CIP=0024 NV UP EI PL NZ NA PE NC
258C:0024B414MOV AH,14
-g=24 30
AX=1401BX=0000CX=0001DX=0000SP=0000BP=001BSI=0000DI=0000
DS=2589ES=2579SS=2589CS=258CIP=0030 NV UP EI PL NZ NA PO NC
258C:0030E2F2LOOP 0024
  DOS返回了另一个错误码01H,含义是已经读到了文件末尾。在这种情况下FCB和DTA中的数据会有什么变化呢?

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章