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 < 0
B
<
< 0
SkipCond
SkipCond