.
Esto que voy a escribir puede parecer una tontería para muchos, pero muchos otros tal vez lo encuentren útil.
Lo que quiero explicar es el método que uso para saber comparar dos registros para determinar cuál tiene un valor mayor (o menor, variando un poco la cosa). Espero que si alguien conoce un método más eficiente me lo haga saber
.
La idea es simple:
1. Cargo W con 0xFF,
2. Cargo un registro auxiliar (R_AUX, por ej.) con el valor de W (o sea 0xFF),
3. Cargo W con el valor del primer registro a comparar (REG1 para este caso),
4. Resto W a R_AUX y guardo el resultado en R_AUX,
5. Cargo W con el valor del segundo registro a comparar (REG2),
6. Sumo W con R_AUX (guardo en W o R_AUX, lo mismo).
7. Si el bit C del registro STATUS está en 1, REG2>REG1, sino REG2<=REG1 (menor o igual).
Si entre los pasos (4) y (3) agregamos:
4,5. Incremento R_AUX en 1 y guardo en R_AUX.
El bit C en 1 nos indicará que REG2>=REG1, en 0 dirá que REG2<REG1.
Teóricamente, si directamente resto REG1 de REG2, y resulta que REG2 era mayor, el bit C debería ponerse en 1, con lo cual la cosa sería mucho más sencilla. Pero lo probé y no me funcionó. Si alguien pudo así, por favor hágamelo saber.
Saludos.