## 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