[quote user="Eric Zhang16395"]Do I need to manually push these registers in the begining of the ISR and pot them out at the end of the ISR?[/quote]
No. If an ISR, marked with the __interrupt keyword, calls a function, the compiler generated code preserves all the registers.
Thanks and regards,
-George