【发布时间】:2017-09-25 17:12:02
【问题描述】:
我正在编写一个程序来确定一个整数是偶数还是奇数。该程序首先要求用户输入一个整数,并且应该根据该整数是什么打印“偶数”和“奇数”。我在创建 If-else 语句时遇到问题。
语句应该是,如果$t2=$t0,输出“Odd”,否则,输出“Even”。这是我现在无法使用的代码($t1=1, $t2=user's integer AND'd with 1,odd_str="Odd", even_str="Even"):
bne $t2, $t1, L1
li $v0, 4
la $a0, odd_str
syscall
L1:
li $v0, 4
la $a0, even_str
syscall
奇数的输出是“OddEven”,偶数的输出是“Even”。任何想法如何解决这个问题?
【问题讨论】:
-
代码看起来对我有用。 (输出不正确,但代码有效)。您还可以检查调试器、代码的工作方式以及输出不符合预期的原因。但它确实有效,实际上我还没有看到有效的机器代码,这会让 CPU 拒绝它执行,从来没有发生过。它总是执行它,并执行指令指定的操作。为避免某些代码执行,请不要执行它。例如跳到别处。此外,对于高级程序员来说,无需 if/else 即可轻松创建此任务,只需使用小指针数组,因此代码将只有单个 exec.flow。
-
在调试器中单步执行您的代码,看看它是如何通过的。另请注意,这两个块是相同的,只是它们传递给
syscall的指针不同,因此您可以将其考虑在内。