TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: bones18 en 22 de Marzo de 2007, 11:42:09
-
Wuenas,
necesitaria hacer(o a lo mejor ya esta hechi :lol:) un rutina que saber si número entre el 20 y el 31 es más grande que otro en el 20 y el 31, ambos numeros almacenados en un byte cada uno
ejemplo
es el 25 más grande que el 30 respuesto No
es el 25 más grande que el 22 respuesta Si
lo que en C seria if x < y return(true)
como puedo hacerlo en assembler?
gracias!
-
Hola bones18,
Depende de que pic uses, por ejemplo en la familia 18 (y otras) tenes instrucciones de comparacion como por ejemplo CPFSEQ, CPFSGT o CPFSLT.
En los pics donde no tenes estas instrucciones, podes hacerlo por la forma tradicional. Primero restas los dos numeros (N1 - N2) y despues te fijas como quedo el STATUS, si el bit Z esta activo significa que son iguales (N1 = N2). Si no son iguales, ves el bit C para saber si hubo carry (borrow), dependiendo del estado de este bit sabras si N1>N2 o N1<N2.
Saludos
-
es para un 16f876
tenes razón, ya he visto la manera
gracias