MIPS:n选择k函数

MIPS:n选择k函数,mips,Mips,所以我现在正在用MIPS写一个计算器,我正在尝试写一个n选择k函数。 我想使用的算法是: 如果我想做5选择3,那么我将有一个循环,它是(5*4*3)/(3*2*1)。假设我已经有了乘法和除法函数,我将如何在MIPS中实现它 现在我有这个,但它根本不起作用: calnchoosek: move $t1, $a0 move $t2, $a2 move $t3, $a0 # copies for the counter move $t4, $a2 loop_top:

所以我现在正在用MIPS写一个计算器,我正在尝试写一个n选择k函数。 我想使用的算法是:

如果我想做5选择3,那么我将有一个循环,它是(5*4*3)/(3*2*1)。假设我已经有了乘法和除法函数,我将如何在MIPS中实现它

现在我有这个,但它根本不起作用:

calnchoosek:
    move $t1, $a0
    move $t2, $a2

    move $t3, $a0 # copies for the counter
    move $t4, $a2

loop_top:
    beq $t3, $t4, loop_bottom
    subi $t3, $t3, 1

    move $a0, $t1
    move $a2, $t3
    jal multi
    move $t1, $v0

    j loop_top

loop_bottom:
    beq $t4, $zero, exit1
    subi $t4, $t4, 1

    move $a0, $t2
    move $a2, $t4
    jal multi
    move $t2, $v0

    j loop_bottom

exit1:
    move $a0, $t1
    move $a2, $t2
    jal divi

我认为我的逻辑是完全错误的,我可能不得不重新开始。有人能帮我吗?

循环底部
$t4
将在上一次迭代中设置为0。将
$t2
乘以零,分母为零
divi
正在计算K*(N!-K!)/0–你被零除

哎呀。。。谢谢你的提醒!