Para saber cuánto sumarle a BP tenés que ver a dónde está apuntando ese registro.
Al comienzo de la rutina el stack tiene lo siguiente:
indice
dir_retorno <- SP
Si te fijas, la rutina lo primero que hace es restar 2 a SP, por lo tanto el stack queda así:
indice
dir_retorno
espacio_reservado <- SP
Luego se hace PUSH BP, por lo tanto el mapa queda asi:
indice
dir_retorno
espacio_reservado
viejo BP <- SP
y por ultimo se hace MOV BP, SP, por lo tanto BP apunta al "viejo BP":
indice
dir_retorno
espacio_reservado
viejo BP <- SP, BP
Cada elemento en el stack ocupa 1 palabra (2 bytes) por lo tanto:
SS:[BP] apunta a viejo_BP,
SS:[BP+2] apunta a espacio_reservado
SS:[BP+4] apunta a dir_retorno
SS:[BP+6] apunta a indice
Saludos,
Gustavo