Sjasm:不能 assemble DW 或 OUTPUT 指令?

Sjasm: can't assemble DW or OUTPUT directive?

这是我的代码:

output "ejemplo1.bin"

db #fe
dw START
dw END

org #8500

START:
    ld a, [#8600]
    ld b, a
    ld a, [#8601]
    add a, b
    ld [#8602], a

    ret

结束: 这就是我在尝试编译它时得到的结果:

C:\Users\Daniel\Programming\MSX\asm>sjasm ejemplo1.asm
Sjasm Z80 Assembler v0.42c - www.xl2s.tk
ejemplo1.asm(1) : Unrecognized instruction: "ejemplo1.
ejemplo1.asm(3) : Label not found: fe
ejemplo1.asm(4) : Unrecognized instruction: start
ejemplo1.asm(5) : Duplicate labelname: dw

知道我做错了什么吗?

如果您阅读 manual 会有帮助。

主要错误:只有标签从第一列开始,在任何指令或伪指令前至少插入一个space或制表符。

ejemplo1.asm(1) : Unrecognized instruction: "ejemplo1.

output 被解释为标签,因此文件名被尝试作为指令。有趣的细节是点“.”。被当作​​分隔符。顺便说一句,根据示例,文件名不在引号中。

ejemplo1.asm(3) : Label not found: fe

db被解释为标签,也许#fe被解释为结构字段条目。 # 定义字段的长度,因此 fe 不被识别为数字,而是识别为标签。这种解释在我看来像是汇编程序中的错误。

ejemplo1.asm(4) : Unrecognized instruction: start

dw 被解释为标签,因此 start 被尝试作为指令。

ejemplo1.asm(5) : Duplicate labelname: dw

dw 再次被解释为标签,因为错误消息告诉我们它已经被定义(在之前的行中)。

注意:如果您更正代码并遇到新错误,请随时 post 提出新问题。您可能想将此添加到此问题,但不要删除当前内容,添加它并将其标记为添加。