Primero: Las primeras instrucciones que has escrito son correctas y son en asembler.
Es para comparar si dos valores son iguales. (o diferentes)
También puedes hacerlo así:
movf a,w
subwf b,w
btfsc STATUS,Z
goto igual
Con el carry:
si a < b ir a menor_que
movf b,w
subwf a,w
btfss STATUS,C
goto menor_que
si a > o = b ir a mayor_o_igual
movf b,w
subwf a,w
btfsc STATUS,C
goto mayor_o_igual
si a < o = b ir a menor_o_igual
movf a,w
subwf b,w
btfsc STATUS,C
goto menor_o_igual
si a <> b ir a distinto
movf b,w
subwf a,w
btfsc STATUS,Z
goto distinto
segundo: lo que has escrito del "if" es C. y aunque no conozco casi nada de C creo que está mal escrita la sentencia. Pregunta a los genios del C.