【发布时间】:2020-10-07 01:24:09
【问题描述】:
根据 NASM 的文档,以下允许我在标签 Vid 处定义 64,000 个未初始化字节:
Vid resb 64000
根据后续文档,this 应该允许我将这些字节初始化为 0xFF:
Vid db 64000 dup (FFh)
然而,这会产生错误error: comma expected after operand 1。
我也试过了:
- 在符号名称
Vid之后添加一个冒号 - 使用
0或问号作为默认值而不是 FF(尽管 FF 是我的预期值) - 使用较少的字节数,例如
64 - 调整大小写
- 重新排列我的源文件,以便该指令出现在不同的部分,等等。
- 在 64000、dup 和 (FFh) 之间添加逗号 - 这显然不起作用
我在网上找不到 任何东西,表明此语法已更改或在某些情况下它不应该工作。
作为重要的背景,我正在编译为一个bin 文件,并在我的源代码中有cpu 8086 指令。
【问题讨论】:
-
不知道您在 nasm 文档中的哪里找到了
dup。那是masm语法。 nasm usestimes -
@Jester 第 3.2.1 节 here。我猜问题是“从 NASM 2.15 开始”,因为那个版本似乎还不到一年。
-
不错!这就是我通过浏览器缓存到旧手册的链接所得到的。那么问题就变成了,Ethan 是否使用了足够新的 nasm 版本?
-
这与我从 nasm 2.14.02 收到的错误消息相同。所以确实,答案似乎是“升级,或者使用 TIMES 语法。”
-
@hobbs 那是我正在查看的文档,确实我应该在我的版本上使用 TIMES!