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

MARIE程序逻辑错误排查:输入任意分数均输出F级问题

MARIE分数等级程序修复方案

核心错误解析

  1. 字符串输出未指定地址:开头的OUTPUT指令没有指向Grade字符串的起始地址,MARIE默认会输出AC寄存器的值,而非你定义的"Grade "字符串,必须写成OUTPUT Grade才能正确输出目标字符串。
  2. 比较逻辑与SKIPCOND指令完全不匹配:
    你想实现「分数<60则输出F」,但代码中SKIPCOND 400仅在AC=0(即分数=60)时跳过JUMP OutputF,其余所有情况(不管分数是50还是80)都会执行JUMP OutputF,直接输出F,这是导致所有输入都显示F的关键原因。

修正后的代码(附注释)

ORG 100

Start, OUTPUT Grade  / 指定字符串起始地址,输出"Grade "
INPUT                / 读取用户输入的十进制分数
STORE Score          / 存储分数到Score变量

/ 从最低等级开始判断:先判断是否<60 → F
LOAD Score
SUBT Sixty           / 计算 Score - 60
SKIPCOND 000         / 当AC>0(Score>60)时,跳过下一条JUMP指令
SKIPCOND 400         / 当AC=0(Score=60)时,也跳过下一条JUMP指令
JUMP OutputF         / 只有当AC<0(Score<60)时,才执行跳转输出F

/ 判断是否<70 → D(此时分数已>=60)
LOAD Score
SUBT Seventy         / 计算 Score -70
SKIPCOND 000         / Score>70则跳过跳转
SKIPCOND 400         / Score=70则跳过跳转
JUMP OutputD         / Score<70且>=60时,跳转输出D

/ 判断是否<80 → C(分数>=70)
LOAD Score
SUBT Eighty
SKIPCOND 000
SKIPCOND 400
JUMP OutputC

/ 判断是否<90 → B(分数>=80)
LOAD Score
SUBT Ninety
SKIPCOND 000
SKIPCOND 400
JUMP OutputB

/ 剩下的情况分数>=90 → A
JUMP OutputA

OutputA, LOAD LetterA
STORE OutputChar
JUMP PrintGrade

OutputB, LOAD LetterB
STORE OutputChar
JUMP PrintGrade

OutputC, LOAD LetterC
STORE OutputChar
JUMP PrintGrade

OutputD, LOAD LetterD
STORE OutputChar
JUMP PrintGrade

OutputF, LOAD LetterF
STORE OutputChar

PrintGrade, LOAD OutputChar
OUTPUT               / 输出等级字母,追加到"Grade "后
HALT

/ 变量定义
Score, DEC 0
Ninety, DEC 90
Eighty, DEC 80
Seventy, DEC 70
Sixty, DEC 60
LetterA, HEX 41      / ASCII 'A'
LetterB, HEX 42      / ASCII 'B'
LetterC, HEX 43      / ASCII 'C'
LetterD, HEX 44      / ASCII 'D'
LetterF, HEX 46      / ASCII 'F'
OutputChar, DEC 0

/ "Grade "字符串(以NULL结尾)
Grade, HEX 47        / 'G'
      HEX 72        / 'r'
      HEX 61        / 'a'
      HEX 64        / 'd'
      HEX 65        / 'e'
      HEX 20        / ' '
      HEX 00        / 字符串终止符

END

模拟器配置要求

确保MARIE模拟器的设置符合需求:

  • 输入框设置为Dec模式
  • 输出框设置为No Linefeeds(并勾选清除选项)

配置完成后,输入79时,程序会先输出"Grade ",再追加输出C,最终显示"Grade C"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:45:57