试图在MIPS中进行划分程序

时间:2015-02-18 00:42:28

标签: assembly mips division

我正在编写一个小程序来划分MIPS(主要是作为练习,我知道有一个伪指令,我用它进行测试)。由于某种原因,结果是它应该是的两倍或一半。我不确定为什么。

signextLoop:
     bge $t1 , $t0 ,  signextLoopEnd #will shift divisor until greater than dividend 
     sll $t1 , $t1 , 1
     j signextLoop
signextLoopEnd:

divi32:
    blt $t0 , $t1 shift32 #if dividend < divisor jump to shifting
    xor $t0 , $t0 , $t1
    addi $t4 , $t4 , 1
shift32:
    srl $t1 , $t1 , 1
    sll $t4 , $t4 , 1
    bgt $t0 , $zero , divi32 #if dividend > 0 keep dividing; else go to output

0 个答案:

没有答案