peer review
The code follows the lab instructions well: SR is set correctly, the user process makes the syscall with the right service code, and the kernel handles exceptions clearly. You only use $k0 / $k1 in the kernel, which is by the rules. The loop logic in proc1 is simple and works nicely to print A–Z over and over. A few 'nop' are unnecessary—keep them only after 'mfc0' and in delay slots. Good job, Sami!