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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:05