-180- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
-d0 24[Enter] | |||||||||||||||||||||
2589:0000 | 03 43 4F 4E 46 49 47 20-20 53 59 53 00 00 80 00 | .CONFIG SYS.... | |||||||||||||||||||
2589:0010 | 9B 02 00 00 38 21 4C 85-40 02 42 F4 04 61 B8 06 | ....8!L.@.B..a.. | |||||||||||||||||||
2589:0020 | 01 00 00 00 00 | ..... | |||||||||||||||||||
当前记录号已改变 | |||||||||||||||||||||
列出新的FCB,我们可以看到"当前记录号"由0变成了1,操作系统自动将记录指针指向了下一个记录。如果我们继续使用"顺序读"功能,那么文件的下一个记录将被送至DTA,刚才读入的数据将被覆盖。所以如果我们想要读入文件的所有数据,就可以利用一个循环,边读入数据边处理。这样做虽可行,但它并非是一个最佳的方案,我们一般的作法是设置更大的DTA取代缺省DTA,这样我们就有可能一次读入文件中所有的数据来处理,请看程序FCB5.ASM: | |||||||||||||||||||||
FCB5.ASM ;数据段定义与程序FCB1.ASM相同,此处省略 |
|||||||||||||||||||||
CODE MAIN |
SEGMENT ASSUME PROC MOV MOV MOV MOV INT MOV MOV MOV MOV INT OR JNZ MOV MOV MOV MOV |
CS:CODE FAR AX,CS DS,AX DX,OFFSET BUFFER AH,1AH 21H AX,DATA DS,AX DX,OFFSET MY_FCB AH,0FH 21H AL,AL ERR_EXIT BX,DX AX,[BX+10H] WORD PTR [BX+0EH],AX AH,14H |
;设置DS寄存器指向代码段 ;DX寄存器指向新的DTA ;设置一个新的DTA缓冲区 ;重新设置DS寄存器指向数据段 ;DX寄存器指向未打开的FCB ;打开一个文件 ;打开操作正确吗? ;没有正确打开文件,转ERR_EXIT结束 ;BX指向打开的FCB ;从FCB中取得文件长度 ;设置记录长度等于文件长度 ;从文件中读入一个记录 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |