You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LC3汇编代码报错:第28行.END前出现未识别标签或语法错误

错误原因

你遇到的报错是两个规则冲突导致的:

  • .END是LC3汇编的汇编器伪指令,仅用来告诉汇编器「源代码到这里结束」,本身不会被翻译成任何CPU可执行的机器指令,不能出现在程序的运行时代码逻辑中。
  • 你把.END直接放在EOP标签的下一行,而代码中多处用JSR EOP试图跳转到EOP位置执行指令,汇编器扫描到EOP指向的位置没有合法的可执行指令,只有伪指令.END,就会抛出对应语法错误。

另外你代码里还有一个隐性逻辑问题:JSR是跳转子程序指令,会自动把返回地址存入R7寄存器,而你的EOP是程序结束的入口,不需要返回,用JSR属于不必要的操作,后续也没有对应的RET返回指令,运行时会出现不可预期的异常。

修复方案

  1. 在EOP标签下方添加LC3的合法停机指令HALT(等价于TRAP x25),作为程序执行到结束位置的实际运行指令。
  2. 将.END伪指令单独放在整个源代码的最后一行,和运行时代码逻辑分隔开。
  3. 可选优化:把所有的JSR EOP替换为JMP EOP,直接跳转不需要存储返回地址,更符合程序结束的逻辑。

修复后的完整代码

.ORIG 0x300
NUMBER: .FILL x0006
NUMBER2: .FILL x0003
R1MAGG: .FILL x0999
UGUALI: .FILL 0x500
R1MIN: .FILL x0001
LD R1, NUMBER
LD R2, NUMBER2
;I stored in R1 and R2 2 numbers
;Now I compare them
NOT R2, R2
ADD R2, R2, #1
ADD R3, R1, R2
BRp R1MAGGIORE
BRn R1MINORE
LD R4, UGUALI
JMP EOP

R1MAGGIORE: 
    LD R4, R1MAGG
    JMP EOP

R1MINORE:  
    LD R4, R1MIN
    JMP EOP

EOP:
    HALT
.END

内容的提问来源于stack exchange,提问作者Shark44

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:24:00