params.pas
来自「Turbo Pascal 6.0编译器源码」· PAS 代码 · 共 89 行
PAS
89 行
unit Params;
{$F+,S-}
interface
function ParCount: Integer;
function ParStr(Index: Integer): string;
implementation
procedure ParStrCnt; near; assembler;
asm
MOV ES,PrefixSeg
MOV DI,80H
MOV CL,ES:[DI]
XOR CH,CH
INC DI
XOR BX,BX
@@1: JCXZ @@3
@@2: CMP ES:[DI].Byte,' '
JA @@3
INC DI
LOOP @@2
@@3: MOV SI,DI
JCXZ @@6
JMP @@5
@@4: CMP ES:[DI].Byte,' '
JBE @@6
CMP ES:[DI].Byte,'/'
JE @@6
@@5: INC DI
LOOP @@4
@@6: MOV AX,DI
SUB AX,SI
JZ @@7
INC BX
DEC DX
JNZ @@1
@@7:
end;
function ParCount: Integer; assembler;
asm
XOR DX,DX
CALL ParStrCnt
XCHG AX,BX
end;
function ParStr(Index: Integer): string; assembler;
asm
MOV DX,Index
OR DX,DX
JZ @@1
CALL ParStrCnt
JMP @@4
@@1: MOV AH,30H
INT 21H
CMP AL,3
MOV AX,0
JB @@4
MOV ES,PrefixSeg
MOV ES,ES:2CH
XOR DI,DI
CLD
@@2: CMP AL,ES:[DI]
JE @@3
MOV CX,-1
REPNE SCASB
JMP @@2
@@3: ADD DI,3
MOV SI,DI
MOV CX,256
REPNE SCASB
XCHG AX,CX
NOT AL
@@4: PUSH DS
PUSH ES
POP DS
LES di,@Result
CLD
STOSB
XCHG AX,CX
REP MOVSB
POP DS
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?