There is a register which can be used by a subroutine to access parameters very efficiently. This register is the Base Pointer. When it is used to obtain an offset, the default segment is the STACK SEGMENT. If the entry to a subroutine begins with these instructions the stack will look like the picture on the next page.
PUSH
This sequence is so common that there is a single instruction equivalent:
ENTER
This allows all parameters to be accessed as BP plus the appropriate offset and local data elements to be accessed as BP minus the appropriate offset.
The instructions to exit are either:
MOV
LEAVE