buscar PROC
CMP AX ES:[BX]
CMP AX ES:[BX]
JE igual
JL menor
JG mayor
else:
MOV CL, 0
JMP fin
igual:
MOV CL, 1
JMP fin
menor:
CMP ptr byte ES:[BX], 0
JE else
PUSH BX
MOV ptr byte BX ES:[BX + 2]
CALL buscar
POP BX
JMP fin
mayor:
CMP ptr byte ES:[BX], 0
JE else
PUSH BX
MOV ptr byte BX ES:[BX + 3]
CALL buscar
POP BX
JMP fin
fin:
RET
buscar ENDP
Siendo el codigo en alto nivel el siguiente
bool buscar(int N; byte i)
{
if(arbol[i].dato == N)
return true
else if (arbol[i].dato < N) && (arbol[i].izq != 0)
return buscar(N, arbol[i].izq)
else if (arbol[i].dato > N) && (arbol[i].der != 0)
return buscar(N, arbol[i].der)
else return 0;
}
Tengo dudas con las directivas byte ptr, al hacer x ejemplo MOV ptr byte BX ES:[BX + 2] Carga en BH 0x00 y en BL el byte almacenado en memoria?, Tambien se puede hacer MOV incluyendo a BX como registro para almacenar y tambien para referenciar indirectamente a memoria a cargar en la misma instruccion?
Gracias!