MARIE Assembly if else编写问题:实现x=3与y=5比较后输出1
MARIE汇编多条件分支代码实现
核心原理
MARIE没有原生的if else语法,所有分支逻辑都通过SKIPCOND条件跳过指令配合JUMP跳转指令实现,SKIPCOND常用参数对应判断逻辑如下:
SKIPCOND 800:累加器AC值>0时,跳过下一条指令SKIPCOND 400:累加器AC值=0时,跳过下一条指令SKIPCOND 000:累加器AC值<0时,跳过下一条指令
完整可运行代码
你的需求是只要X不等于Y就输出1,对应X-Y不等于0的情况,补全后的代码如下:
LOAD X SUBT Y / 判断X-Y是否为0,为0则说明X=Y,直接结束 SKIPCOND 400 JUMP PRINT_ONE HALT PRINT_ONE, LOAD ONE OUTPUT HALT / 变量和常量定义 X, DEC 3 Y, DEC 5 ONE, DEC 1
代码执行逻辑说明
- 先加载X的值减去Y的值,计算结果存入累加器AC
- 执行
SKIPCOND 400:如果AC为0(X=Y),就跳过下一条JUMP PRINT_ONE指令,直接执行HALT结束程序 - 如果AC不为0(即X>Y或X<Y),就会执行
JUMP PRINT_ONE跳转到输出逻辑,加载常量1输出后结束程序 - 你原本的初始代码只处理了X>Y的分支,漏掉了X<Y的判断逻辑,调整为识别X=Y的反向判断即可覆盖所有需求场景。
内容的提问来源于stack exchange,提问作者Cplusnewbie
相关产品推荐
相关产品推荐

