Hola,
la idea del "truco" es usar BP para tener una referencia en el stack. Para esto hacemos mov BP,SP lo cual hace que BP apunte al tope del stack y a medida que crezca el stack y SP vaya cambiando su valor, BP no lo hará y por eso tenemos una referencia fija. Antes de hacer esto, generalmente hacemos PUSH BP, para poder preservar el valor anterior del registro. Acá podes ver un diagrama (de otro ejercicio) de como queda el stack luego de hacer
push BP
mov BP, SP
fijate que luego de hacer el mov BP queda apuntando a donde guardaste BP, no es necesario que dejes nada vacío. Lo importante es tener una referencia fija y saber donde está.
En el caso del stack (va respuesta para ambas preguntas) todas las posiciones del stack ocupan de 2 bytes siempre, por ende las podemos representar como en mi dibujo, pongo todo el valor en la posición que son 2 bytes. Internamente, se guarda utilizando Little Endian, donde en la posición más chica de memoria va el byte menos significativo (parte baja). Algo como esto (otro ejemplo):
Si algo no queda claro por favor pregunten de nuevo
saludos!