如何在Marie汇编中实现if条件,修复带特殊逻辑的乘法代码问题
问题根源
你的条件逻辑存在两个核心错误:
- Marie汇编中
Skipcond指令每次仅能跳过1条后续指令,你写的Skipcond 800仅能跳过第一个Add one,剩下的两个Add one无论x是否为0都会执行,自然会把非0的x值改大,导致乘法结果错误 Skipcond 800的触发逻辑是「当AC寄存器值>0时跳过下一条指令」,和你需要的「仅x=0时执行加3」的逻辑完全不匹配
正确实现方案
用Skipcond+Jump的组合跳过整个加3代码块即可,调整后的完整可运行代码如下:
ORG 512 Input Store x Skipcond 400 / 若AC(当前存储输入的x值)等于0,跳过下一条Jump指令 Jump read_y / x不等于0,直接跳转到读取y的逻辑,不修改x / 仅x=0时会执行以下3行加3逻辑 Add one Add one Add one Store x read_y, Input Store y loop,Load z Add x Store z Load y Subt one Store y Skipcond 400 Jump loop Load z Output Halt x, DEC 0 y, DEC 0 one, DEC 1 z, DEC 0
内容的提问来源于stack exchange,提问作者Jeenzoo KT
相关产品推荐
相关产品推荐

