[MIPS] programma che calcola la media

di il
4 risposte

[MIPS] programma che calcola la media

Ciao a tutti,
mi sto esercitando per l'esame orale di calcolatori elettronici e ho provato a fare un programmino che calcoli la media di numeri che inserisco da tastiera. Ovviamente la media può essere un numero con la virgola. In questo punto mi incaglio, nel senso che non riesco a gestire il numero in virgola mobile. Ho provato utilizzando i registri riservata ai numeri in virgola mobile ma niente. In pratica non riesco a stampare su console la media se il risultato è un numero con la virgola. Posto il codice:


	.data
	
consegna1:   .asciiz "Ciao Riccardo, quanti numeri vuoi inserire?  "
a_capo:      .asciiz "\n"
consegna2:   .asciiz "Inserisci un numero: "
risposta:    .asciiz "La media è: \n"
error:       .asciiz "Errore! Chiusura programma.\n"


	.text
	
	li $t2, 0            # inizializzo la somma nel reg $t2
	li $t0, 0            # inizializzo il contatore nel reg $t0
	
	li $v0, 4
	la $a0, consegna1
	syscall
	
	li $v0, 4
	la $a0, a_capo
	syscall
	
	li $v0, 5
	syscall
	move $t1, $v0       # in $t1 ho il numero di numeri
	
	beq $t1, 0, errore
	
inserisci_numero:
	beq $t0, $t1, calcolo_media
	
	li $v0, 4
	la $a0, consegna2
	syscall
	
	li $v0, 5
	syscall
	
	add $t2, $t2, $v0
	
	addi $t0, $t0, 1
	
	j inserisci_numero
	
calcolo_media:
	div $t3, $t2, $t1
	
	mtc1 $t3, $f1
	
	li $v0, 4
	la $a0, risposta
	syscall
	
	li $v0, 2
	add.s $f12, $f1, $zero
	syscall
	
	li $v0, 10
	syscall
	
errore:
	li $v0, 4
	la $a0, error
	syscall
	
	li $v0, 10
	syscall

4 Risposte

  • Re: [MIPS] programma che calcola la media

    Ciao
    allora ti fai la somma dei vari valori
    poi converti il numero ottenuto in float
    ti converti anche il numero degli elementi
    e poi effettui una div.s
    per convertire i valori devi fare nel seguente modo:
    mtc1 $t3, $f1
       cvt.s.w $f1,$f1
       mtc1 $t2,$f2
       cvt.s.w $f2,$f2
    ricordati che dopo aver effettuato la divisione devi spostare il risultato in $f12
    altrimenti non ti stampa niente.
    spero di esserti stato di aiuto.
  • Re: [MIPS] programma che calcola la media

    Crossposting

    http://www.pierotofy.it/pages/extras/forum/69/1054883[mips_programma_che_calcola_la_media/
  • Re: [MIPS] programma che calcola la media

    X RicoWolf
    visto il link che offre la soluzione più semplice che è quella di accettare direttamente i floating.
    io ti propongo questa soluzione che ti permette di imparare qualcosa che in futuro ti potrà tornare utile
      .data
    consegna1:   .asciiz "Ciao Riccardo, quanti numeri vuoi inserire?  "
    a_capo:      .asciiz "\n"
    consegna2:   .asciiz "Inserisci un numero: "
    risposta:    .asciiz "La media è: \n"
    somma:        .asciiz "la somma per il momento è = "
    error:       .asciiz "Errore! Chiusura programma.\n"
       .text
       main:
       li $t2, 0            # inizializzo la somma nel reg $t2
       li $t0, 0            # inizializzo il contatore nel reg $t0
       li $v0, 4
       la $a0, consegna1
       syscall
       
       li $v0, 4
       la $a0, a_capo
       syscall
       
       li $v0, 5
       syscall
       move $t1, $v0       # in $t1 ho il numero di numeri
       
       beq $t1, 0, errore
       move $t2,$zero
    inserisci_numero:
       beq $t0, $t1, calcolo_media
       
       li $v0, 4
       la $a0, consegna2
       syscall
       
       li $v0, 5
       syscall
       
       add $t2, $t2, $v0
       
       addi $t0, $t0, 1
       
       j inserisci_numero
       
    calcolo_media:
       mtc1 $t0, $f1
       cvt.s.w $f1,$f1  #converte il numero di elementi in float
       mtc1 $t2,$f2
       cvt.s.w $f2,$f2 #converte la somma ottenuta dei vari numeri
       div.s $f12,$f2,$f1 #effettua la divisione tra float $f12=$f2/$f1
       li $v0, 4
       la $a0, risposta
       syscall
       
       li $v0, 2
       syscall
       j fine # risparmi al compilatore una chiamata alla syscall
       
    errore:
       li $v0, 4
       la $a0, error
       syscall
    fine:   
       li $v0, 10
       syscall

    spero di esserti stato di aiuto
  • Re: [MIPS] programma che calcola la media

    @smalldragon
    Grazie mille. Mi sei stato di grande aiuto.
Devi accedere o registrarti per scrivere nel forum
4 risposte