Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Come far funzionare il codice MIPS con i floating point
Forum - Altri Linguaggi - Come far funzionare il codice MIPS con i floating point

Avatar
Sheeep (Normal User)
Newbie


Messaggi: 1
Iscritto: 06/02/2014

Segnala al moderatore
Postato alle 11:33
Giovedì, 06/02/2014
Salve,

ho scritto un programma che cerca, all'interno di un array, il valore massimo e il valore minimo dei numeri contenuti in esso.

La grandezza dell'array non è definita, bensì viene scelta dall'utente al momento dell'esecuzione del programma.

Una volta stabilita la grandezza attraverso una serie di cicli l'utente inserisce i valori (N INTERI).

Esempio esecuzione


Inserisci la grandezza: 5

### Creo un array grande 5 ###

Inserisci i valori:

a[0] = n
a[1] = m
..
a[5] = z

##### Inserisco i valori nelle caselle disponibili dell'array appena creato #####

Ora. Lo script funziona correttamente per i numeri interi, io vorrei convertirlo per i numeri floating point.

Esempio


grandezza array: 3 (n intero)
Valori array:



a[0] = 13.3 (n float)
a[1] = 143.543
a[2] = 500.232

###########################################

Codice



Codice sorgente - presumibilmente Altri Linguaggi

  1. .data
  2.  
  3. array: .word 0 #Inizializzo l'array
  4. grandezza: .asciiz "Inserisci la grandezza (n intero) : "
  5. elementi: .asciiz "Inserisci gli elementi : "
  6. max: .asciiz "Il valore massimo: "
  7. min: .asciiz "\nIl valore minimo: "
  8.  
  9. .text
  10.  
  11. .globl main
  12.  
  13. main:
  14.  
  15. li $v0, 4
  16. la $a0, grandezza
  17. syscall
  18.  
  19. li $v0, 5 #Prendo la grandezza dell'array
  20. syscall
  21.  
  22.  
  23.  
  24. move $t0, $v0
  25. move $t1, $v0
  26.  
  27. li $v0, 4
  28. la $a0, elementi
  29. syscall
  30.  
  31. la $t3, array
  32.  
  33.  
  34. ### Prima ricerca se ho solo un elemento allora il primo è uguale all'ultimo quindi stampo ###
  35. prima_ricerca:
  36.  
  37. beq $zero, $t0, risultato_prima_ricerca_1_1
  38. li $v0, 5
  39. syscall
  40.  
  41. sw $v0, 0($t3)
  42. addi $t3, $t3, 4
  43. addi $t0, $t0, -1
  44. j prima_ricerca
  45.  
  46. risultato_prima_ricerca_1_1:
  47.  
  48. lw $t3, array
  49. la $s0, array
  50. move $s1,$t3
  51. move $s2,$t3
  52.  
  53. ###Seconda ricerca se la grandezza dell'array è > 1 ###
  54.  
  55. seconda_ricerca:
  56.  
  57.  
  58. beq $t1,$zero, risultato_generale # t1 contiene la grandezza del array
  59. slt $t0, $s1, $t3 # Se il valore massimo s1 è minore del valore dell'array t3 allora sposto il numero in t0
  60. beq $t0 ,$zero, proseguo_ricerca #Quindi continuo con la ricerca per il minimo
  61. move $s1, $t3 # Altrimenti sposto il valore t3 nel max $s1
  62.  
  63.  
  64.  
  65. proseguo_ricerca:
  66. slt $t0, $t3, $s2 # Se il valore dell'array t3 è minore di s2 allora sposto tutto in t0
  67. beq $t0 ,$zero, trovato #Trovato
  68. move $s2,$t3 #Sposto il valore t3 nel max
  69. j trovato
  70.  
  71.  
  72. trovato:
  73.  
  74. addi $s0, $s0, 4
  75. lw $t3, 0($s0)
  76. addi $t1, $t1 ,-1
  77. j seconda_ricerca
  78.  
  79. risultato_generale:
  80.  
  81. li $v0, 4
  82. la $a0, max
  83. syscall
  84. li $v0, 1
  85. move $a0, $s1
  86. syscall
  87.  
  88. li $v0, 4
  89. la $a0, min
  90. syscall
  91. li $v0, 1
  92. move $a0, $s2
  93. syscall
  94.  
  95.  
  96. exit:
  97. li $v0, 10
  98. syscall # end of program



Qualcuno mi può dare una mano?

Ultima modifica effettuata da Sheeep il 06/02/2014 alle 11:35
PM Quote