RET no funciona

RET no funciona

de Franco Arturo Toscano Cannella -
Número de respuestas: 2

Por algun motivo que no logro entender el RET no me funciona. Al pararme en él con el debugger cuando se ejecuta comienza a buscar como si fuera la direccion para levantar en el stack pointer y en vez de salir de la subrutina la reinicializa. Se me hace un infinit loop porque el RET no retorna nunca....
El stack pointer no lo utilizo nunca (al menos no a conciencia), no entiendo porque no encuentra la direcciòn correcta. 
Tampoco logro ver el Stack pointer con "backtrace" en el debugger para ver que almacena.

Sugerencias?


En respuesta a Franco Arturo Toscano Cannella

Re: RET no funciona

de Franco Arturo Toscano Cannella -

Respondo por si a alguien le pasa:

En mi caso concreto habìa puesto alpha y beta en las memorias 0xFFFF y 0xFFFE y por algun motivo que desconozco se ve que el apuntador de memorias se trancaba ahì y no bajaba y el stack pointer no guardaba nada. Entonces cuando el RET buscaba sacaba cualquier cosa.
Mi solucion fue poner alpha y beta en 0xB402 y 0XB403 y anduvo

Moraleja usar las celdas máximas puede ser mala idea.

En respuesta a Franco Arturo Toscano Cannella

Re: RET no funciona

de Diego Barreiro Indart -

El stack empieza en 0xFFFF y crece hacia abajo, no es buena idea que uses esa memoria, ni nada cerca de esos lugares: si crece el stack te pisa lo que guardaste, y si guardás después que ya creció el stack, lo pisás vos. Si guardaste alfa y beta después de haber hecho el CALL, vos mismo estabas pisando la dirección de retorno, y ya el RET iba a ir a cualquier lado menos donde tenía que ir.

Saludos