从DOS到Windows 10程序集

时间:2016-04-30 19:45:36

标签: windows assembly x86 64-bit executable

此代码将打印“Hello,world!”在DOS中作为.COM可执行文件:

org 100h
mov dx,msg
mov ah,9
int 21h
mov ah,4Ch
int 21h
msg db 'Hello, world!',0Dh,0Ah,'$'

然而,它不会在Windows 10 64位上运行,我见过的x86x64的Helloworld程序的所有简单示例都涉及链接到某个库。

所以我的问题是,这些更高版本的Windows是否仍遵循ISR IO模型或更简单地如何将此示例转换为“更高位”?

1 个答案:

答案 0 :(得分:1)

您不仅不能在Windows 10中这样做,而且实际上在任何以受保护模式运行应用程序的Windows(Windows NT 3和更高版本)中都不能这样做 - 应用程序无法直接访问中断和HW。此外,可执行格式本身依赖于操作系统。虽然有一些向后兼容性(例如Win10应该能够运行Win7应用程序),但它定义不会延伸到DOS天(根据定义,.COM格式仅限于Real模式,在Win NT 3之前死亡)。 / p>

没有直接的方法将此代码转换为Win10兼容。您需要使用OS提供的API来访问中断/ HW。