【问题标题】:Trying to figure out how marie simulator works试图弄清楚玛丽模拟器是如何工作的
【发布时间】:2021-09-15 16:58:12
【问题描述】:

我正在研究如何在 marie 模拟器中创建一个基本程序,这是伪代码

input A
input B

if A < B:
   x = A + B

else:
   x = A - B

在网上搜索后,我想出了这个

INPUT
store A
INPUT
store B
if, load A
add B
store X
else, load A
subt B
store X
OUTPUT
Halt
A, DEC 0
B, DEC 0
X, DEC 0
Y, DEC 0

谁能帮我找出正确且有效的代码?

【问题讨论】:

    标签: marie


    【解决方案1】:

    if 语句分为条件测试、then-part 和 else-part。

    您有 then-part 和 else-part 的代码,但没有条件测试。

    条件测试的目的是选择then-part和else-part之一。我们还想确保其中只有一个执行,因此根据需要阻止执行另一个。

    条件测试的完成方式是使用条件分支。条件分支的要点是,如果条件为假,则向前跳过,从而避免条件为假时的then-part,而在条件为真时执行then-part。

    在 C 中使用 if-goto-label 样式的程序集:

        if ( condition is false ) goto elsePartOfIf1;
        <then-part>
        goto endOfIf1;
    elsePartOfIf1:
        <else-part>
    endOfIf1:
    

    因此测试了一个条件,如果条件为假,则转到 if 语句的 else 部分,跳过 then 部分。在另一种情况下(条件为真),我们希望无法分支到 else 部分,而是简单地继续执行 then 部分。在then-part之后,我们必须跳过else-part,以便继续执行if语句之后的下一条语句,无论then-part或else-part是否执行,都应该执行next。

    要在 MARIE 中进行条件测试,您可以减去操作数并检查结果的符号。换句话说,我们可以通过从&lt; 关系的两边减去B,将A &lt; B 转换为A - B &lt; 0。这个减法很容易做到,&lt; 0 可以用 MARIE SkipCond 指令完成。 StackOverflow 上还有其他答案可以更直接地处理使用 MARIE 的 SkipCond 指令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多