ciao![]()
ci ho ragionato un pochino sopra sfruttando i vostri preziosi consigli ( vi ringrazio per la disponibilità e la passione con cui avete risposto);
ed ecco cio' che ho partorito:Il programma funziona bene su spim, nonostante a volte venga approssimata per eccesso anche una divisione il cui quoziente è del tipo x,4 .codice:##ALGORITMO DIVISIONE #regola per arrotondamento: SE IL RESTO E' MAGGIORE DELLA META' DEL DIVISORE, AGGIUNGI UNO #AL QUOZIENTE #$LO:contiene il risultato(quoziente); #$HI:contiene il resto .data dividendo: .asciiz "Inserisci dividendo: " divisore: .asciiz "Inserisci divisore: " risultato: .asciiz "Il risultato è: " .text .globl __start .globl arrot .globl exit __start: ##ACQUISIZIONE DATI li $v0, 4 la, $a0, dividendo syscall li $v0, 5 syscall #dividendo move $t0, $v0 li $v0, 4 la, $a0, divisore syscall li $v0, 5 syscall #divisore move $t1, $v0 div $s0, $t0, $t1 #quoziente mfhi $t9 #copio il resto in $t9 div $s1, $t1, 2 #metà del divisore slt $t2, $t9, $s1 #$t2=1 se resto è minore della metà del divisore;0 altrimenti bne $t2, $zero, exit arrot: addi $s0, $s0, 1 j exit #incremento il quoziente di uno exit: li $v0, 4 la $a0, risultato syscall move $a0, $s0 li $v0, 1 syscall li $v0, 10 syscall
Ovviamente esisterà un maniera più compatta per esprimere un corretto arrotondamento.
Mi piacerebbe sentire il parere di qualche utente più esperto.
Grazie ancora a tutti![]()

Rispondi quotando