-204- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
我们给出的命令行参数均被DOS作为文件名放在这两个FCB中,由于只有两个FCB,所以DOS只能处理两个参数,而且如果参数中出现了"/"之类的字符,那么DOS就会认为给出的参数是不合法的文件名而不予处理。请做下面的实验: | |||||||||||||||||||||
C:\ASM\>debug tasm.exe aaa /b ccc[Enter] | |||||||||||||||||||||
-d0[Enter] | |||||||||||||||||||||
1027:0000 | CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 92 09 8A 03 | . ........O..... | |||||||||||||||||||
1027:0010 | 92 09 17 03 92 09 81 09-01 04 01 00 02 FF FF FF | ................ | |||||||||||||||||||
1027:0020 | FF FF FF FF FF FF FF FF-FF FF FF FF 18 10 4C 01 | ..............L. | |||||||||||||||||||
1027:0030 | 97 0D 14 00 18 00 27 10-FF FF FF FF 00 00 00 00 | ......'......... | |||||||||||||||||||
1027:0040 | 07 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ................ | |||||||||||||||||||
1027:0050 | CD 21 CB 00 00 00 00 00-00 00 00 00 00 41 41 41 | .!...........AAA | |||||||||||||||||||
1027:0060 | 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 | ..... | |||||||||||||||||||
1027:0070 | 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 | ........ | |||||||||||||||||||
很明显,"/b"和"ccc"均未出现。由此我们可以看出,使用这两个FCB处理命令行参数是有很多限制的。事实上很多程序根本不使用这样的方法处理命令行参数,而是采用了另一种方法。我们将在本章的后面详细讨论,这里我们给出一个示例程序,以说明这两个FCB的应用方法: | |||||||||||||||||||||
LIST.ASM DATA LINE MSG DATA CODE MAIN |
SEGMENT ASSUME DB DB ENDS SEGMENT ASSUME PROC MOV MOV MOV MOV INT OR JNZ MOV MOV MOV |
DS:DATA ? 'Press any key to con CS:CODE FAR AX,DATA ES,AX DX,5CH AH,0FH 21H AL,AL ERR_EXIT BX,DX WORD PTR [BX+0EH],1 SI,80H |
tinue...',24H ;初始化ES寄存器指向数据段 ;DX指向第一个未打开的FCB ;打开这个FCB ;文件正确打开了吗? ;若没有打开文件,转ERR_EXIT ;BX指向已经打开的FCB ;设置记录长度为1字节 ;SI寄存器指向缺省的DTA |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |