Я пытался написать функцию Фибоначчи в сборке mips с использованием MARS 4.5, получил некоторые проводные материалы, ниже приведена хорошо выполненная версия, но когда я поместил код строки 1 вместо строки 2 (затем исключил кодв строке 1), всегда возвращает 1 как результат, почему?В чем разница?
.data
prompt1 : .asciiz "Input a integer : \n"
prompt2 : .asciiz "The result is : \n"
.text
.globl main
main :
li $v0 4
la $a0 prompt1
syscall
li $v0 5
syscall
move $a0 $v0
jal fib
move $t0 $v0
li $v0 4
la $a0 prompt2
syscall
li $v0 1
move $a0 $t0
syscall
li $v0 10
syscall
fib :
subi $sp $sp 12
sw $ra 0($sp)
sw $a0 4($sp)
li $v0 1 ############# line 1
beq $a0 1 final
beq $a0 2 final
subi $a0 $a0 1
jal fib
sw $v0 8($sp)
lw $a0 4($sp)
subi $a0 $a0 2
jal fib
lw $t1 8($sp)
add $v0 $v0 $t1
final :
############### line 2
lw $ra 0($sp)
addi $sp $sp 12
jr $ra