Created
June 18, 2013 23:47
-
-
Save guiocavalcanti/5810551 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.data | |
entrada: .asciiz "acd" | |
nextline: .asciiz "\n" | |
.text | |
main: | |
addi $t0, $zero, 0 # Inicializa contador ($t0) com 0, just in case. | |
change_case: | |
lb $t1, entrada($t0) # Armazena caractere em $t1 | |
beq $t1, 0, sort # Sai do loop change_case se entrada[$t0] for 0 | |
addi $t2, $t1, -97 # Vai para not_in_range se for menor que 97 | |
bltz $t2, not_in_range | |
addi $t2, $t1, -122 # Vai para not_in_range se for maior do que 122 | |
bgtz $t2, not_in_range | |
j in_range | |
not_in_range: | |
li $v1, 1 | |
j exit | |
in_range: | |
sub $t1, $t1, 32 # Subtrai 32 do valor do caractere atual (A - 32 = a) | |
sb $t1, entrada($t0) # Armazena caractere convertido no mesmo local da memória | |
addi $t0, $t0, 1 # incrementa contador $t0 | |
j change_case # nova interação do change_case | |
sort: | |
j exit | |
swap: # Realiza swap entre os elementos com offset em $a0 e $a1 | |
lb $t1, entrada($a0) | |
lb $t2, entrada($a1) | |
sb $t1, entrada($a1) | |
sb $t2, entrada($a0) | |
jr $ra | |
print_and_exit: | |
li $v0, 4 # Faz chamada de print_string do sistema | |
la $a0, entrada | |
syscall | |
j exit | |
exit: | |
li $v0,10 # Chamada do sistema para terminar o programa | |
syscall |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment