By convention, register $a0 is used to pass the argument.
But in the body of the subroutine
register $a0 is used to pass arguments to
the trap handler.
So a safe copy must be made in an "S" register.
Here is a section of the main program. It prints out the contents of both structs:
. . . .
# $s1 contains the address of the first struct
# $s2 contains the address of the second struct
#
# write out the first struct
move ____,____
jal PStruct
# write out the second struct
move ____,____
jal PStruct