2016-02-29 129 views
0

我目前正在尋找執行n power2函數的最佳方法。總之,MIPS中的代碼應該計算2n。 n是存儲在$a0中的正數。不過,截至目前,我的結果正在減少一個力量。MIPS彙編語言(Power2)

我嘗試

main: 

    # initialize 
    la $a0,3  #n counter 
    li $s0,2  #base number 
    li $s1,0  #calculated value 

While: 
    beq $a0,$zero,exit  #Checks if n is zero, if yes exit program 
    sllv $s1,$s0,$a0  #Shift left logical by n, this should do the math 2^n 

exit: 

Results from QtSpim

回答

3

「失敗」 是不是一個非常詳實的發言。無論如何,beg $a0,$zero,j Exit的正確語法是beq $a0, $zero, exit,但您甚至不需要檢查。您應該加載$s01而不是0因爲2^01sll $s0, 2, $a0應該是sllv $s0, $s0, $a0

+0

修復了問題和j退出代碼。它現在在QtSpim中運行,但遺憾的是,結果沒有被推到$ s0,如上面的結果圖所示。 –

+0

確保您在正確的位置檢查寄存器。使用'beq'代碼,除了用'1'加載'$ s0'外,代碼不會執行任何操作,無論如何,該代碼都可以工作。 – Jester

+0

我不確定你的意思是「正確的點」。我的QtSpim缺少的是沒有結果。 –