【问题标题】:"Comma expected after operand 1" when defining a series of bytes in NASM?在 NASM 中定义一系列字节时,“操作数 1 后应有逗号”?
【发布时间】: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 uses times
  • @Jester 第 3.2.1 节 here。我猜问题是“从 NASM 2.15 开始”,因为那个版本似乎还不到一年。
  • 不错!这就是我通过浏览器缓存到旧手册的链接所得到的。那么问题就变成了,Ethan 是否使用了足够新的 nasm 版本?
  • 这与我从 nasm 2.14.02 收到的错误消息相同。所以确实,答案似乎是“升级,或者使用 TIMES 语法。”
  • @hobbs 那是我正在查看的文档,确实我应该在我的版本上使用 TIMES!

标签: assembly nasm x86-16


【解决方案1】:

将评论转换为答案:DUP 仅在 2.15 版(2020 年 6 月发布)中添加到 NASM。为了与旧版本兼容,请使用TIMES,例如times 64000 db 0xff.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2015-11-08
    • 2018-04-14
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多