Ciao a tutti, ho bisogno di un piccolo aiuto per terminare questo programma visto che non riesco a venirne fuori.
Il programma deve prendere in input un numero decimale e convertirlo in base binaria. L'unico (credo) problema che mi da è che alla fine non mi stampa tutta la stringa di 0, 1 che rappresentano il numero convertito, ma solo MSB. Potete darmi una mano?
Grazie

codice:
#Programma che permette di convertire un numero intero
#in un numero binario tramite procedura ricorsiva.



	.data
prompt: .asciiz "Inserire un numero decimale intero: "
output: .asciiz "Numero in base binaria: "


	 .text

	 .globl main



main:

# Lettura dell'intero di cui si calcola la conversione

    li $v0, 4 	  	

    la $a0, prompt  	# $a0 indirizzo della stringa

    syscall         	

		

    li $v0, 5 	  

    syscall         	# legge l'intero n e lo carica in $v0




# Calcolo    

  move $a0, $v0		# $a0 n

  jal  converti		# chiama converti(n)

  move $s0, $v0		# $s0 n convertito

    

# Stampa del risultato

    li $v0, 4		

    la $a0, output	# $a0 indirizzo della stringa

    syscall		



    move $a0, $s0	# $a0 n convertito

    li $v0, 1		

    syscall		# stampa n convertito



# Termine del programma    

    li $v0, 10 		# $v0 codice della exit

    syscall		# esce dal programma



    

converti:

    	addi $sp, $sp,-8  		# alloca stack

   	sw   $ra, 4($sp)		# salvo return address

   	sw   $a0, 0($sp)		# salvo l'argomento n

	li   $v0, 1			

   	j    end



converti_main:
	div $a0, $0			# divide il numero per zero
	mflo $t1			# salva il quoziente
	mfhi $t2			# salva il resto
        sll $t2,$t2,1        		# shiftamento   
        add $t2,$t2,$0      		# somma per resto
  	bne  $a0, $zero, converti_main	# se n !=0 salta all'inizio del ciclo converti_main
	jal  converti		

    	lw   $a0, 0($sp)		# ripristino n in $v1



end:

    lw   $ra, 4($sp)		# ripristino return address

    addi $sp, $sp, 8		# dealloca stack

    jr   $ra			# ritorno al chiamante