目录 上一页 下一页 下一章

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

  我们给出的命令行参数均被DOS作为文件名放在这两个FCB中,由于只有两个FCB,所以DOS只能处理两个参数,而且如果参数中出现了"/"之类的字符,那么DOS就会认为给出的参数是不合法的文件名而不予处理。请做下面的实验:
C:\ASM\>debug tasm.exe aaa /b ccc[Enter]
-d0[Enter]
1027:0000CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 92 09 8A 03. ........O.....
1027:001092 09 17 03 92 09 81 09-01 04 01 00 02 FF FF FF................
1027:0020FF FF FF FF FF FF FF FF-FF FF FF FF 18 10 4C 01..............L.
1027:003097 0D 14 00 18 00 27 10-FF FF FF FF 00 00 00 00......'.........
1027:004007 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................
1027:0050CD 21 CB 00 00 00 00 00-00 00 00 00 00 41 41 41.!...........AAA
1027:006020 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20        .....   
1027:007020 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

目录 上一页 下一页 下一章