Да, пожалуй, для 16 пиков лучше хайтека сишных компиляторов не найти. Вот 18 и выше - это другое дело. Тут, как говорится, есть варианты.
Итак OPTION_REG,INTCON,STATUS и прочие регистры асм увидит, но вначале каждого нужно ставить нижний пробел, например:
#asm
bcf _STATUS, 0
#endasm
То же самое нужно делать и для объявленных вами глобальных переменных. Например:
char i;
#asm
movlw 0x0D
movwf _i
#endasm
Вот с локальными переменными - проблема. Лучше с этим не заморачиваться, хотя, если очень очень нужно - всегда можно посмотреть асмовский листинг.
И ещё один совсем маленький ньюанс - вставки типа asm("bcf _STATUS, 0") и
#asm
bcf _STATUS, 0
#endasm
отличаются, это важно в циклах. Почитайте даташит.