gpt4 book ai didi

windows - 64 位 Windows 上的 16 位程序集?

转载 作者:行者123 更新时间:2023-12-03 06:37:42 30 4
gpt4 key购买 nike

不久前我决定开始学习汇编,所以我从 16 位汇编开始,使用 FASM .

但是,我最近得到了一台运行 Windows 7 64 位的全新计算机,现在该程序组装的已编译 .COM 文件不再起作用。他们给出了一条错误消息,指出 .COM 与 64 位不兼容。

32 位程序集仍然可以工作,但我宁愿从 16 位程序开始,然后逐步提高...

是否可以在 Windows 7 上运行 16 位程序?或者有具体的编译方法吗?或者我应该放弃并跳到 32 位?

最佳答案

不能使用 16 位汇编的原因是 16-bit subsystem has been removed来自所有 64 位版本的 Windows。

解决这个问题的唯一方法是安装类似 DOSBox 的东西,或虚拟机包,例如 VirtualBox然后安装FreeDOS进入那个。这样,无论如何你都可以获得真正的 DOS。 ( NTVDM is not true DOS .)

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

此外,对于 16 位汇编,您还需要考虑各种各样的事情,例如 memory model正在使用。我可能是错的,但我相信 DOS 给你 64K 内存来玩“仅此而已”。据我了解,所有东西,你的整个堆和堆栈以及代码都必须适合这个空间,这让你想知道任何东西到底是如何工作的。

关于windows - 64 位 Windows 上的 16 位程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620670/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com