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
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
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
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
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
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
En respuesta a Juan Sebastian Korenko Crisera
Re: Pract11 Duda Conservar Registros
de Gonzalo Tejera -
Si la letra no dice nada respecto a conservar registros podes elegir vos lo que hacer con la parte alta.
Saludos, Gonzalo