Interrupts and Assembly language
The comments you have received suggest that you need to do your own homework.

I disagree. As you have not shown a commitment to learning here is a complete example:

;**********************************************************************
;                                                                     *
;   This file is a basic code template for assembly code generation   *
;   on the PIC16F84A. This file contains the basic code               *
;   building blocks to build upon.                                    *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:        MAIN.ASM                                        *
;    Date:            2020-04-13                                      *
;    File Version:    0.0                                             *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required: p16f84a.inc                                      *
;                    16f84a_g.lkr                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                           PIC16F84A
;                   +----------:_:----------+
;             &lt;&gt;  1 : RA2               RA1 : 18 &lt;&gt; 
;             &lt;&gt;  2 : RA3               RA0 : 17 &lt;&gt; 
;             &lt;&gt;  3 : RA4/T0CKI        OSC1 : 16 &lt;- 4MHz crystal
;    ICSP_VPP -&gt;  4 : MCLR             OSC2 : 15 -&gt; 4MHz crystal
;         GND -&gt;  5 : GND               VDD : 14 &lt;- 5v0
;             &lt;&gt;  6 : RB0/INT       PGD/RB7 : 13 &lt;&gt; ICSP_PGD
;             &lt;&gt;  7 : RB1           PGC/RB6 : 12 &lt;&gt; ICSP_PGC
;             &lt;&gt;  8 : RB2               RB5 : 11 &lt;&gt; 
;             &lt;&gt;  9 : RB3               RB4 : 10 &lt;&gt; 
;                   +-----------------------:
;                            DIP-18

    list      r=dec, n=0, c=132    ; decimal is the default radid, no list file pages, list file line width of 132 characters
    list      p=16F84A             ; list directive to define processor
    #include &lt;p16F84a.inc&gt;         ; processor specific variable definitions
    errorlevel -302                ; suppress register not in bank zero warning

    __CONFIG   _CP_OFF &amp; _WDT_ON &amp; _PWRTE_ON &amp; _HS_OSC
;
; use a 4MHz cyrstal connected to pisn 15 and 16
;
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS
ISR_DATA      udata_shr
w_temp        res     1           ; variable used for context saving 
status_temp   res     1           ; variable used for context saving

;**********************************************************************
RESET_VECTOR      CODE    0x0000  ; processor reset vector
        goto    start             ; go to beginning of program

ISR               CODE    0x0004  ; interrupt vector location

Interrupt:

        movwf  w_temp             ; save off current W register contents
        movf   STATUS,w           ; move status register into W register
        movwf  status_temp        ; save off contents of STATUS register

        bcf     INTCON,INTF       ; Clear INT/RB0 interrupt request

        banksel PORTB
        swapf   PORTB,W           ; Read PORTB RB7 to RB4
        xorwf   PORTA,W           ; Merge with PORTA RA3 to RA0
        andlw   0x0F              ; Mask off bits not involved
        xorwf   PORTA,F           ; Update PORTA outputs

        movf   status_temp,w      ; retrieve copy of STATUS register
        movwf  STATUS             ; restore pre-isr STATUS register contents
        swapf  w_temp,f
        swapf  w_temp,w           ; restore pre-isr W register contents
        retfie                    ; return from interrupt

MAIN_PROGRAM    CODE

start:
        clrf    INTCON            ; Disable all interrupts
        movlw   0xF0
        banksel TRISA
        movwf   TRISA             ; Make PORTA RA0 to RA3 outputs
        movlw   0xFF
        movwf   TRISB             ; Make PORTB all inputs

        banksel PORTB             ; Initial PORTA output state
        swapf   PORTB,W
        xorwf   PORTA,W
        andlw   0x0F
        xorwf   PORTA,F

        ; Configure INT/RB0 interrupt
        bcf     INTCON,INTE       ; Disable INT/RB0 interrupt
        bcf     INTCON,INTF       ; Clear INT/RB0 interrupt request
        bsf     INTCON,INTE       ; Enable INT/RB0 interrupt

        bsf     INTCON,GIE        ; Enable interrupt system

; remaining code goes here

        clrwdt
        goto $-1

        END                       ; directive 'end of program'


I hope it is too complex for you to actually learn from and that you submit this as your own work so your instructor will know you got this from the internet.