8051 Instruction Set Manual

ACALL

The ACALL instruction calls a subroutine located at the specified address. The PC is incremented twice to obtain the address of the following instruction. The 16-bit PC is then stored on the stack (low-order byte first) and the stack pointer is incremented twice. No flags are affected.

The address of the subroutine is calculated by combining the 5 high-order bits of the incremented PC (for A15-A11), the 3 high-order bits of the ACALL instruction opcode (for A10-A8), and the second byte of the instruction (for A7-A0). The subroutine that is called must be located in the same 2KByte block of program memory as the opcode following the ACALL instruction.

See Also: LCALL, RET

ACALL addr11
CACF0RS1RS0OV P
Bytes2
Cycles2
Encoding
A10A9A810001A7A6A5A4A3A2A1A0
Operation
PC = PC + 2
SP = SP + 1
(SP) = PC7-0
SP = SP + 1
(SP) = PC15-8
PC10-0 = A10-0
Example
ACALL LABEL

Related Knowledgebase Articles