Intero Problema nell'assemblaggio MIPS
-
10-07-2019 - |
Domanda
Utilizzando l'assemblaggio MIPS se chiedo a un utente di inserire un numero intero come posso quindi prendere quel numero intero e suddividerlo nelle sue parti richieste?
Esempio:
# User inputs a number
li $v0, 5 # read value of n
syscall
Quindi memorizzo il valore in $ v0 in un registro temporaneo, ad esempio $ t0, e devo dividerlo in ogni parte che lo compone. Quindi, 308 deve essere suddiviso in: 3, 0 e 8. Devo farlo in modo da poter quindi quadrare ciascuna di queste parti e aggiungerle insieme.
Il valore di input dell'utente deve essere inserito come numero intero.
Grazie, NMR
Soluzione
Questa è la risposta di @ Don, con una svolta
$ t0 contiene l'input dell'utente. (assume unsigned)
li $t1,10
DIVU $t0,$t1 //divide by 10
mfhi $t2 //t2 contains the division result
mflo $t3 //t3 containts the division remainder
usa beq, bgt per fare i confronti.
Qualche aiuto
http://www.mrc.uidaho.edu /mrc/people/jff/digital/MIPSir.html
Altri suggerimenti
Dividi per 10, usa il resto per ottenere l'8, se il quoziente è diverso da zero, dividi di nuovo per 10 e usa quindi il resto per lo zero, se il quoziente è ripetizione diversa da zero.