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