2016-12-03 98 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時不包括它!