-194- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
ERR_EXIT: MAIN CODE |
MOV MOV INT OR JNZ MOV INC JMP MOV MOV MOV MOV MOV MOV MOV MOV INT MOV INT ENDP ENDS END |
AH,22H DX,OFFSET FCB2 21H AL,AL ERR_EXIT BX,DX WORD PTR [BX+21H] READ_REC BX,OFFSET FCB1 AX,WORD PTR [BX+10H] DX,WORD PTR [BX+12H] BX,OFFSET FCB2 WORD PTR [BX+10H],AX WORD PTR [BX+12H],DX AH,10H DX,OFFSET FCB2 21H AH,4CH 21H MAIN |
;将读入的数据写入"目标文件" ;数据正确地写入"目标文件"了吗? ;数据未能正确写入,转ERR_EXIT ;BX寄存器指向FCB2 ;FCB2的"随机记录号"减1 ;继续处理下一个记录 ;BX寄存器指向FCB1 ;取得"源文件"的长度 ;BX寄存器指向FCB2 ;令"目标文件"长度等于"源文件"长度 ;关闭"目标文件" ;结束进程 |
||||||||||||||||||
大家可以跟踪执行这两个功能,看看它们对FCB中的数据有哪些影响。仔细分析这个程序,就会发现使用随机存取功能可以很容易的读写文件中任意处的数据,看来如果我们将文件的结构规定的越简单,那么处理文件就会相对容易一些。 通过上面这几个程序例,我们会发现DOS提供的"顺序"和"随机"这两种存取方式存在一个共同的缺点就是无法一次读入多个记录,这很不便于我们编制程序。当然我们前面曾经讨论过一种解决方法,就是将一个记录的长度设为整个文件的长度,这样可以一次取到整个文件的数据。这个方法虽可行但不够灵活,有时我们需不定量的读取一批数据且又要保持记录的长度不变,那么使用这个方法就有所不便。所以我下面就想介绍一下DOS提供的又一组随机存取功能--随机块存取。 所谓块存取的意思就是说使用这一组功能可以指定一次读写的记录个数,比如一次从文件中读出16个记录,至于其它方面和随机存取功能相同,唯一要注意是就是要开辟出足够的DTA空间容纳这些数据。 |
|||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |