Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

 
 
Thread Tools Display Modes
Prev Previous Post in Thread   Next Post in Thread Next
Old Feb 8th, 2005, 9:36 PM   #1
tsgrimey
Newbie
 
Join Date: Feb 2005
Location: CT
Posts: 3
Rep Power: 0 tsgrimey is on a distinguished road
SPIM Assembly Programming Simulation Problem

I'm trying to get this small program to work properly, but having problems. All its suppose to do is read in a string from a user, then output to console with the characters reversed. I also must mention that I can only change the code between "now reverse code here"...and..."not beyond here". Anyone know how to solve this?


# reverse --- Read and echo a reversed copy of it to the console

            .data
line:       .space 80
reversed_line: .space 80
prompt:     .asciiz "Enter a line to be echoed.\n"
nl:         .asciiz "\n"

            .text
            .globl main
main:       

            li $v0, 4         # Syscall code for print string.
            la $a0, prompt    # Starting address of string.
            syscall

            li $v0, 8         # Syscall code for read string.
            la $a0, line      # Starting address of buffer.
            li $a1, 80        # Length of buffer.
            syscall

            li $v0, 4
            la $a0, nl
            syscall

            li $v0, 4
            la $a0, line
            syscall


            # now reverse it your code should go here
            
	    la   $s2, reversed_line
            addi $s2, $s2, 79       # end of str2
            addi $t1, $zero, 0      # null
            sb   $t1, 0($s2)
            addi $s2, $s2, -1
            lb   $t2, nl            # newline
            sb   $t2, 0($s2)

            la   $s1, line

loop:
            lb   $t1, 0($s1)        # read char from str1
            beq  $t1, $t2, done     # '\n' - end of str1 ?

            addi $s2, $s2, -1       # update str2 pointer
            sb   $t1, 0($s2)        # write to str2

            addi $s1, $s1, 1        # update str1 pointer
            j    loop
        
done:   

	    # and not beyond here  


            # now print the reversed string  
         
            li $v0, 4 
	    la $a0, reversed_line    
	    syscall


            li $v0, 4
            la $a0, nl
            syscall

	    j main

            li $v0, 10        # Syscall code for exit.
            syscall

Last edited by tsgrimey; Feb 8th, 2005 at 9:38 PM.
tsgrimey is offline   Reply With Quote
 

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 5:27 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC