Ciao a tutti come state? 
Ho un problema con un esercizio.
Dato in input un numero intero il programma deve ritornare in ordine i numeri che compongono il numero scritti in lettere. In poche parole se io inserisco 25, il programma mi stampa in output due cinque.
Ora quello che ho fatto io funziona ma non stampa nel corrette ordine, ovvero stampa a partire dall'ultima cifra, cioè se inserisco il solito 25 il mio programma stampa in output cinque due.
Per correggere questo "bug" avevo pensato di usare una pila Lifo, in modo tale che mi stampi l'output corretto. Ma come si usa la pila? cioè come si implementa? mi potreste aiutare per favore?
Questo è il mio codice.
codice:
.data
insert: .asciiz "Inserisci un numero intero positivo -> "
dig0: .asciiz " zero "
dig1: .asciiz " uno "
dig2: .asciiz " due "
dig3: .asciiz " tre "
dig4: .asciiz " quattro "
dig5: .asciiz " cinque "
dig6: .asciiz " sei "
dig7: .asciiz " sette "
dig8: .asciiz " otto "
dig9: .asciiz " nove "
digits: .word dig0,dig1,dig2,dig3,dig4,dig5,dig6,dig7,dig8,dig9
.text
.globl main
main:
li $t1, 10
Loop:
la $a0, insert
li $v0, 4
syscall
li $v0, 5
syscall
move $s0, $v0
blt $s0, $zero, Loop
control:
li $s1, 0
div $s0, $t1
mfhi $s1
mflo $s0
#USARE LO STACK LIFO (LAST IN FIRST OUT)
add $s1 ,$s1, $s1
add $s1, $s1, $s1
move $t0, $s1
lw $a0, digits($t0)
li $v0, 4
syscall
bne $s0, $zero, control
li $v0, 10
syscall