Si scriva un programma in assembler MIPS che calcoli, attraverso una sola chiamata ricorsiva, la funzione f(n) a due valori così definita: f(n) = (f(n);f(n-1)), se n>1 (1;0), se n=1 (0;0), se n=0 #versione a due valori complessità lineare .data stringa_i: .asciiz "\n scrivi un intero (0 per uscire): " stringa_o: .asciiz "\n il valore di fibonacci è: " .text .globl main main: li $v0, 4 la $a0, stringa_i syscall #stampa richiesta di un intero li $v0, 5 syscall #intero richiesto in $v0 move $a0,$v0 beq $a0,0 fine jal F move $t0,$v0 #salvo momentaneamente il risultato in $t0 la $a0, stringa_o li $v0,4 syscall move $a0,$t0 li $v0,1 syscall j main fine: li $v0, 10 syscall F: ble $a0,1 casobase #----------------------------- sub $sp, $sp, 8 sw $ra, 0($sp) sw $a0, 4($sp) sub $a0, $a0,1 jal F move $t0,$v0 add $v0, $v0, $v1 move $v1, $v0 lw $a0, 4($sp) lw $ra, 0($sp) add $sp, $sp, 8 #----------------------------- jr $ra casobase: beq $a0,1, uno beq $a0,$0, zero uno: li $v0, 1 li $v1, 0 jr $ra zero: li $v0, 0 li $v1, 0 jr $ra