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

MARIE汇编实现指定伪代码:SKIPCOND使用校验及Y*2实现咨询

问题修正与实现说明
  • Skipcond指令的配置错误修正
    MARIE的Skipcond指令会根据当前累加器AC的数值状态,决定是否跳过紧跟在后面的1条指令,常见的判定参数对应关系为:
    • 传入800:当AC值小于0时触发跳过
    • 传入400:当AC值等于0时触发跳过
    • 传入200:当AC值大于0时触发跳过
      你当前代码里的Skipcond 400不符合循环判定逻辑:计算X - 10存入AC后,我们需要的判定规则是:当X<10(即X-10 <0)时,不执行退出循环的跳转指令,继续走循环体;当X>=10(即X-10 >=0)时,跳转到循环结束位置。
      用Skipcond 400的话,只有X刚好等于10的时候才会跳过跳转,只要X<10(比如X=5,X-10=-5),都会直接执行跳转、提前退出循环,根本进不了循环逻辑。正确的配置应该换成Skipcond 800,在AC<0(即X<10)时跳过后面的退出跳转指令,进入循环体执行。
      除此之外代码还有两个遗漏:一是执行完循环体的X自增、输出操作后,必须加Jump Loop指令跳回循环判定的开头,重新检查X和10的大小关系,不然循环只会执行一次就直接向下走,达不到持续循环的效果;二是原来的变量声明里ONE标签后面用了句点,MARIE的标签分隔符要求用逗号,要把ONE. Dec 1改成ONE, Dec 1,不然会触发汇编语法错误。
  • Y乘以2的实现方式
    MARIE没有内置的乘法、移位指令,实现Y乘以2最简单的方式是利用数学等价关系:任何整数乘以2等价于自身累加一次。不需要额外的复杂逻辑,只需要先把Y加载到AC,再把Y的值和AC相加,此时AC中的值就是Y+Y=2*Y,直接输出即可。
修正后的完整代码
Input
Store X
Input
Store Y

Loop, Load X
Subt TEN
Skipcond 800
Jump Endloop
Load X
Add ONE
Store X
Output
Jump Loop

Endloop, Load Y
Add Y
Output

; 变量声明部分
X, Dec 0
Y, Dec 0
ONE, Dec 1
TEN, Dec 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 12:45:03