I just finished my MIPs build class and I have a suggestion for you: Do not use PC Spim!
I used PC Spim, Mars and Qemu, and the best for general coursework is Mars (Mips Assembler and Runtime Simulator) . The editor is good, it crashes a lot less, and it makes it easy to debug and set breakpoints. It is free, open source, and created by Missouri State University.
It comes as a .jar file, so you can run it on both Windows and Linux. 
[ Mars Mips Emulator ]
In the general case, a simple way to determine if a number is even or odd is AND (bitwise) 1 with a number, and if the result is 0, then the number is even.
However, since we want all the even numbers in the series, we can just loop and increase our number by 2, as in your published code.
When adding an immediate value, you should use the addi or addu statements, not the add ones. You also said that you want to put the result in the register $ r12, but this is not a valid MIP register. Check out the MIPs wikipedia link for a list of all registries: MIPS - Registration.
I changed your program correctly. It stores the final result in $ t1 and then prints the final result.
.text .globl main main: li $t0, 0 # $t0 = loop counter li $t1, 0 # $t1 = sum of even numbers loop: addi $t0, $t0, 2 # generating even numbers in register $t0 add $t1, $t1, $t0 # compute the sum bne $t0, 100, loop # if t0 reached 100 then go to loop. li $v0, 4 la $a0, result syscall # print out "Sum = " li $v0, 1 move $a0, $t1 syscall # print out actual sum exit: li $v0, 10 # terminate program run and syscall # Exit .data result: .asciiz "Sum = "
After starting on Mars, I get the following:
Amount = 2550
- program completed -