edit: sorry strcopy not strcat

Hi I'm new to MIPS and just need some basic clarification on what is actually going on here. I'm trying to make a copy of string1 into string2 by reading through the string copying each bit seperately, and stopping at the 0 terminator:

string1:	.asciiz "Hello"
string2:	.space 128

main:	la	$a2, string1
	la	$a3, string2
	jal 	strcopy
moo:	la	$a0, $a3
	li	$v0, 4
	li	$v0, 10

strcopy:	move	$v0, $a2
loop:	lbu	$t0,0($a2)
	sb	$t0,0,($a3)
	addi	$a2,$a2,1
	bgtz	$t0,loop
	jal	moo

The only problem is im getting really mixed up with all my $a-something.
I've looked at other examples of strcat but I can never actually figure out which line actually overwrites the one string. I think it's cause I don't fully understand the principle of $a0.

Could someone please adjust the above so that string1 will be copied into string2?

Thanks for any help or information you can give.

10 Years
Discussion Span
Last Post by Destini

Are you taking a course or just doing this on your own?

You need to watch a few things. First, though, your strcopy should look like this:

strcopy:	lbu	$t0,($a2)	# load the char at $a2
		sb	$t0,($a3)	# save the char at $a3
		addi	$a2,$a2,1	# next $a2
		addi	$a3,$a3,1	# next $a3
		bgtz	$t0,strcopy	# do it all again?
		jr	$ra		# return to caller

If you don't already have a good MIPS reference you need to get one. It makes all the difference.
This one at WikiPedia is short, but good.

1. Every jal should be to a subroutine that returns with jr $ra. Using jal means that you don't need moo: at all.

2. The link I gave you gives the general meaning of all the register names.

3. The syscall to print the string requires $a0 to have the address of the string to print and $v0 to have the value 2.

The syscall to terminate the program only requires $v0 to have the value 10.

Hope this helps.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.