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

Rispondi quotando