【发布时间】:2013-10-15 17:56:06
【问题描述】:
我在 Windows 7 64 位上使用 Flat Assembler。我正在尝试编译一个简单的程序,但它正在编译为 16 位程序。有些程序似乎编译得很好,但是在搜索了一段时间的 hello world 示例后,程序没有运行。
org 0x100
mov dx, msg ; the address of or message in dx
mov ah, 9 ; ah=9 - "print string" sub-function
int 0x21 ; call dos services
mov ah, 0x4c ; "terminate program" sub-function
int 0x21 ; call dos services
msg db 'Hello, World!', 0x0d, 0x0a, '$'
我应该怎么做才能防止它编译为 16 位程序?
【问题讨论】:
-
您必须先停止编写 16 位汇编代码。然后使用
use32指令。 -
FASM 汇编器可能有一个 32 位格式的命令行标志。如果您使用 32 位寄存器和 32 位代码,它会有所帮助吗?把它扔出去……
-
@tommycake50 - FASM 根本没有命令行标志。它完全编译源代码中的内容,并且相同的源始终提供相同的二进制文件。