递归乘积mips32

时间:2019-04-25 14:57:17

标签: recursion assembly mips product multiplication

该代码未打印两个数字的乘积。我不确定如何打印结果。我不确定100%是否将返回值存储在堆栈指针中。

main:


        #prompt 1
        li $v0, 4        # Print the String at Label “Input”
                la $a0, num1
                syscall
                li $v0, 5                      
                syscall
                move $a2, $v0

        #prompt 2
        li $v0, 4     # Print the String at Label “Input”
                la $a0, num2
                syscall
                li $v0, 5      # Read integer from user
                syscall
        move $a1, $v0  # Pass integer to input argument register $a0

        jal multiply       

        add $a0, $v0, $zero
            li  $v0, 1
        syscall


multiply:

            bne $a1, 0, recurse  
            move $v1, $a1
            jr $ra

recurse:

    sub $sp, $sp, 12
    sw $ra, 0($sp)
    sw $a0, 4($sp)
    sw $a1, 8($sp)

    addiu $a1, $a1, -1
    jal multiply

        lw $a1, 4($sp)
        add $v1, $v1, $a1

        lw $ra, 0($sp)
        addi $sp, $sp, 12
        jr $ra 

3 * 2的期望值为6,但打印出2。3 * 3返回3

0 个答案:

没有答案