Come da titolo, stavo provando a svolgere questo esercizio; risolto il problema della conversione nelle due modalità, ora mi resta da capire come stampare nell'ordine corretto i due numeri ottenuti nelle due basi...(sul web ho visto che usa srli ed slli...ma saprei se è la modalità corretta)
PS: Per la forma exa devo modificare il numero in lettere quando maggiore di 9...spero di farlo questa sera
Grazie in anticipo a chi mi risponde!
#####################################################################
# Scrivere un programma che, preso un numero decimale da tastiera, #
# ne stampi la rappresentazione in base 2 e in base 16. #
#####################################################################
.globl _start
.data
in_num: .asciz "\n Digita il numero da convertire "
base2: .asciz "\n Il numero in base binaria --> "
base16: .asciz "\n Il numero in base exa --> "
# print_div: .asciz "\n La divisione "
.text
_start:
la a0, in_num
li a7, 4
ecall
li a7, 5
ecall
mv s0, a0 # s0 è il numero da convertire
li t1, 2 # t1 conversione in base 2
li t2, 16 # t1 conversione in base 16
mv t0, s0
# Testo stampa resto
la a0, base2
li a7, 4
ecall
# Conversione in binario
loop_binario:
# Testo stampa resto
rem t3, t0, t1
mv a0, t3
li a7, 1
ecall
# Effettua e stampa la divisione
div t0, t0, t1
# Prova di stampa della divisione
# la a0, print_div
# li a7, 4
# ecall
# mv a0, t0
# li a7, 1
# ecall
bnez t0, loop_binario
mv t4, s0
# Testo stampa resto
la a0, base16
li a7, 4
ecall
# Conversione in exa
loop_exa:
rem t3, t4, t2
mv a0, t3
li a7, 1
ecall
mv a0, t3
div t4, t4, t2
bnez t4, loop_exa
# Fine del programma
li a7, 10
ecall