![]() | 第7章 文件控制块 | -197- | |||||||||||||||||||
ERR_EXIT: MAIN BUFFER CODE |
MOV MOV XOR INT MOV MOV INT MOV INT ENDP LABEL ENDS END |
AH,28H DX,BX CX,CX 21H AH,10H DX,OFFSET FCB2 21H AH,4CH 21H BYTE MAIN |
;利用"随机块写"功能 ;修改"目标文件"的长度 ;关闭"目标文件" ;结束进程 |
||||||||||||||||||
以下是这个程序的跟踪结果: C:\ASM\>DEBUG FCBCOPY.EXE [Enter] |
|||||||||||||||||||||
g=0 3d[Enter] | |||||||||||||||||||||
AX=2703 | BX=0000 | CX=0006 | DX=0000 | SP=0000 | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=15F1 | ES=15E1 | SS=15F1 | CS=15F6 | IP=003D | NV UP EI PL ZR NA PE NC | ||||||||||||||||
15F6:003D | 3C03 | CMP AL,03 | |||||||||||||||||||
执行随机块读功能,可以看到AL寄存器返回错误码03H,说明DOS没有读到完整的7个记录,只读到了6个记录。你可以列出DTA中的内容观察一下,看看是否读入了完整的CONFIG文件。 | |||||||||||||||||||||
g=3d 4b[Enter] | |||||||||||||||||||||
AX=2800 | BX=0000 | CX=0006 | DX=0025 | SP=0000 | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=15F1 | ES=15E1 | SS=15F1 | CS=15F6 | IP=004B | NV UP EI PL ZR NA PE NC | ||||||||||||||||
15F6:004B | 0AC0 | OR AL,AL | |||||||||||||||||||
随机块写功能正常地执行了,有6个记录写入目的文件中,我们现在看看目的文件的长度是多少: | |||||||||||||||||||||
-d25 4a[Enter] | |||||||||||||||||||||
15F1:0020 | 03 43 4F-4E 46 49 47 20 20 54 58 | .CONFIG TX | |||||||||||||||||||
15F1:0030 | 54 00 00 80 00 00 03 00-00 54 21 94 4B 40 02 02 | T........T!.K@.. | |||||||||||||||||||
15F1:0040 | 59 07 60 B8 0F 06 06 00-00 00 00 | Y.`........ | |||||||||||||||||||
文件长度为300H字节,比实际长度667字节要大,所以我们需要调整一下目的文件的长 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |