该程序计算Fibonacci序列。
我怎么能用无符号数来做?('因为很明显我不需要负数,如果我使用2的补数我不能代表第47个斐波纳契数
我使用qtspim并且我不能使用sys调用36来打印无符号数字.....它说未知的sys调用36
另外,我如何解决最终的算术溢出?
.text
.globl main
main:
la $a0, richiesta
li $v0,4
syscall
li $v0, 5
syscall
sw $v0, indice
lw $a0, indice
jal FIBO
sw $v0, numero
la $a0, risultato
li $v0, 4
syscall
lw $a0, numero
li $v0, 1
syscall
li $v0, 10
syscall
FIBO:
li $s0, 0 # Inizializzazione di "primo inserito" penultimo
li $s2, 0 # Se n= 0 il numero di Fibonacci è 0
beq $a0, 0, fine # Se n = 0 il risultato è già noto e non occorre calcolarlo
#inizializzazione del secondo elemento cioè 1
li $s1, 1 # Inizializzazione di "secondo inserito" ultimo
li $s2, 1 # Se n= 1 il numero di Fibonacci è 1
beq $a0, 1, fine # Se n = 1 il risultato è già noto e non occorre calcolarlo
move $t1, $a0
addi $t1, $t1, -1
ciclo: #è un ciclo while
beq $t1, $zero, fine
add $s2, $s0, $s1
move $s0, $s1 # "ultimo" divena "penultimo"
move $s1, $s2 # "nuovo" diventa "ultimo"
addi $t1, $t1, -1 # Decremento del contatore di ciclo
j ciclo
fine:
move $v0, $s2 # "nuovo" (cioè $s2) è il risultato
jr $ra # Ritorno dalla procedura
.data
indice: .word 0 #l'indice del numero di Fibonacci da calcolare
numero: .word 0 #il numero calcolato
richiesta: .asciiz "Inserire l'indice del numero di Fibonacci da calcolare (maggiore o uguale a 0): "
risultato: .asciiz "Il numero di Fibonacci è: "
我使用qtspim并且我不能使用sys调用36来打印无符号数字。