Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Assembly MIPS] programma conversione binario-->decimale

    ho un programma che mi stampa il contenuto di un array in binario ma a me serve in decimale.
    Come fare? HELP

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi modificarlo
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Devi modificarlo
    Ho capito che devo modificarlo: la mia domanda è...come?
    posto il codice in modo tale via sia più chiaro


    codice:
    # Prende in input un numero intero decimale e stampa la sua rappresentazione binaria
    
    
    .data
        NO_BITS: .word 32 # Numeri di bit
        bits: .space 128  # Array dove vengono memorizzati i bit
        .globl main
        
    .text
    main:
        li $v0, 5
        syscall
        move $t0, $v0 # Prende il numero in $t0
        
        lw $t1, NO_BITS # Contatore dei bit
        li $t2, 1    # Una costante 1 che serve come maschera per prendere l'ultimo bit del numero
                    # tramite AND logico
        
        loop:               
            and $t3, $t0, $t2  # $t3 = $t0 AND $t2, viene impostato a 1 se l'ultimo bit di $t0 è 1, 0 altrimenti
            srl $t0, $t0, 1    # Scarta l'ultimo bit di $t0 per poter considerare gli altri
            addi $t1, $t1, -1  # Decrementiamo di uno il contatore
            sll $t4, $t1, 2    # Calcoliamo l'indirizzo dove memorizzare il bit nell'array bits
            sw $t3, bits($t4)  # Memorizziamo il bit
            bnez $t1, loop     # Se non abbiamo contato 32 bit ripetiamo il procedimento
    
    
    # Stampa i bit memorizzati nell'array bits
    print_bits:
        li $t0, 0         # Indirizzo in memoria relativo all'array bits del bit corrente che si vuole stampare
        lw $t1, NO_BITS # Numero di bit (32)
        sll $t1, $t1, 2 # $t1 = $t1 * 4 = 128 (la prima posizione in memoria fuori dall'array bits)
        loop2:
            li $v0, 1
            lw $a0, bits($t0)     # Il bit con indirizzo $t0 viene stampato
            syscall
            
            addi $t0, $t0, 4     # Si passa al prossimo indirizzo (sommando quattro visto che si tratta di words)
            bne $t0, $t1, loop2    # Se l'indirizzo sta ancora dentro l'array bits significa che non abbiamo finito
    
    
    exit:
        li $v0, 10
        syscall
    Ultima modifica di LeleFT; 18-02-2014 a 10:56 Motivo: Aggiunti i tag CODE

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da LolloMazzy Visualizza il messaggio
    Ho capito che devo modificarlo: la mia domanda è...come?
    Avevo capito anche io ma la tua domanda era veramente troppo concisa.

    posto il codice in modo tale via sia più chiaro
    Ecco questa è stata una buona idea ma la domanda non è ancora chiara ...

    Questo trasforma da decimale in binario, tu lo vuoi in decimale ... ma a partire dal binario o cosa?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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.