# Version of code used in LSU EE 3755 29 October 2012 # :Example: # # Program to convert a C-style string to upper case. .data str: .asciiz "Hello, world!" 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: ## Register Usage # # $a0: (Call) Address of string to convert. # # Note: 'a' = 97, 'z' = 122, 'A' = 65. LOOP: lbu $t0, 0($a0) beq $t0, $0, DONE sub $t3, $t0, 97 sltiu $t3, $t3, 26 slti $t1, $t0, 97 bne $t1, $0, GET_NEXT_CHAR slti $t1, $t0, 123 beq $t1, $0, GET_NEXT_CHAR addi $t2, $t0, -32 sb $t2, 0($a0) GET_NEXT_CHAR: j LOOP addi $a0, $a0, 1 DONE: jr $ra nop ####