1. Polling interrupt flag will decrease the execution speed. The best efficient way will be to create an interrupt routine, ASM or with Darrel's instant interrupts.

2. not suppose to.

3.unfortunatley, PBP create a Macro based ASM, it's looking hard at first, but once you understand the Macro syntax, it's faster to read than real ASM. Let's see Sayzer snips.

Code:
	CMPNE?BBL	_Counter, _dLEDX + 00001h, L00001
	MOVE?CT	000h, _dLED??1
	LABEL?L	L00001
CMPNE?BBL : Compare not equal a byte against a byte and branch to a label if result is false
It will compare Counter against dLEDX+1 (which is dLED[1]), it they are different, it will jump to label L00001

MOVE?CT : Move a Constant into a specific BIT
this will move 0 to dLED.1. Something like BCF

If you want a full assembler list, the only way is to import the .HEX fil in MPLAB and read the disassembly list, without label, without comments, without nothing.