[2016][Diciembre][Problema 1]

[2016][Diciembre][Problema 1]

de Franco Danilo Wanseele Gonzalez -
Número de respuestas: 3
Buenas que tal? Viendo la solución del problema 1 me surgió alguna duda. 

El problema 1 consiste en compilar en ensamblador 8086 la siguiente función:


y la solución propuesta comienza de la siguiente forma: 



Mis dudas son:

1. Es correcto hacer mov bp, sp sin primero hacer push bp? En caso de que se pueda, el puntero bp quedaría apuntando a la misma posición que lo hace sp, sin cargar nada nuevo al stack? Para este caso quedaría sp y bp apuntando a la dirección de retorno.

2. Luego de llamar a la función, en el stack quedaría: 

.    original(char);

.    buscar(char);

.    dirección de retorno;

en ese orden.

Si es cierto que bp apunta a la ultima posición del stack (dirección de retorno), por que 'original' y 'buscar' se  accede mediante[bp+6] y [bp+4] ?

Gracias !!


En respuesta a Franco Danilo Wanseele Gonzalez

Re: Duda examen 2016

de Federico Rivero -

Hola!

Disculpame la demora en la respuesta.

1) En este caso se puede hacer así porque no se pedía preservar los registros. En caso de que pidamos preservarlos hay que incluir el 'push bp' antes para preservar su valor.  En este caso, como bien decís, ambos quedan apuntando a la misma posición del stack.

2) Estaba mal la solución, original esta´en [bp + 4] y buscar en [bp + 2]. Ya corregí la solución.

 Saludos,

       Federico

En respuesta a Federico Rivero

Re: Duda examen 2016

de Rossana Guerra Celano -

Como por el paro no se si podré ir a la consulta, pregunto si en ese examen no falta actualizar bp en la etiqute fin.

No entiendo como puede obtener el bp si al modificar el stack (add sp, 2) pierde el valor que tenía bp.

Gracias, saludos!