Hola, te paso unas rutinas en asm, como macros para comparar valores, tanto para registros como para literales... espero te sirvan.
;Compare Jump Above. Si [var1] > [var2] => [var3] /Compara y Va si Mayor
cjal macro var1,var2,var3
movlw var2^0FFh
addwf var1,w
btfsc CARRY
goto var3
endm
cja macro var1,var2,var3
movf var1,w
subwf var2,w
btfss CARRY
goto var3
endm
;Compare Jump Above or Equal. Si [var1] >= [var2] => [var3]
cjael macro var1,var2,var3
movlw var2
subwf var1,w
btfsc CARRY
goto var3
endm
cjae macro var1,var2,var3
movf var2,w
subwf var1,w
btfsc CARRY
goto var3
endm
;Compare Jump Below. Si [var1] < [var2] => [var3] /Comp y Va si Menor
cjbl macro var1,var2,var3
movlw var2
subwf var1,w
btfss CARRY
goto var3
endm
cjb macro var1,var2,var3
movf var2,w
subwf var1,w
btfss CARRY
goto var3
endm
;Compare Jump Below or Equal [var1] =< [var2] => [var3]
cjbel macro var1,var2,var3
movlw var2^0FFh
addwf var1,0
btfss CARRY
goto var3
endm
cjbe macro var1,var2,var3
movf var1,0
subwf var2,0
btfsc CARRY
goto var3
endm
Saludos.
Alejandro.