2017-09-25 40 views
1

我正在编写一个程序来确定一个整数是偶数还是奇数。该程序首先要求用户输入一个整数,并根据该整数是什么来打印“偶数”和“奇数”。我无法创建If-else语句。MIPS if-else与打印问题

该语句应该是,如果$ t2 = $ t0,则输出“Odd”,否则输出“Even”。这是我现在已经不工作的代码($ T1 = 1,$ T2 =用户与1整数AND'd,odd_str = “奇”,even_str = “连”):

bne $t2, $t1, L1 
    li $v0, 4 
    la $a0, odd_str 
    syscall 
L1: 
    li $v0, 4 
    la $a0, even_str 
    syscall 

的奇数整数的输出是“OddEven”,偶数整数的输出是“Even”。任何想法如何解决这一问题?

+0

该代码看起来为我工作。 (输出不正确,但代码有效)。你也可以检查调试器,你的代码如何工作,以及为什么输出不符合预期。但它确实有效,实际上我还没有看到有效的机器码,这会让CPU拒绝执行,从来没有发生过。它总是执行它,并执行指令指定的内容。为了避免执行一些代码,请不要执行它。例如跳到其他地方。对于高级程序员也很容易,不用if/else就可以创建这个任务,只需使用小指针数组,这样代码就只有一个exec.flow。 – Ped7g

+0

在调试器中单步执行代码以查看它是如何经历的。另外请注意,除了传递给'syscall'的指针之外,这两个块是相同的,所以你可以把它分解出来。 –

回答

0

输出为奇数是“OddEven”

当然,因为没有什么是打印"Odd"字符串会使得程序终止后syscall。标签不是障碍 - 它们只是程序中位置的方便名称。

任何想法如何解决这个问题?

在希望程序终止的地方,执行系统调用10.直接或跳转到执行该系统调用的代码中的某个其他位置。