加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

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

发布时间:2021-05-12 10:23:34 所属栏目:系统 来源:网络整理
导读:我决定不久前开始学习装配,所以我开始使用FASMW进行16位装配. HOwever,我最近得到了一台运行 Windows 7 64位的新计算机,现在程序组装的所有已编译的.COM文件都不再有效.他们给出一条错误消息,指出.COM与64位窗口不兼容. 32位程序集仍然可以工作,但是我宁愿

我决定不久前开始学习装配,所以我开始使用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的内存来玩“就是这样”.一切,你的整个堆和堆栈以及代码必须适合这个空间,正如我所理解的那样,这让你想知道有什么工作,真的.

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!