Autor Tema: Comparar dos bytes!!  (Leído 3848 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado FER_CBA

  • PIC10
  • *
  • Mensajes: 13
Comparar dos bytes!!
« en: 22 de Abril de 2007, 17:28:35 »
Alguien conoce una rutina que funcione para compara 2 bytes de los cuales solo uso los 4 bits menos significativos, osea que el valor del byte nunca es mayor a 15. Uso un pic 16F628a en lenguaje ensamblador. Estuve tratando con los bits dc yc ero no me funciono. necesito saber cuando uno es mayor que otro o igual. gracias

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comparar dos bytes!!
« Respuesta #1 en: 22 de Abril de 2007, 21:42:32 »
Hola.Por lo que te entendí, podría ser así:

Compara
                    movf Byte1,W           ;W= Byte1
                    subwf Byte2,W          ;W = Byte2 - W = Byte2 - Byte1
                    btfsc  STATUS,Z       ;¿Son distintos?
                    goto SonIguales        ;No.Entonces son iguales.

                    btfsc  STATUS,C       ;¿Byte2 > Byte1? (*)
                    goto   Byte1EsMayor ;No.(Entonces Byte1 es mayor a Byte 2)

Byte2EsMayor  nop                        ;Si.Byte2 es mayor a Byte1

(*) STATUS,C se pone a CERO SI Y SOLO SI SE PRODUCE UN UNDERFLOW, es decir que la resta da "negativa".
Entonces, si la resta da mayor a cero o igual, el bit C del registro STATUS se seteará.
Fijate que yo debería haber puesto como comentario entonces en esa linea:
btfsc  STATUS,C       ;¿Byte2 => Byte1?

pero como ya había comprobado mediante el Z si la resta habia dado cero, puedo eliminar el signo =, quedando:
btfsc  STATUS,C       ;¿Byte2 > Byte1?

Hay muchas variantes de hacer esto mísmo.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything