There's nothing weird about that error... but your code, well, that is kinda weird.
Tell me again what you think these lines are doing?
lw $a0, 0x500 #set up contiguous memory
sw $t0, 0($a0)
What I see is:
lw $a0, 0x500 # Load the *contents* of (invalid) memory address 0x00000500 into register $a0
sw $t0, 0($a0) # Store the (uninitialized) value in $t0 into the address pointed to by $a0
Note that even if the first line works, $a0 won't contain 0x00000500. It contains the value of the word that happens to be stored at memory address 0x00000500.
The problem is that 0x00000500 is not accessible by your code. As I understand, a MIPS processor has different modes, and the normal mode doesn't allow access to that segment of memory. That's why you would expect an error like "Unimplemented RAM memory access".
I think you may have to go back to your textbook for the right answer to your original problem. If, however, your only goal is what you said - "the values that I make (the 0x1122 ... etc) can be stored into contiguous RAM locations." - then this will do it, no code required. But probably not the way you expected or wanted...
.data
.byte 0x00
.byte 0x11
.byte 0x22
.byte 0x33
.byte 0x44
.byte 0x55
.byte 0x66
.byte 0x77
.byte 0x88
.byte 0x99
.byte 0xaa
.byte 0xbb
.byte 0xcc
.byte 0xdd
.byte 0xee
.byte 0xff