我有一个斐波那契函数的 MIPS 代码。如何扩展在终端中打印给定位置的代码?

问题描述 投票:0回答:0

我有一个斐波那契函数的 MIPS 代码,在终端中传递一个自然数,程序返回该位置的斐波那契数,但它不起作用,我该如何修改代码才能做到这一点?我几乎明白了,但需要一些帮助:)

这是我得到的当前代码:

.data 
    ask4num: .asciiz "Enter a number: "
    printNum: .asciiz "\nThe number on the Lucas Sucession is: "
    
.text
    
.globl main

main:
    # print text
    addi $v0, $zero, 4
    la $a0, ask4num
    syscall
    
    # get number
    addi $v0, $zero, 5
    syscall
    
    # store number in $t0
    addi $t0, $v0, 0
    
    # prit text
    addi $v0, $zero, 4
    la $a0, printNum
    syscall
    
    jal Fib
    
    addi $v0, $zero, 1
    addi $a0, $v1, 0
    syscall
    
    addi $v0, $zero, 10
    syscall
    
Fib:

    addi $sp, $sp, -12
    sw $ra, 0($sp)
    sw $a0, 4($sp)
    sw $s0, 8($sp)
    
    beq $a0, $zero, ReturnZero
    addiu $t0, $zero, 0
    slti $t0, $a0, 2
    bne $t0, $zero, ReturnOne
    
    addi $a0, $a0, -1
    jal Fib
    
    move $s0, $v0
    lw $a0, 4($sp)
    addi $a0, $a0, -2
    jal Fib
    
    add $v0, $v0, $s0
    
    lw $s0, 8($sp)
    lw $ra, 0($sp)
    addiu $sp, $sp, 12
    jr $ra
    
    ReturnZero:
    lw $s0, 8($sp)
    lw $ra, 0($sp)
    addiu $sp, $sp, 12
    li $v0, 0
    jr $ra

    ReturnOne:
    lw $s0, 8($sp)
    lw $ra, 0($sp)
    addi $sp, $sp, 12
    li $v0, 1
    jr $ra

程序快完成了,只需要一些帮助来修复它,这可能很容易做到。提前致谢!!!!

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