This should be a bit faster ... (untested)
Code:
INDEX      VAR BYTE BANK0
SOMETHING  VAR BYTE BANK0
A          VAR BYTE BANK0
B          VAR BYTE BANK0
C          VAR BYTE BANK0
D          VAR BYTE BANK0

PIN1       VAR PORTB.0
PIN2       VAR PORTB.1
PIN3       VAR PORTB.2
PIN4       VAR PORTB.3


ASM
TestStart
      movlw   0              ;FOR INDEX=1 TO SOMETHING
      movwf   _INDEX
      
ForLoop    
      incf    _INDEX,F       
      
      movf    _A,W           ; IF INDEX>A THEN PIN1=1
      subwf   _INDEX,W
      btfsc   STATUS,C
      bsf     _PIN1
      
      movf    _B,W           ; IF INDEX>B THEN PIN2=1
      subwf   _INDEX,W
      btfsc   STATUS,C
      bsf     _PIN2

      movf    _C,W           ; IF INDEX>C THEN PIN3=1
      subwf   _INDEX,W
      btfsc   STATUS,C
      bsf     _PIN3

      movf    _D,W           ; IF INDEX>D THEN PIN4=1
      subwf   _INDEX,W
      btfsc   STATUS,C
      bsf     _PIN4
      
      movf    _INDEX,W       ; Next INDEX
      subwf   _SOMETHING,W
      btfss   STATUS,Z
    goto    ForLoop
ENDASM