n 在 MIPS 汇编中选择 k

问题描述 投票:0回答:0
.text
    addi    $v0, $zero, 5
    syscall
    add $a0, $v0, $zero  

    addi    $v0, $zero, 5
    syscall
    add $a1, $v0, $zero  #call choose function
    jal choose

    add $a0, $v0, $zero  #print result
    addi    $v0, $zero, 1
    syscall

    addi    $v0, $zero, 10   #exit program
    syscall

选择: 阿迪 $sp, $sp, -16
sw $ra, 0($sp) # 将返回地址保存在栈中 sw $s0, 4($sp) # 将 s0 存入栈中 sw $a0, 8($sp) # 将 n 存入栈中 sw $a1, 12($sp) # 将 k 存入栈

    slt     $t0, $a0, $a1     # check if n < k
    beq     $t0, $1, choose_end
    beq     $a0, $0, choose_one   # check if n == 0 or k == 0
    beq     $a1, $0, choose_one

    addi    $a0, $a0, -1     # calculate choose(n-1, k-1)
    addi    $a1, $a1, -1
    jal     choose
    move    $s0, $v0

    addi    $a0, $a0, 1     # calculate choose(n-1, k)
    jal     choose
    add     $v0, $s0, $v0     # add val1 and val2

    j   choose_end

选择一个: li $v0, 1 # 返回 1 j选择结束

选择结束: lw $ra, 0($sp) # 恢复返回地址 lw $s0, 4($sp) # 恢复 s0 addi $sp, $sp, 16 # 从栈中释放空间 jr $ra # 返回调用者

不知道这段代码有什么问题

我输入2和3结果是4

assembly mips
© www.soinside.com 2019 - 2024. All rights reserved.