在MIPS汇编语言中添加分数的麻烦(Seg Fault)

时间:2016-09-07 21:58:15

标签: assembly mips mips32

我仍然是MIPS汇编语言编程的新手,我遇到了一些麻烦。我的任务是使用MIPS汇编语言创建一个Add函数,该函数使用一个比率数($ a0,$ a1)并使用有理算术规则将其添加到($ a2,$ a3)。我得到一个段错误,不知道为什么。这就是我目前所拥有的

rat_add:

addiu $sp, $sp, -4  # create space on the stack for $sp 
sw    $ra, ($sp)    # save $sp on the stack

sw $t0, ($a1)     # Storing value in $a1(denominator of the first) into $t0
sw $t1, ($a3)     # Storing value in $a3(denominator of the second) into $t1

mul $a0, $a0, $t1 # $a0 *= $t1
mul $a1, $a1, $t1 # $a1 *= $t1

mul $a2, $a2, $t0 # $a2 *= $t0
mul $a3, $a3, $t0 # $a3 *= $t0  

add $v0, $a0, $a2 # $v0 = $a0 + $a2
add $v1, $0, $a3  # Both denominators are the same, don't need to add them

lw    $ra, ($sp)    # restore $sp from the stack 
addiu $sp, $sp, +4  # release the stack space used for $sp

jr $ra

当我尝试运行程序时,我不确定为什么会出现这个seg错误。我猜它是来自堆栈指针,但我做了同样的事情,乘法和划分没有麻烦。任何帮助或建议将不胜感激。为了更好地说明我尝试做的是1/2 + 2/7 = 11/14

0 个答案:

没有答案