LMC汇编程序问题:输入两数取较大值无输出求助
LMC程序无输出问题排查与修复
问题出在两个关键点:
1. 注释符号不兼容
绝大多数LMC汇编器不支持#作为注释标记,你代码里的#NUM1 > NUM2这类行会被解析成无效指令或错误标签,直接打乱程序的内存布局。原本该跳转到NUM2SHOW的指令无法定位到正确位置,最终导致输出操作无法执行。
2. 冗余的判断逻辑
第一次减法判断后,如果BRP NUM2SHOW未触发,就说明NUM2 < NUM1,完全没必要再做一次减法和跳转判断,直接输出NUM1即可。多余的代码不仅无意义,还可能增加出错概率。
修复后的代码
INP STA NUM1 INP STA NUM2 ; 用NUM2减去NUM1,判断数值大小 SUB NUM1 BRP NUM2SHOW ; 若NUM2 >= NUM1,跳转输出NUM2 ; 执行到此处则表示NUM1更大,直接输出 LDA NUM1 OUT HLT NUM2SHOW LDA NUM2 OUT HLT NUM1 DAT NUM2 DAT
测试验证
输入4和5时,SUB NUM1得到结果1(正数),触发BRP NUM2SHOW,程序会跳转到NUM2SHOW标签处,加载NUM2的值并输出5,随后终止,完全符合预期。
内容的提问来源于stack exchange,提问作者Yesu_Desu
相关产品推荐
相关产品推荐

