background image

Vol. 1 6-5

PROCEDURE CALLS, INTERRUPTS, AND EXCEPTIONS

1. Pops the top-of-stack value (the return instruction pointer) into the EIP register.
2. Pops the top-of-stack value (the segment selector for the code segment being returned to) into the CS register.
3. If the RET instruction has an optional n argument, increments the stack pointer by the number of bytes 

specified with the n operand to release parameters from the stack.

4. Resumes execution of the calling procedure.

6.3.3 Parameter 

Passing

Parameters can be passed between procedures in any of three ways: through general-purpose registers, in an 
argument list, or on the stack.

6.3.3.1  

Passing Parameters Through the General-Purpose Registers

The processor does not save the state of the general-purpose registers on procedure calls. A calling procedure can 
thus pass up to six parameters to the called procedure by copying the parameters into any of these registers 
(except the ESP and EBP registers) prior to executing the CALL instruction. The called procedure can likewise pass 
parameters back to the calling procedure through general-purpose registers.

6.3.3.2  

Passing Parameters on the Stack

To pass a large number of parameters to the called procedure, the parameters can be placed on the stack, in the 
stack frame for the calling procedure. Here, it is useful to use the stack-frame base pointer (in the EBP register) to 
make a frame boundary for easy access to the parameters.
The stack can also be used to pass parameters back from the called procedure to the calling procedure.

Figure 6-2.  Stack on Near and Far Calls

Param 1
Param 2

ESP Before Call

Stack During

Near Call

Stack During

Far Call

Calling CS

Param 1
Param 2

Calling EIP

Param 3

Param 3

ESP After Return

Calling CS

Param 1
Param 2

Calling EIP

Param 3

Param 1
Param 2
Param 3

Note: On a near or far return, parameters are

Calling EIP

ESP After Call

Stack During

Near Return

Calling EIP

released from the stack based on the
optional n operand in the RET n instruction.

ESP Before Return

ESP Before Call

ESP After Call

ESP Before Return

ESP After Return

Stack During

Far Return

Stack
Frame
Before
Call

Stack
Frame
Before
Call

Stack
Frame
After
Call

Stack
Frame
After
Call