For 16F1xxx, mnemonics for instructions are only 47 and generally make sense. The main exception raised by some people is "sublw," which translates to subtract WREG from a literal. A feature of that series is the ability to operate directly on the w (working) register. The name WREG (depending on how you set case sensitivity) rather than "w" must be used. (Actually, I have never tired using just w so I can't be sure of that.) Another thing to watch out for is the carry bit (STATUS,0). Microchip calls it the carry/borrow bit. Its behaviour makes sense, but some people get confused by its behavior during subtraction. Its behavior also varies a little between 16Fxxx and 16F1xxx chips, so I always keep the 2-page instruction cheat sheet handy.
I second the need for a good disassembler.
Finally, bank shifting for the disassembler I use is crummy. There is usually a warning to confirm the bank. Does the code go past a single page significantly? By that I mean are there calls and returns from another page (not to be confused with RAM banks)? For most of my stuff, I put the ASCII character table on another page to avoid using code space and access it using indirect addressing (FSR0 and FSR1). Those can reach any page and also allow you to access user RAM as a single, "linear RAM" space.
If there's a section that is particularly confusing, post it here, and we can try to help.
EDIT: Very poor reader here and just noticed this,"willing to help me hands-on, via remote desktop, for a price." Anything I offer is open source and priceless (i.e., free).