You can, of course, program pics in assembly language. There are people out there who will tell you that to get the real power out of these little dudes you need to program them in assembly. These people are insane and need medical help. Pick a higher level language and use it. Once you have to start worrying about jumping between code pages and variables in different pages of ram, you’ll dump assembly as fast as very fast thing.
I use the SourceBoost compiler. It’s got great support, isn’t expensive compared with some of them out there and has free (albeit limited) trial versions. There are lots of other C compilers out there for pics. Of course, you can choose whichever compiler you like and best of luck – C ain’t as portable as it used to be, especially in the world of embedded compilers. It’s not that hard though, so if you use something else, then you’ll be able to make use of the stuff here.