|
-
December 11th, 2010, 06:08 PM
#1
Help with mips program that reverses each word.?
Hello, I have a problem that has been driving me crazy. I have a program that reads a string and then reverses the string but what I need is the program to reverse each word like: ("10 is ten" becomes "01 si net"). Can anyone help? Here is what I have:
# PROGRAM:
.data # Data declaration section
a_string: .asciiz "desrever eb ot gnirts a si sihT\n"
.text # Assembly language instructions
main: la $a0,a_string #base address of string
li $v0,4 #read string
syscall
addi $a1,$zero,32 #pass lenght of string
jal stringreverse #reverse the string
stringreverse:
add $t0,$a0,$zero #starting address
add $t1,$zero,$zero #i = 0
addi $t2,$a1,-1 #j = length-1
loop:
add $t3,$t0,$t1
lb $t4,0($t3) #the lb string[i]
add $t5,$t0,$t2
lb $t6,0($t5) #the lb string[j]
sb $t4,0($t5) #string[j] = string[i]
sb $t6,0($t3) #string[i] = string[j]
addi $t1,$t1,1 #i++
addi $t2,$t2,-1 #j--
#if i>=j then break - $t1 < $t2
slt $t6,$t2,$t1
beqz $t6,loop
exit:
li$v1, 4 #system call to print reversed string
la$a2, 0($a1)
syscall
li $v0, 10
syscall # Exit program
Thanks in advance for any help
-
December 13th, 2010, 08:34 PM
#2
Re: Help with mips program that reverses each word.?
Since your existing method works just make a method that calls that method to reverse each word or "substring", you can find such "substrings" by finding the 2 ' ' (space) characters.
Just make a loop to go through the whole string, but be careful when writing the code for the first word, and last word because they only have a space on 1 side
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|