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

如何为Marie Simulator整数除法程序添加非正输入错误处理?

Marie Simulator 正整数除法实现(含错误处理)

需求:编写Marie Simulator程序,实现正整数X与Y的整数除法,通过减法算法计算商和余数并输出;若X或Y≤0,输出999作为错误提示。现有基础代码,但不知道如何集成错误判断与输出逻辑,需要完善。

修正后的完整代码

ORG 100
; 输入被除数X并存储到A
Input
Store A
; 输入除数Y并存储到B
Input
Store B

; --------------------------
; 错误检查:X≤0 或 Y≤0则输出999
; --------------------------
; 判断X(A)是否>0,若不是则跳转到错误分支
Load A
Skipcond 800
Jump Error
; 判断Y(B)是否>0,若不是则跳转到错误分支
Load B
Skipcond 800
Jump Error

; --------------------------
; 减法除法计算:商存在C,余数最终保留在A中
; --------------------------
Loop, Load A
Subt B
; 若A-B≥0,跳过跳转指令,继续累加商
Skipcond 800
Jump EndLoop
Store A       ; 更新被除数为A-B的结果
Load C
Add One
Store C       ; 商值加1
Jump Loop

EndLoop, Load C
Output        ; 输出商
Load A
Output        ; 输出余数
Jump HaltProg ; 跳转到程序结束

; 错误处理分支:输出错误码999
Error, Load ErrCode
Output

HaltProg, Halt

; 数据存储区
C,       DEC 0     ; 存储商的初始值
A,       DEC 0     ; 存储被除数X,最终存储余数
B,       DEC 0     ; 存储除数Y
One,     DEC 1     ; 用于商累加的常量1
ErrCode, DEC 999   ; 错误提示码

代码关键说明

  • 错误检查逻辑:
    • 利用Marie的Skipcond 800指令判断寄存器值是否大于0(指令规则:800对应>0、400对应=0、000对应<0),只要X或Y不满足正整数条件,直接跳转到错误分支输出999。
  • 减法除法逻辑:
    • 通过循环执行A = A - B,每成功完成一次减法(结果≥0)就将商C加1,直到A小于B时退出循环,此时C为商,剩余的A就是余数。
  • 输出逻辑:
    • 正常计算完成后先输出商,再输出余数;错误触发时直接输出999,避免后续计算执行。
  • 语法修正:原代码中的If/Then/EndIf伪语法不符合Marie指令规范,改用Jump+Skipcond实现分支;同时修正了Halt与Output的顺序错误,保证指令执行流程正确。

内容的提问来源于stack exchange,提问作者Legenda Seenoevil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:37:36