IA-32 Assembly Language Reference Manual

Far Call -- Procedure Call (lcall)

lcall   	immptr
lcall   	*mem48 
Operation

far call ptr16:{16|32} far call m16:{16|32}

Description

The lcall instruction calls intersegment (far) procedures using a full pointer. lcall causes the procedure named in the operand to be executed. When the called procedure completes, execution flow resumes at the instruction following the lcall instruction (see the return instruction).

lcall ptr16:{16|32} uses a four-byte or six-byte operand as a long pointer to the called procedure.

lcall m16:{16|32} fetches the long pointer from the specified memory location.

In Real Address Mode or Virtual 8086 Mode, the long pointer provides 16 bits for the CS register and 16 or 32 bits for the EIP register. Both forms of the lcall instruction push the CS and IP or EIP registers as a return address.

Example

Use a four-byte operand as a long pointer to the called procedure.

lcall $0xfebc, $0x12345678

Fetch a long pointer from the memory location addressed by the edx register, offset by 3.

lcall *3(%edx)