I'm basically a hardware guy, however I have done quite a bit of programming for the PIC16 and PIC18 series always in assembler. I always think in 'hardware' terms and am uneasy with the vitualisation C gives you. I know you can have a look at what assembly the C has complied to, but then you just might as well written it in assembler in the first place.