【发布时间】:2020-12-02 02:27:41
【问题描述】:
在 NASM 环境中运行以下 MASM 命令时出现错误:
MOV BYTE PTR [DI-02H],0FH
它给出一个错误和一个警告消息:
warning: 'PTR' is not a NASM keyword [-w+ptr]
error: symbol 'PTR' not defined
在这里我想知道 MASM 的“PTR”的 NASM 选项是什么。
【问题讨论】:
-
只需删除 PTR:
mov BYTE [DI-02h],0FH -
汇编语言是由汇编器、工具定义的,而不是目标(x86),所以你需要为与工具匹配的编程(汇编)语言编写代码。 (或询问该工具是否支持使用不同的编程语言)
-
你有一堆预先存在的 MASM 代码吗?如果你只修复这样的语法错误,它会组装,但如果你有像
mov eax, symbol这样的代码,它将无法工作。在 NASM 中,这是地址的 mov-immediate;在 MASM 中,这是一种负担。如果你小心翼翼地在 MASM 代码中始终使用mov eax, [symbol],那在 NASM 中意味着同样的事情,所以你可能会没事。如果你没有一堆现有的代码,首先用 NASM 语法编写。 -
见also。