2016-02-27 18 views
1

我試圖實現MIPS的Mips連續Divison

function_1: 

    while: 
     # a % 2 == 0 
     DIV $s0, $2 
     MFHI $t1 
     bne $t1, $0, exit 

     # b % 2 == 0 
     DIV $s1, $2 
     MFHI $t2 
     bne $t2, $0, exit 

     j while 
    exit: 

jr $ra 

出於某種原因連續的劃分的,因爲如果是連檢查工作,但如果b甚至檢查不起作用。即使ab都是偶數,while循環中的其餘指令也不會執行,並且a和b在調用函數後保持不變。

關於我做錯了什麼的輸入將會有所幫助。

謝謝!

回答

2

您可以通過andi $t0, $s2, 0x1檢查均勻度,如果$ s2是偶數,則會在$ t0中給出零結果。沒有必要使用div指令。另外div $s1, $2會將寄存器16($ s2)除以寄存器2($ v0),這可能不是你想要的。

+0

非常感謝你!我的問題是我使用了2美元。我沒有意識到這是一個註冊表 –