here is a 12f1822 version
with full hex [upper and lower case] space and - sign also
note comments for common anode/cathode


Code:
'****************************************************************
'*  Name    : 4 bit 7 segment display                           *
'*  Author  : RICHARD                                           *
'*  Notice  :                                                   *
'*          :                                                   *
'*  Date    : 18. 2. 2018                                       *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*  MCU     : PIC 12F1822 @32MHZ                                *
'****************************************************************
#CONFIG
  __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
  __config _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_19 & _LVP_OFF
#ENDCONFIG

 goto overasm
ASM
timer1  = TMR1L    
seg_val 
    CHK?RP  _TM_TMP
    MOVWF   _TM_TMP
    SUBLW   0x21
    btfsc   STATUS, C
    retlw   0   ;" "
    MOVF    _TM_TMP,W
    SUBLW   0x2f
    btfsc   STATUS, C
    retlw   64   ;"-"
    MOVF    _TM_TMP,W
    MOVLW   0X40
    SUBWF   _TM_TMP,W
    btfsC   STATUS, C
    GOTO    TM_ALPHA
    MOVF    _TM_TMP,W
    ANDLW   0X0F
    GOTO    TM_LU
TM_ALPHA 
    ANDLW   0xdf    ;ucase
    SUBLW   6
    btfsS   STATUS, C
    retlw   0       ;ERROR
    MOVLW   0X37
    SUBWF   _TM_TMP,W
    ANDLW   0xdf    ;ucase
TM_LU     
    BRW                                         
    retlw 	0X3F    ;0   
    retlw 	6            	
    retlw 	0X5B   
    retlw 	0X4F 
    retlw 	0X66
    retlw 	0X6D                        
    retlw 	0X7D  
    retlw 	7   
    retlw 	0X7F          
    retlw 	0X67    ;9
    retlw 	0X77    ;A
    retlw 	0X7C    ;b
    retlw 	0X39    ;C
    retlw 	0X5E    ;d
    retlw 	0X79    ;E
    retlw 	0X71    ;F 
endasm 



 overasm:

DEFINE OSC 32            ; Use internal clock 
ANSELA=0
SSP1CON1=$22  
SSP1STAT=$40
OSCCON=$70

INCLUDE "DT_INTS-14.bas" ; Base Interrupt System
"
TRISA = %11111000
@LPORT=LATA 
LPIN CON 2     ;var LATC.4         ; Latch
DPIN var porta.0         ; Data  SDO
CPIN var porta.1         ; Clock SCK

segment var byte
value var word
d_index var byte
buff var byte[5]
tmp var byte 
TM_TMP    var byte         
d_pointer      var byte  
timer1 var word ext
timer1_reload con    1543  ;8mS
                       
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
    INT_Handler TMR1_INT, _DISP, ASM, yes
  endm
  INT_CREATE ; Creates the interrupt processor
ENDASM

@ INT_ENABLE TMR1_INT ; enable Timer 1 interrupts
T1CON = $1
d_index=0
;---[simple counter 0 - to ffff]------------------------------------------------ 
Main:
for value = 0 to 65535
arraywrite buff ,[HEX4 value,0]

pause 100
next value
value = 0
GOTO Main

;---[TMR1 - interrupt handler]--------------------------------------------------
DISP:

asm
    MOVE?CT 0, T1CON, TMR1ON ; 1 stop timer
    MOVLW LOW(_timer1_reload) ; 1 Add TimerReload to the 
    ADDWF TMR1L,F ; 1 value in Timer1
    BTFSC STATUS,C ; 1/2
    INCF TMR1H,F ; 1
    MOVLW HIGH(_timer1_reload) ; 1
    ADDWF TMR1H,F ; 1
    MOVE?CT 1, T1CON, TMR1ON ; 1 start timer
    MOVE?CB  high _buff, FSR0H         ;load highbyte 
    MOVE?CB  low  _buff, FSR0L         ;load low byte
    MOVE?BA  _d_index  
    ADDWF  FSR0L,F
    MOVF   INDF0,W
    L?CALL seg_val
    MOVE?AB _segment
    MOVE?BB  _d_index ,_tmp
    BANKSEL   _tmp
    MOVLW 1
    ADDWF  _tmp,F
    BANKSEL   _d_pointer
    CLRF _d_pointer
    BSF STATUS ,C
N_BIT 
    BANKSEL   _d_pointer
    RLF    _d_pointer,F
    BCF STATUS ,C
    BANKSEL   _tmp
    DECFSZ  _tmp,F
    GOTO N_BIT 
    MOVLW 1
    BANKSEL  _d_index
    ADDWF  _d_index,F
    MOVLW 3 
    ANDWF  _d_index,F
    BANKSEL  LPORT
    BCF LPORT ,_LPIN
    BANKSEL PIR1
    BCF     PIR1,3 
    BANKSEL  _segment
    MOVF    _segment,W 
    ;COMF    _segment,W  ;COMMENT USED TO INVERT DATA FOR COMMON ANODE DISPLAY
    BANKSEL SSP1BUF
    movwf   SSP1BUF
    BANKSEL PIR1
    BTFSs   PIR1,3
    GOTO    $-1
    BANKSEL  _d_pointer
    COMF    _d_pointer,W 
    ;MOVF    _d_pointer,W  ;COMMENT USED FOR COMMON ANODE DISPLAY
    BANKSEL PIR1
    BCF     PIR1,3 
    BANKSEL SSP1BUF
    movwf   SSP1BUF
    BANKSEL PIR1
    BTFSs   PIR1,3
    GOTO    $-1
    BANKSEL  LPORT
    BSF LPORT ,_LPIN
    BANKSEL 0
    INT_RETURN
endasm