【问题标题】:How to run old x86 DOS assembly programs in 64-bits Windows? [closed]如何在 64 位 Windows 中运行旧的 x86 DOS 汇编程序? [关闭]
【发布时间】:2012-05-10 01:04:21
【问题描述】:

几年前,我编写了一些 x86 DOS 汇编程序来辅助批处理文件编程。程序非常小; .COM 版本中大约有两三百字节。我现在正在更新和创建这些程序的新版本;但是,.COM 或 .EXE 可执行文件不能在 64 位 Windows 版本中运行。我需要知道最简单的方法来转换此类程序,以便它们在 64 位 Windows 中运行。我知道 DosBox 可能会这样做,但我需要我的程序在 Win cmd.exe 批处理文件中运行。任何人都可以帮助我吗?提前致谢!

【问题讨论】:

  • 没有简单的方法。将程序从 16 位代码转换为 32 位代码需要重写。几百字节应该不会太难吧?
  • 我在 Windows 7 x64 上使用 DosBox。它并不完美,但大多数事情都可以正常工作。
  • 对于不使用直接视频输出或很少中断服务的简单程序,可以试试"MS-DOS Player for Win32-x64 console"
  • @HansPassant:好的。我明白那个;但是,我必须重写什么?你能给我一个样本来说明我为实现这一目标所做的工作吗?非常感谢!

标签: windows assembly x86 dos


【解决方案1】:

Windows 64 位根本不允许 16 位程序。你必须另寻出路。

http://msdn.microsoft.com/en-us/library/bb756962.aspx

https://superuser.com/a/140956

x86 模拟器是用 Javascript 编写的,所以模拟是可行的;但是我怀疑移植或重写程序的工作要少得多。 http://bellard.org/jslinux/

【讨论】:

  • 好的,谢谢;我已经知道这一点:`所有 16 位...“应用程序”都应转换为 32 位或 64 位...”。我正在寻求解决此问题的解决方案。那么,我必须做些什么来转换我的旧 DOS 程序以便它们在 64 位 Windows 中运行?
  • @Aacini,您需要先将 16 位指令替换为 32 位或 64 位指令。我不确定如何从 COM 更改为 EXE。用 C 或其他语言重写程序可能更容易。
  • @Aacini,您也许还可以找到一个可以修改以满足您的目的的模拟器,不幸的是,它似乎也最想模拟操作系统。这是一个列表:thefreecountry.com/emulators/pc.shtml
  • 您可以运行 Windows XP Mode 并共享需要运行程序的磁盘。如果您不想与虚拟机共享物理磁盘,请考虑为此使用 Imdisk ltr-data.se/opencode.html/#ImDisk 创建一个 ramdisk。
猜你喜欢
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 2017-10-20
相关资源
最近更新 更多