Parameters 从程序集中的命令行读取文件名

Parameters 从程序集中的命令行读取文件名,parameters,command,line,x86-16,dosbox,Parameters,Command,Line,X86 16,Dosbox,我正在制作一个汇编程序(Intel 8086,DosBox),它正在读取其他文件。 在我的asm代码中,我有它的名称 File db 'myFile.FIL',0 我要做的一切就是编译并运行我的project.exe。但现在我想将文件名设置为命令行参数。 例如,如果我要写: project.exe file2.fil并按Enter键 我想读取“file2.fil”而不是“myFile.fil” 我该怎么做 project.exe file2.fil并按Enter键 您将发现名称“file2.f

我正在制作一个汇编程序(Intel 8086,DosBox),它正在读取其他文件。 在我的asm代码中,我有它的名称

File db 'myFile.FIL',0
我要做的一切就是编译并运行我的project.exe。但现在我想将文件名设置为命令行参数。 例如,如果我要写:

project.exe file2.fil
并按Enter键

我想读取“file2.fil”而不是“myFile.fil”

我该怎么做

project.exe file2.fil并按Enter键

您将发现名称“file2.fil”是存储在ProgramSegmentPrefix(PSP)中的命令行的一部分

当您的程序在256字节PSP处启动
DS
段寄存器点,并且命令行在此PSP内的偏移量128处启动时

第一个字节(偏移量128处)告诉您后面文本的长度。文本本身由回车码(13)终止,但不包括在前面提到的长度中。
文本的第一个字符(偏移量129)大部分是空格字符(32),因此在向DOS api传递以零结尾的字符串时不要包含它