【发布时间】:2016-08-25 20:39:12
【问题描述】:
此代码将打印“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 位上运行,而且我见过的 x86 和 x64 的 Helloworld 程序的所有简单示例都涉及链接到某个库。
所以我的问题是,这些更高版本的 Windows 是否仍然遵循 ISR IO 模型,或者更简单地说,我如何将此示例转换为“更高位”?
【问题讨论】:
-
如果你在完成基本的组装,在 Dosbox 或其他模拟器上运行可能会更好。
-
没有。 DOS 在将近 20 年前就死了,你不能在现代版本的 Windows 上运行这种类型的代码。所以我如何转换这个程序的答案是你不需要。进入本世纪。
-
是的,你必须重新开始学习 Windows API
-
中断 21h 是一个 DOS 函数。任何阅读“Mastering Turbo Assembler”(Tom Swan) 的人也会想使用 BIOS 调用,例如 INT 10h。见:en.wikipedia.org/wiki/INT_10H
标签: windows assembly x86 64-bit executable