Sjasm无法识别OUTPUT、DW汇编指令报错如何解决?
Sjasm v0.42c Z80汇编编译报错解决方案
报错根本原因
所有报错均由不符合Sjasm v0.42c语法规范的写法导致,具体问题如下:
- 伪指令格式错误:Sjasm v0.42c要求所有内置伪指令必须添加前导
.才能被识别,你代码里的output、db、dw、org都没有加前导点,汇编器会将其误判为自定义标签或者无效指令,直接触发第1、4、5条报错。 - 十六进制表示符错误:Sjasm中十六进制数的前缀为
$,#符号在Sjasm语法中用于引用宏参数,因此#fe会被汇编器识别为查找名为fe的标签,触发第3条Label not found: fe报错。 - 标签位置错误:END标签定义在代码块之外,属于无效作用域位置,会导致关联的伪指令识别异常。
修复后的完整代码
.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 END:
编译验证
修改后执行sjasm ejemplo1.asm即可正常编译生成目标bin文件,无报错。
内容的提问来源于stack exchange,提问作者Daniel Tkach
相关产品推荐
相关产品推荐

