Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5

    [MIPS]Programma in assembly

    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

  2. #2
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5
    ho letto, ma non mi pare ci sia la soluzione

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5
    scusate il re-up, ma proprio nessuno ha una minima idea di come aiutarmi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.