1

几年前,我曾经为 MS-DOS 操作系统编写 x86 汇编程序;它们中的大多数仍然未经修改地在 Windows CMD.EXE 命令处理器中运行。我的问题是关于这些程序中的两个具体点:

  • 程序参数位于程序段前缀中的偏移量 81H 处,最大长度为 127 个字符。

  • 程序返回的 ERRORLEVEL 值在 INT 21H 的终止程序功能 (4CH) 之前加载到 AL 寄存器中,因此它被限制在 0-255 范围内的值。

我意识到在 Windows XP 中,在 DOS 窗口中执行的命令可以处理高达 8 KB 大小的参数,并且可能会返回一个 32 位有符号值作为 ERRORLEVEL。所以我的问题是:旧式 MS-DOS 汇编程序是否有一种简单的方法可以访问 8KB 参数并返回 32 位 ERRORLEVEL 值?

是的,我知道一个符合 Windows 的汇编程序可以访问这些功能,但我想知道一个程序是否可以以一种非常简单的方式做到这一点......

4

1 回答 1

0

由于NTVDM,您的 16 位程序正在 32 位 Windows 上运行。越来越多的机器默认使用 64 位操作系统,而 64 位 Windows 甚至没有 NTVDM,所以它不再工作了。

我建议您将程序移植到 32 位或 64 位 Windows。

移植后,访问命令行很容易。WinMain 和 main 都将命令行作为参数。

于 2012-07-28T23:11:38.533 回答