I haven't done MIPS in a while, so bear with me.
CODE
loop:
li $v0,8 #takes an input
syscall
li $t0, 0 #I forget if "lb" will zero the rest of the register, so do it first or check.
lb $t0, ($a0) #copy first byte from string(which starts at mem address in $a0
li $t1, 10 #ascii for '\n'
bne $t0, $t1, loop
#etc...
You seem to have your operators a bit confused. la is for loading arrays, so normally you would pass it the identifier for memory declared in the .data block. sw is for taking from registers and putting them into memory.
li is what you should use to load integer values into a register.
You also don't need to have the jump. You can just say while not equal, go back to the start using "bne"
I don't remember if you can load character values using li, but I doubt it. 10 is the int value of '\n' I think.
Syscall for strings also loads the memory address of the string into $a0, not $v0.
I've adjusted the code to reflect what I mentioned.
I think that's all correct. I haven't done this in a year though.
Good luck!
Per