Me está matando el tema del pasaje de parámetros en este ejercicio.
Primero:
Se invoca de la forma:
PUSH puntero_segmento
PUSH puntero_desplazamiento
CALL nodos_dos_hijos
POP resultado
Y al comienzo del procedimiento se hace:
pop AX
; obtengo el puntero al arbol del stack
pop BX
pop ES
¿O sea se hacen dos PUSH pero luego tres POP?
Pero después peor aún porque se hacen:
push AX
push BX
push ES
push ES:[BX + 6]
push ES:[BX + 4]
O sea 5 push vs tres POP.
Me parece que algo se me está escapando. Si alguien me aclara estaría buenísimo.
Saludos !
-----------------
Agrego: Ya me avivé por qué era lo primero, el call hace un PUSH del ip al stack, por eso se saca del stack el IP y se guarda en AX.
En respuesta a Juan Pablo Sierra Ansuas
Re: [ Practico 10 ej 3 ] Duda sobre la recursion
Buenas, te respondo para qué se hacen los push:
push AX es para guardar el ip
push BX y push ES son para preservar los registros, porque después se modifican en la llamada a nodos_dos_hijos. Si no hacés eso cuando volvés no podés hacer la llamada para el nodo derecho.
Los dos últimos push son para pasar los parámetros a nodos_dos_hijos.
Espero que esté clara la explicación.
Saludos!
En respuesta a Javier Agustin Farias Gonzalez