0

我试图弄清楚如何在玛丽模拟器中创建一个基本程序,这是伪代码

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

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

4

1 回答 1

0

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 中进行条件测试,您可以减去操作数并检查结果的符号。换句话说,我们可以通过从关系的两边减去来转换A < B为。这个减法很容易做,可以用 MARIE指令来做。StackOverflow 上还有其他答案可以更直接地处理使用 MARIE 的指令。A - B < 0B<< 0SkipCondSkipCond

于 2021-09-16T04:03:42.007 回答