求实现两数比较后加减的可运行MARIE模拟器程序代码
MARIE 条件分支程序正确实现
你原来编写的代码没有实现if A < B的条件判断逻辑,会直接先执行加法再覆盖执行减法,无法得到正确结果。MARIE需要通过SkipCond指令配合减法操作实现大小比较跳转。
以下是可直接在MARIE模拟器运行的正确代码:
/ 输入并存储A、B INPUT STORE A INPUT STORE B / 比较A和B:计算A-B,根据结果符号判断大小 LOAD A SUBT B SkipCond 400 / 如果AC<0(即A<B),跳过下一条跳转指令,直接走加法分支 JUMP ELSE / 否则跳转到减法分支 / if分支:A < B时执行X = A+B IF, LOAD A ADD B STORE X JUMP END_IF / 执行完加法直接跳过减法分支 / else分支:A >= B时执行X = A-B ELSE, LOAD A SUBT B STORE X / 输出结果并终止 END_IF, LOAD X OUTPUT HALT / 变量声明 A, DEC 0 B, DEC 0 X, DEC 0
关键逻辑说明
- 用
LOAD A + SUBT B得到A和B的差值存入累加器AC SkipCond 400是MARIE内置的条件跳过指令,当AC值为负时正好对应A<B的场景,此时会跳过下一条跳转指令直接执行加法分支- 加法分支执行完成后必须加
JUMP END_IF,否则会继续执行后续的减法分支逻辑,导致结果被覆盖
内容的提问来源于stack exchange,提问作者Ginko
相关产品推荐
相关产品推荐

