> service movwf save_w > movf status,w > movwf save_s ... > movf save_s,w > movwf status > movf save_w,w > retfie You will find that this will cause you problems if you start doing anything in your non-interrupt code that uses the status register. The problem is that using a movf to restore registers affects the status register. You need to change things around to use a swapf instruction: int: movwf save_w swapf status,w movwf save_s ... swapf save_s,w movwf status swapf save_w,f swapf save_w,w retfie This will work on the 61, 71, and 84, but not on parts with bank-switched registers.