Buongiorno, ho sviluppato questo programmino semplice che mi permette di convertire un carattere da maiuscolo a minuscolo e viceversa.
Non riesco a capire per quale motivo non mi esegue la parte di codice nella quale effettua il controllo nel caso in cui l'utente non inserisca un carattere valido.
Inoltre nella sezione "upper_case" (c'è anche un commento) se non uso "xori" ho un problema nella conversione, come mai?
Vi posto solo la porzione di codice in questione.
bgt t0, t1, upper_case # Se t0 è un carattere minuscolo, rendilo maiuscolo
blt t0, t2, upper_case # Se t0 è un carattere minuscolo, rendilo maiuscolo
bgt t0, t3, lower_case # Se t0 è un carattere maiuscolo, rendilo minuscolo
blt t0, t4, lower_case # Se t0 è un carattere maiuscolo, rendilo minuscolo
la a0, error # QUESTA E' LA PARTE DI CODICE CHE NON VIENE PROPRIO LETTA DA PROGRAMMA
li a7, 4 # ANCHE QUANDO SI INSERISCE UN CARATTERE DIFFERENTE DALLE LETTERE DA
ecall # DA CONVERTIRE
j loop
lower_case:
xori t0, t0, 0x20 # 32 = 0x20 in exa
# addi t0, t0, -32
la a0, lower
li a7, 4
ecall
mv a0, t0
li a7, 11
ecall
j loop
upper_case:
xori t0, t0, 32 # QUI SE NON USO LA FUNZIONE xori, ALLORA IL PROGRAMMA NON MI CONVERTE
# addi t0, t0, 32 # IL CARATTERE E MI DA IN OUTPUT SEMPRE UN CARATTERE SPECIALE, IN
la a0, upper # PARTICOLARE UN QUADRATINO...
li a7, 4
ecall
mv a0, t0
li a7, 11
ecall
j loop
end:
# Fine del programma
li a7, 10
ecall