pregunta 2- dic 2019

pregunta 2- dic 2019

de Matilde Ines Gomez De Salazar Gigirey -
Número de respuestas: 2

Esta es la pregunta:

Indique cuál es el contenido de cada dirección de memoria del stack, SP y BP luego de ejecutar las siguientes instrucciones en 8086 para los siguiente valores iniciales: AX = 0x0ACA, BX = 0x00BA, CX = 0x0000, DX = 0xFEDE, SP = 0x3F00, BP = SP. 1.PUSH DX 

2.MOV CX,-1

 3.PUSH CX 

4.PUSH BP 

5.MOV BP,SP

 6.MOV [BP + 2],AX 

7.MOV [BP + 4], BX

y esta la solución:

Stack: 

dir: SS:0x3EFA valor: 0x3F00

 dir: SS:0x3EFC valor: 0x0ACA 

dir: SS:0x3EFE valor: 0x00BA 

BP = 0x3EFA

 SP = 0x3EFA

Lo que no entiendo es cómo se llega al  BP = 0x3EFA , esa direccion los valores si llego y tambien endiendo  

SS:0x3EFC = bp+2 y SS:0x3EFE = bp +4 pero no entiendo como se llega a la direccion de bp, desde ya gracias. 

En respuesta a Matilde Ines Gomez De Salazar Gigirey

Re: pregunta 2- dic 2019

de Federico Rivero -

Estimada:

El último valor en modificar el BP es la línea 4, MOV BP,SP, por lo cual se deduce que SP = 0x3EFA en esa línea. Eso se puede ver fácilmente recordando que cada PUSH realiza: 

SP = SP - 2
MOV SS:[SP], parametro

(Ver cartilla).

Por lo tanto si el valor inicial de SP es 0x3F00, y se realizan 3 push. Entonces SP = 0x3F00 - 6 = 0x3EFA , y por tanto ese es el valor copiado a BP.

Saludos!

         Federico