2017-09-25 39 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.直接或跳轉到執行該系統調用的代碼中的某個其他位置。