Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    creazione programam conversione decimale binario con processore mips

    Salve a tutti...a scuola mi è stato assegnato questo compito..convertire un valore decimale in un valore binario colo processore mips

    allora io ho scritto questa porzione di programma
    codice:
    #--------------------------->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
    
    loop:
                lw $t1,($t0)      #estrazione valore buffer
                div $t2,$t1         #divisione per 2
                mfhi $s1         #resto in s1
                mflo $t3         #quoziente in t3
    dopo non so più come continuare potreste illustrarmi voi ??

  2. #2
    il diagramma a blocchi dovrebbe essere
    Prendo n
    lo diviso per 2
    salvo resto e quoziente
    shifto il resto
    confronto il quoziente e 0
    quoziente = 0 finisco il programma
    quoziente /=0 torno alla divisione per due

    giusto???
    datemi aiuto voi..

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Ciao e benvenuto sul forum.
    Prendi subito visione del Regolamento interno, dove vi sono elencati una serie di punti fermi da seguire quando si aprono nuove discussioni.

    In particolare: il linguaggio va obbligatoriamente indicato nel titolo e il codice che viene postato va scritto indentato all'interno degli appositi tag CODE previsti dal forum (vedi punto 6 dello stesso regolamento).

    Sistemo io la discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4

    Re: Moderazione

    Originariamente inviato da LeleFT
    Ciao e benvenuto sul forum.
    Prendi subito visione del Regolamento interno, dove vi sono elencati una serie di punti fermi da seguire quando si aprono nuove discussioni.

    In particolare: il linguaggio va obbligatoriamente indicato nel titolo e il codice che viene postato va scritto indentato all'interno degli appositi tag CODE previsti dal forum (vedi punto 6 dello stesso regolamento).

    Sistemo io la discussione.


    Ciao.
    chiedo scusa prendo visione del regolamento adesso...
    comunque...qualcuno può aiutami a completarlo?

  5. #5
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    l'algoritmo pare giusto, quindi che problema hai a tradurlo in assembler?
    se davvero sei arrivato lì da solo perchè ora ti sei bloccato alla fine?

    sei sicuro che esista l'istruzione la?
    http://www.mrc.uidaho.edu/mrc/people...al/MIPSir.html

    inoltre la DIV credo sia sbagliata..in $t1 c'è il numero decimale giusto? allora perchè fai 2\numero?
    correggi: DIV $t1 $t2

    e poi alla fine del codice aggiungi
    codice:
     
    beq $t3 $0 $END #$0 vale 0, $END è l'ultimo indirizzo del programma
    add $t1 $t3 $0 # sostituisci il dividendo col quoziente appena ottenuto 
    jump $ADD #salta all'indirizzo della div

  6. #6
    Originariamente inviato da ant_alt
    l'algoritmo pare giusto, quindi che problema hai a tradurlo in assembler?
    se davvero sei arrivato lì da solo perchè ora ti sei bloccato alla fine?

    sei sicuro che esista l'istruzione la?
    http://www.mrc.uidaho.edu/mrc/people...al/MIPSir.html

    inoltre la DIV credo sia sbagliata..in $t1 c'è il numero decimale giusto? allora perchè fai 2\numero?
    correggi: DIV $t1 $t2

    e poi alla fine del codice aggiungi
    codice:
     
    beq $t3 $0 $END #$0 vale 0, $END è l'ultimo indirizzo del programma
    add $t1 $t3 $0 # sostituisci il dividendo col quoziente appena ottenuto 
    jump $ADD #salta all'indirizzo della div
    il programma adesso è scritto così
    #--------------------------->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


    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,$0 fine #confronto
    add $t1,$t3 $0 #sostituisco il dividendo col quoziente
    j loop
    fine:
    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


    devo stampare a video il valore...solo che mi dà 0..invece dovrebbe darmi il valore binario di 54...

  7. #7
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da DaDiXxX
    ..
    -non hai ancora risposto: "LA" che istruzione è?$t0 contiene tutto il decimale giusto?

    -hai verificato se per il tuo compilatore $0 vale davvero 0? altrimenti fai una variabile che vale 0..credo che possa essere questo il problema del tuo programma

    - che compilatore usi?

  8. #8
    Originariamente inviato da ant_alt
    -non hai ancora risposto: "LA" che istruzione è?$t0 contiene tutto il decimale giusto?

    -hai verificato se per il tuo compilatore $0 vale davvero 0? altrimenti fai una variabile che vale 0..credo che possa essere questo il problema del tuo programma

    - che compilatore usi?
    si la esiste perchè l'ho sempre usato in tutti i programmi
    in t0 c'è il buffer e ho estratto il valore in t1
    il problema è che non concatena il risultato e mi stampa sempre lo stesso...
    io utilizzo MARS

  9. #9
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da DaDiXxX
    il problema è che non concatena il risultato e mi stampa sempre lo stesso...
    certo che non concatena, dove hai visto che ho valutato questo?

    se mi dici qual è l'istruzione che stampa aggiusto il codice

    devi stampare $t3 prima dell'istruzione add $t1,$t3 $0

  10. #10
    Originariamente inviato da ant_alt
    certo che non concatena, dove hai visto che ho valutato questo?

    se mi dici qual è l'istruzione che stampa aggiusto il codice

    devi stampare $t3 prima dell'istruzione add $t1,$t3 $0
    ma io non devo stampare il resto scritto al contrario?
    divido sempre per due ma poi è il resto il risultato che devo salvare, cioè la codifca, scritta al contrario

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.