2016-02-29 124 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缺少的是没有结果。 –