Difference between LW and SW in MIPS assembly
LW loads a word from memory into a register.
SW saves a word from a register into RAM.


To copy from one register to another you would typically perform an operation which resulted in the data of one register being copied intact into the other register, such as:

or $s2, $zero, $t1


That has the effect of ORing the value in $t1 with the value in $zero (which is always zero), the result of which is $t1 unmodified, which is then placed in $s2.

MIPS can be confusing as there is no instruction specifically for copying from one register to another, but then that's the essence of RISC - why have a MOVE instruction when you can perform the same operation with an OR? It just wastes instructions.

Most assemblers have a collection of macros to make your life easier. You may well find that yours has support for a virtual MOVE instruction, as well as others. Some expand to just one instruction, but some expand to more than one, such as "li", which usually expands to something along the lines of:

lui $t1, %HI(val)
ori $t1, $t1, %LO(val)


I.e., load the upper 16 bits into $t1, then OR the lower 16 bits over the top of it.