Hi Guys,
So I started writing this program where i want the user to input a string
of numbers and letters and then i want to print out just the letters from
the sting ignoring all the letters and other characters such at , ; : * &...
I got it to take the string no problem and then i did the bgt and blt 's so
that it skips all the characters i don't want it to use but when it prints out
the resulting string I'm still getting the original string ;( I have no idea
where I made the mistake :( Please give me some ideas ;) thx

ask:     .asciiz "Type a character string (<31 chars long): " 
count: 	.asciiz "number: "
maxlen:  .word 31 
buffer:  .space 31            # allocates 31 bytes of memory in the data segment 
str:     .space 31 

        .globl main

	 li $v0, 4 
         la $a0, ask          	# Print "Type a character string: " 

         la $a0, buffer       	# $a0 holds the address of the read buffer 
         lw $a1, maxlen       	# Max number of chars (including the end of string char) 
         li $v0, 8            	# Load the service number 
         syscall              	# Call the operating system 

# Copy the buffer into str and replace lower case letters with upper case letters 

         li $t2, 58           	# the ASCII code of ":" 
	 li $t3, 47		# the ASCII code of "/" 
         li $t0, 0            	# $t0 is the index
	 li $t4, 0

	 lb $t1, buffer($t0)  	# fetch a char from the buffer 
	 blt $t1, $t2, skip   	# the char is before ":", skip it Branch on Less Than
         bgt $t1, $t3, skip   	# the char is after "/", skip it  Branch on Greater Than

	 addi $t4, $t4, 1           
	 sb $t1, str($t0)     	# and store it into str 
	 addi $t0, $t0, 1     	# increment index 
	 bne $t1, $0, loop    	# if $t1 <> "end of string" then goto loop 


	 li $v0, 4 
         la $a0, str          	# Print str 

	 sub $t4, $t4, 2
	 li $v0, 4
	 la $a0, count
	 move $a0, $t4
	 li $v0, 1
This article has been dead for over six months. Start a new discussion instead.