2016-12-03 102 views
1

我正在制作一个从其他文件读取的汇编程序(Intel 8086,DosBox)。 里面的我的汇编代码我有它在从程序集中的命令行读取文件名

File db 'myFile.FIL',0 

的名字和我的一切都做到从文件中读取是编译和运行我project.exe。但是现在我想将文件名设置为命令行参数。 例如,如果我会写:

project.exe file2.fil并按下回车键

我想,而不是“myFile.FIL”,从“file2.fil”读

我怎么能这样做?

回答

1

project.exe file2.fil并按下回车键

你会发现名为 “file2.fil” 为存储在ProgramSegmentPrefix(PSP)命令行的一部分。

当您的程序启动DS段寄存器指向256字节的PSP并且命令行在此PSP内的偏移128处开始时。

第一个字节(在偏移量128处)告诉您接下来的文本的长度。文本本身由一个回车代码(13)终止,但不包括在前面提到的长度中。
文本的第一个字符(在偏移量129处)大多是一个空格字符(32),因此在将零结尾的字符串传递到DOS API时不包括它!