Yes. Just be sure to synchronize the pushes and pops so the the correct values go into the correct registers.
Here is a rule: if a subroutine is expected to alter any of the S registers, it must first push their values onto the stack. Just before returning to the caller it must pop these values from the stack back into the registers they came from.
Here is an example program fragment.
Subroutine subB
calls subC
which uses two S registers.
Fill in the blanks so that subB
sees its
S registers when it regains control.