Pract11 Duda Conservar Registros

Pract11 Duda Conservar Registros

de Juan Sebastian Korenko Crisera -
Número de respuestas: 5
Para hacer el procedimiento como lo estaba pensando yo, precisaria utilizar 2 registro adicionales, como la letra dice que hay que conservarlo, lo que hice yo fue Guardar su contenido en el comienzo del procedimiento y luego restaurarlo. Esta bien asi o hay otra mejor manera de realizarlo.

Otra duda que me surgio a mi. mi arbol en el indice 1, arranca en el bit 4. Para el indice 0, que seria el arbol vacio ocuparia los 4 primeros bits. Por mas de que no tenga ningun dato de los hijos. Esta bien hacerlo asi?
O hay que hacer una pequeña correccion con los indices.

BuscarArbol proc
push BP
push CH
cmp BX,0
je PasoBase
mov BP,BX
shl BP,1
shl BP,1; multiplico x 4
cmp byte ptr ES:[BP],AX
je Encontrado
mov BX, byte ptr ES:[BP+2]
call BuscarArbol
mov CH,CL; guardo el temporal
mov BX, byte ptr ES:[BP+3]
call BuscarArbol
or CL, CH; resultado
jmp Fin

Encontrado:
mov CL,1;
jmp Fin;

PasoBase:
mov CL,0;
jmp Fin

Fin
pop CH
pop BP
ret
BuscarARbol endp

Gracias
En respuesta a Juan Sebastian Korenko Crisera

Re: Pract11 Duda Conservar Registros

de Gonzalo Tejera -
Hola. Supongo que estás hablando del problema 2. Estaría bien que enviaras también la parte a y comentaras el código.

Errores importantes:
- el operando del push/pop debe ser de tipo palabra.
- hablás de bits en lugar de bytes
- hacer un byte ptr contra AX o BX
- asumir que el entero es byte ptr, y es inconsistente pues para saltearlo en el nodo sumas 2.
- si lo encontrás en la derecha no deberías buscarlo por la derecha

Saludos
En respuesta a Gonzalo Tejera

Re: Pract11 Duda Conservar Registros

de Juan Sebastian Korenko Crisera -
Muchas gracias por las correcciones, me fueron muy utiles..

Solo una cuestion. Por como entendi la letra en BX se pasa el indice del puntero donde esta el arbol o subarbol que estamos tomando. Si yo quiere cargar en este BX un subarbol que viene el indice como un byte como debo hacer:

mov BL, byte ptr ES:[BP+2];guardo el Byte del arbol izquierdo
mov BH, 0

y

mov BL, byte ptr ES:[BP+3]; guardo el Bye del arbol izquierdo.
mov BH, 0


En el caso del registro CX, tengo que conservar el byte CH como venia antes del procedimiento no. En mi caso que yo queria utilizar la mitad mas grande en el procedimiento deberia guardalo antes y restaurar su valor despues no?

Gracias
En respuesta a Juan Sebastian Korenko Crisera

Re: Pract11 Duda Conservar Registros

de Gonzalo Tejera -
Sí, algo así el byte ptr está de más pues el tipo te lo está determinando en este caso el registro BL.

No entiendo mucho la duda del CX, si guardas todo el registro CX en el stack al principio del procedimiento no va a ser necesario volver a guardarlo y restaurarlo.

Saludos, Gonzalo
En respuesta a Gonzalo Tejera

Re: Pract11 Duda Conservar Registros

de Juan Sebastian Korenko Crisera -
Okey. Lo CX mi duda es:
Si tengo que devolver en CL el resultado, que tiene que quedar en la parte del registro CH lo que venia antes de iniciar el procedimiento, O puedo cambiarlo sin problema