scusa ma forum di ubuntu ti hanno fatto vedere SLL che è la chiave di tutto perchè non l'hai detto? 
inoltre non ho ancora capito come stampi..quali sono le istruzioni?
codice:
#**************************************
#Convertire in binario un valore decimale
#Davide Gangale
#V°A°
#*************************************
#--------------------------->area dati<----------------
.data
mex: .asciiz" il valore convertito e': "
Buffer: .word 54
#------------------------->area programma<--------------
.text
.globl main
main: la $t0,Buffer #caricamento buffer
li $t1,0 #azzeramento registri
li $t2,2
li $s1,0
li $s2,0
li $t3,0
li $t4,0
lw $t1,($t0) #estrazione valore buffer
loop: div $t1,$t2 #divisione per 2
mfhi $s1 #resto in s1
mflo $t3 #quoziente in t3
beq $t3,$s2 fine #confronto
add $t4 $t4 $s1
sll $t4 $t4 2
add $t1,$t3 $0 #sostituisco il dividendo col quoziente appena ottenuto
j loop
fine:
lw $a0,($s1)
li $v0,1
syscall
li $v0,4 #caricamento codice print_string
la $a0,mex #puntatore alla stringa
syscall #chiamata di sistema
li $v0, 1 #codice print_int
move $a0,$t3
syscall
li $v0,10
syscall
prova così, ma devi stampare $t4