Operation: | ACALL |
Function: | Absolute Call Within 2K Block |
Syntax: | ACALL code address |
Instructions | OpCode | Bytes | Cycles | Flags |
ACALL page0 | 0x11 | 2 | 2 | None |
ACALL page1 | 0x31 | 2 | 2 | None |
ACALL page2 | 0x51 | 2 | 2 | None |
ACALL page3 | 0x71 | 2 | 2 | None |
ACALL page4 | 0x91 | 2 | 2 | None |
ACALL page5 | 0xB1 | 2 | 2 | None |
ACALL page6 | 0xD1 | 2 | 2 | None |
ACALL page7 | 0xF1 | 2 | 2 | None |
Description: ACALL unconditionally calls a subroutine at the indicated code address. ACALL pushes the address of the instruction that follows ACALL onto the stack, least-significant-byte first, most-significant-byte second. The Program Counter is then updated so that program execution continues at the indicated address.
The new value for the Program Counter is calculated by replacing the least-significant-byte of the Program Counter with the second byte of the ACALL instruction, and replacing bits 0-2 of the most-significant-byte of the Program Counter with 3 bits that indicate the page. Bits 3-7 of the most-significant-byte of the Program Counter remain unchaged.
Since only 11 bits of the Program Counter are affected by ACALL, calls may only be made to routines located within the same 2k block as the first byte that follows ACALL.
See Also: LCALL, RET, Instruction Set