When can a user program execution be interrupted?
It won't be desirable to interrupt a program when an instruction is being executed and is in a state such as instruction decode. The most desirable place for program interruption will be when it has completed the prior instruction and is about to begin a new instruction. Figure below shows instruction execution cycle with interrupt cycle where interrupt situation is acknowledged. Please remember that even interrupt service routine is also a program and after recognizing interrupt next instruction executed by instruction cycle is first instruction of ISR (interrupt servicing routine).