|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
Aiuto su semplice esercizio MIPS
Qualcuno mi aiuta a capire dove sbaglio in questo esercizio?
Devo fare una funzione che prende 4 interi, li confronta a due a due e mi dice il minore numero pari dei 4. Se però confronta due valori dispari deve dare come risultato 10. non capisco perchè non funziona .text .globl main main: li $v0,5 #Inserisci il primo numero da input syscall move $a0,$v0 #Sposta il numero in $a0 li $v0,5 #Inserisci il secondo numero da input syscall move $a1,$v0 #Sposta il numero in $a1 li $v0,5 #Inserisci il terzo numero da input syscall move $a2,$v0 #Sposta il numero in $a2 li $v0,5 #Inserisci il quarto numero da input syscall move $a3,$v0 #Sposta il numero in $a3 jal FUN_MINPARI #Salta alla funzione FUN_MINPARI move $a0,$v0 #Sposta $v0 in $a0 li $v0,1 #Stampa il risultato syscall li $v0,10 #Esci syscall jr $ra FUN_MINPARI: rem $t0,$a0,2 #Divido $a0 per 2 e metto il resto in $t0 rem $t1,$a1,2 #Divido $a1 per 2 e metto il resto in $t1 beqz $t0,pariuno #Se $t0 è uguale a zero vai a pariuno beqz $t1,paridue #Se $t1 è uguale a zero vai a paridue j fine #Vai a fine pariuno: beqz $t1,confrontouno #Se $t1 è uguale a zero vai a confrontouno move $v0,$a0 #Sposta $a0 in $v0 j casodue #Vai a casodue paridue: move $v0,$a1 #Sposta $a1 in $v0 j casodue #Vai a casodue confrontouno: ble $a0,$a1,minimouno #Se $a0 è minore o uguale di $a1 vai a minimouno j minimodue #Vai a minimodue minimouno: move $v0,$a0 #Sposto $a0 in $v0 j casodue #Vai a casodue minimodue: move $v0,$a1 #Sposto $a1 in $v0 j casodue #Vai a casodue casodue: rem $t0,$a1,2 #Divido $a1 per 2 e metto il resto in $t0 rem $t1,$a2,2 #Divido $a2 per 2 e metto il resto in $t1 beqz $t0,paritre #Se $t0 è uguale a zero vai a paritre beqz $t1,pariquattro #Se $t1 è uguale a zero vai a pariquattro j fine #Vai a fine paritre: beqz $t1,confrontodue #Se $t1 è uguale a zero vai a confrontodue j casotre #Vai a casotre perchè $a1 non è minore di $a0 pariquattro: j confrontotre #Vai a confrontotre confrontodue: ble $a1,$a2,casotre #Se $a1 è minore o uguale di $a2 vai a casotre confrontotre: ble $a2,$v0,minimotre #Se $a2 è minore o uguale di $v0 vai a minimotre j casotre #Vai a casotre minimotre: move $v0,$a2 #Sposta $a2 in $v0 j casotre #Vai a casotre casotre: rem $t0,$a2,2 #Divido $a2 per 2 e metto il resto in $t0 rem $t1,$a3,2 #Divido $a3 per 2 e metto il resto in $t1 beqz $t0,paricinque #Se $t0 è uguale a zero vai a paricinque beqz $t1,parisei #Se $t1 è uguale a zero vai a parisei j fine paricinque: beqz $t1,confrontoquattro #Se $t1 è uguale a zero vai a confrontoquattro j finedue #Vai a finedue parisei: j ultimoconfrontodue #Vai a ultimoconfrontodue confrontoquattro: ble $a3,$a2,ultimoconfronto #Se $a3 è minore di $a2 vai a ultimoconfronto j finedue #Vai a finedue ultimoconfrontodue: ble $a3,$v0,piccolosalto j finedue #Vai a finedue piccolosalto: move $v0,$a3 #Sposta $a3 in $v0 j finedue #Vai a finedue fine: li $v0,10 #Carica 10 in $v0 jr $ra finedue: jr $ra E' UN PO LUNGHETTO, VI PREGO AIUTATEMI |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
come non funziona??ti da errore da qualche parte?se sì con cosa l'hai lanciato??
scusa ma sono un pò arruginito con il mips...e inoltre non ho mai usato pseudoistruzioni...tipo della rem non ne sapevo neache l'esistenza!! ![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
l'ho provato su mipster ma non è questo il problema penso
comq cicla all'infinito |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
ti ho mandato un messaggio privato, spero in un tuo aiuto
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:30.