## LSU EE 4720 Computer Architecture Spring 2010
#
# Classroom example, 25 January 2010
.data
str:
.asciiz "I Love NO `az{ "
before:
.asciiz "Before: %/s1/s\n"
after:
.asciiz "After: %/s1/s\n"
.text
.globl __start
__start:
la $s1, str
la $a0, before
addi $v0, $0, 11
syscall
jal upper
add $a0, $s1, $0
la $a0, after
addi $v0, $0, 11
syscall
li $v0, 10
syscall
###############################################################################
#
# upper
#
upper:
## Register Usage
#
# $a0: CALL VALUE: Address of string to convert.
# $a0 can be modified.
#
# Convert lower-case characters to upper case.
# String is to be converted in place, there is no return value.
#
# NOTE: 'a' = 97, 'z' = 122, 'a' - 'A' = 32
# Note: '@' = 64, 'A' = 65, 'Z' = 90, '[' = 91, '`' = 96, '{' = 123
# "aBc"
UPPER:
LOOP:
lb $t0, 0($a0)
beq $t0, $0, DONE
addi $t1, $t0, -97
bltz $t1 LOOP
addi $a0, $a0, 1
addi $t1, $t0, -122
bgtz $t1, LOOP
addi $t0, $t0, -32
j LOOP
sb $t0, -1($a0)
DONE:
jr $ra
nop