You are on page 1of 1

ACALL

Home Instructions 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
C AC F0 RS1 RS0 OV

Bytes
Cycles
Encoding

A7A6A5A4A3A2A1A0

2
2
A10A9A810001

Operation
PC = PC + 2
SP = SP + 1
(SP) = PC7-0
SP = SP + 1
(SP) = PC15-8
PC10-0 = A10-0

Example
ACALL LABEL

http://www.keil.com/support/man/docs/is51/is51_acall.htm

You might also like