从 DOS 到 Windows10 汇编
From DOS to Windows 10 assembly
此代码将在 DOS 中打印 "Hello, world!" 作为 .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 位和我见过的 x86
和 x64
的 Helloworld 程序的所有琐碎示例都涉及链接去一些图书馆。
所以我的问题是 Windows 的这些更高版本是否仍遵循 ISR IO 模型,或者更简单地说,我如何将此示例转换为 "higher bitness"?
您不仅不能在 Windows 10 中这样做,而且实际上在任何 Windows 中 运行 处于保护模式的应用程序(Windows NT 3 和较新)- 应用程序无法直接访问中断和硬件。此外,可执行格式本身是 OS 依赖的。虽然有一些向后兼容性(例如 Win10 应该能够 运行 Win7 应用程序)但它绝对不会追溯到 DOS 天(.COM 格式根据定义仅限于实模式,在 Win NT 3 之前就死了)。
没有直接的方法将此代码转换为与 Win10 兼容。您需要使用 OS 提供的 API 来访问 interrupts/HW.
此代码将在 DOS 中打印 "Hello, world!" 作为 .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 位和我见过的 x86
和 x64
的 Helloworld 程序的所有琐碎示例都涉及链接去一些图书馆。
所以我的问题是 Windows 的这些更高版本是否仍遵循 ISR IO 模型,或者更简单地说,我如何将此示例转换为 "higher bitness"?
您不仅不能在 Windows 10 中这样做,而且实际上在任何 Windows 中 运行 处于保护模式的应用程序(Windows NT 3 和较新)- 应用程序无法直接访问中断和硬件。此外,可执行格式本身是 OS 依赖的。虽然有一些向后兼容性(例如 Win10 应该能够 运行 Win7 应用程序)但它绝对不会追溯到 DOS 天(.COM 格式根据定义仅限于实模式,在 Win NT 3 之前就死了)。
没有直接的方法将此代码转换为与 Win10 兼容。您需要使用 OS 提供的 API 来访问 interrupts/HW.