几年前我曾经为MS-DOS操作系统编写x86汇编程序;其中大多数仍然在Windows CMD.EXE命令处理器中未经修改运行。我的问题是关于这些计划中的两个具体要点:
程序参数位于程序段前缀偏移81H处,最大长度为127个字符。
程序返回的ERRORLEVEL值在INT 21H的Terminate Program功能(4CH)之前加载到AL寄存器中,因此它被限制在0-255范围内的值。
< / LI>我意识到在Windows XP中,在DOS窗口中执行的命令可以处理最大8 KB大小的参数,并且可以返回32位有符号值作为ERRORLEVEL。所以我的问题是:是否有一种 SIMPLE 方式,旧式MS-DOS汇编程序可以访问8KB参数并返回32位ERRORLEVEL值?
是的,我知道符合Windows的程序集程序可以访问这些功能,但我想知道一个程序是否可以用一种非常简单的方式来实现...
答案 0 :(得分:0)
由于NTVDM,您的16位程序在32位Windows上运行。默认情况下,越来越多的机器正在获得64位操作系统,而64位Windows甚至没有NTVDM,因此它将不再起作用。
我建议您将程序移植到32位或64位Windows。
移植后,轻松访问命令行。 WinMain和main都有命令行作为参数。