使用SPIM打印无符号整数?

时间:2018-03-10 11:31:40

标签: assembly mips fibonacci spim qtspim

该程序计算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来打印无符号数字。

0 个答案:

没有答案