在64位Windows上进行16位汇编?

我决定不久前开始学习装配,所以我开始使用FASMW进行16位装配.

HOwever,我最近得到了一台运行
Windows 7 64位的新计算机,现在程序组装的所有已编译的.COM文件都不再有效.他们给出一条错误消息,指出.COM与64位窗口不兼容.

32位程序集仍然可以工作,但是我宁愿从16开始并继续工作……

是否可以在Windows 7上运行16位程序?或者是否有特定的方法来编译它们?或者我应该放弃并跳到32位而不是?

解决方法

您无法使用16位程序集的原因是因为所有64位版本的Windows中的
16-bit subsystem
has been removed.

解决这个问题的唯一方法是安装像DOSBox这样的东西,或者像VirtualBox这样的虚拟机软件包,然后安装FreeDOS.这样,无论如何你都会得到真正的DOS. (NTVDM is not true DOS)

就个人而言,我是否鼓励为DOS编写16位程序集?不.我使用32位甚至64位汇编 – 原因是不同的操作系统有一组不同的函数调用(称为ABI).因此,64位Linux应用程序的ABI与32位不同.不确定Windows是否属于这种情况.但是,我保证中断的含义可能不同.

此外,您还可以使用16位汇编来考虑各种事项,例如正在使用的内存模型.我可能错了,但我相信DOS会给你64K的内存来玩“就是这样”.一切,你的整个堆和堆栈以及代码必须适合这个空间,正如我所理解的那样,这让你想知道有什么工作,真的.

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注