Me parece que estás confundiendo EBP con ESP.
Si haces:
mov ax, 5
mov bp, 6
push ax
El valor de BP pasa a ser 6 y [BP] (o mejor dicho, el valor de la posicion de memoria a la cual apunta BP) es incierto. Esto es, siempre y cuando no hayas colocado algo en esa posicion. Ahora, para hacer esto, mejor utiliza los registros "comunes": EAX, ECX, EDX.
En Windows hay reglas de conservación ó preservación de los regsitros. "Normalmente" nunca utilizas EBP en una rutina.
Para recuperar el valor pusheado, podrias hacer (en ECX):
ó
Como vez, ESP es el que se utiliza a la hora de trabajar con la pila...
Sin ánimos de ofender, te recomiendo un tutorial básico de ASM. Te puede sacar este tipo de dudas...
Saludos!