Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Exercises 1 and 2 -- Capitalization (2 versions) Declare a string in the data se

ID: 3587367 • Letter: E

Question

Exercises 1 and 2 -- Capitalization (2 versions)

Declare a string in the data section such as:

.data

string: .asciiz "in a hole in the   ground there lived a hobbit"

Notice there are extra spaces in this string. Write an MIPS program that capitalizes the first letter of each word, so that after running your program the data will look like this:

.data

string: .asciiz "In A Hole In The   Ground There Lived A Hobbit"

Easy version (exercise 1): assume that the data comprises only lower case characters and spaces. There may, however, be several spaces in a row (as in "the   ground" above). Be sure to capitalize only the first letter of the words.

Medium-hard version (exercise 2): Rewrite your program so that it assumes that the data comprises only upper and lower case characters and spaces, and alters a character only if it is lower case, and follows a space or is the first character on the line.

For both versions, print the strings before and after translation by using the syscall print string service.

Here is my solution for exercise 1:

.text
.globl main

main:
li $v0, 4   # Print the original string.
la $a0, string
syscall

li $t0, 0
loop:
lb $t1, string($t0)
nop
nop
beqz $t1, end  # if ($t1 == NULL) print the result
nop
nop
bnez $t0, next  # Check if first character is lower case
nop
nop
blt     $t1, 97, next2  # Convert from lower case to upper case
nop
nop
bgt $t1, 122, next2
nop
subu $t1, $t1, 32
sb $t1, string($t0)
j loop

next:
bne $t1, 32, next2  # if ($t1 == ' ') check for next character
nop
nop
addiu $t0, $t0, 1
lb $t1, string($t0)
nop
nop
blt $t1, 97, loop  # Convert from lower case to upper case
nop
nop
bgt $t1, 122, loop
nop
subu $t1, $t1, 32
sb $t1, string($t0)

next2:
addiu $t0, $t0, 1
j loop

end:
li $v0, 4   # Print a new line.
la $a0, newline
syscall

li $v0, 4   # Print the new string.
la $a0, string
syscall

li $v0, 10   # End the program.
syscall

  .data
string: .asciiz "in a hole in the   ground there lived a hobbit"
newline: .asciiz " "

I'm not sure how to do exercise 2. Can someone help me out with that exercise?

Explanation / Answer

.text
.globl main

main:
li $v0, 4   # Print the original string.
la $a0, string
syscall

li $t0, 0
loop:
lb $t1, string($t0) #copy character in t1
nop
nop
beqz $t1, end #If $t1 is NULL we are done

nop
nop

bnez $t0, next #check if first character is in lowercase

nop
nop

bgt $t1, 90, else #if it is in lowercase then subtract 32

nop

addi $t1, $t1, 0x20 # if in uppercase then add 32.

sb $t1, 0($t0)

addi $t0, $t0, 1 #get next character

j loop

nop

else:

addi $t1, $t1, -0x20

sb $t1, 0($t0)

addi $t0, $t0, 1

j loop

next:

bne $t1, 32, next2

nop
nop
addiu $t0, $t0, 1
lb $t1, string($t0)
nop
nop

bgt $t1, 90, else

nop

addi $t1, $t1, 0x20

sb $t1, 0($t0)

addi $t0, $t0, 1

j loop

nop

else:

addi $t1, $t1, -0x20

sb $t1, 0($t0)

addi $t0, $t0, 1

j loop

next2:

addiu $t0, $t0, 1
j loop

end:

li $v0, 4   # Print a new line.
la $a0, newline
syscall

li $v0, 4   # Print the new string.
la $a0, string
syscall

li $v0, 10   # End the program.
syscall

  .data
string: .asciiz "in a hole in the   ground there lived a hobbit"
newline: .asciiz " "

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote