written 6.2 years ago by |
RET is used to return from a subroutine previously called by LCALL or ACALL. Program execution continues at the address that is calculated by the topmost two bytes off the stack. The most-significant-byte is popped off the stack first, followed by the least-significant-byte. Addresses of RET is loaded from the stack.
RETI is used to return from an interrupt service routine. It first enables interrupts of equal and lower priorities to the interrupt that is terminating. Program execution continues at the address that is calculated by the topmost two bytes off the stack. The most-significant-byte is popped off the stack first, followed by the least-significant-byte. RETI addresses is loaded from the stack and the global interrupt flag is set.
RETI functions identically to RET if it is executed outside of an interrupt service routine.