Thank you for the information Darrel.

Here is a sample code for me to understand it better.

Code:
CLEAR    

@ __config _HS_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CP_ON & _WRT_OFF

DEFINE OSC 20

Number1Adr data word 0

'DEFINE WRITE_INT 1

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 64  ' 19200 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

CMCON = 7   ' Disable Comps.
PAUSEUS 10
CVRCON = 0  ' Turn off VRCON.
PAUSEUS 10

ADCON0 = 0
ADCON1 = %00001111     ' All digital.

TRISA = 0
TRISB = 0
TRISC = %10000000      ' RC7 RS232 RX pin.
 
PORTA = 0
PORTB = 0
PORTC = 0

RXLED var PORTC.4

' ========= RS232 RX ===========
Header1     var byte
Header2     var byte
Komut       var byte
Kimlik      var byte
DataInLow   var byte
DataInHigh  var byte
WriteFlag   var byte
OldNumber   var word
Number      var word

INCLUDE "DT_INTS-14_F873A.bas"     ; Base Interrupt System
INCLUDE "ReEnterPBP.bas"     ; Include if using PBP interrupts

ASM
INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
        INT_Handler    RX_INT,  _RS232RX,   PBP,  yes
    endm
    INT_CREATE               ; Creates the interrupt processor
ENDASM


Pause 10

Begin:
    header1     = 254
    header2     = 252 
    WriteFlag   = 0

@   INT_ENABLE   RX_INT     ; enable external (INT) interrupts    

Start:
   
    
    if writeflag > 0 then 
; disable interrupts    
@   INT_DISABLE RX_INT   
@   BCF INTCON, GIE

         read Number1Adr, word oldnumber    ' Read old value first.
         if oldnumber <> number then write Number1Adr,word number     
         ' If the incoming value changed, then write. Otherwise, do not write.

; enable interrupts    
@   BSF INTCON, GIE            
@   INT_ENABLE   RX_INT     

        writeflag =  0        ' Clear write flag.     
    
    endif 
    


    goto start
    

RS232RX:
    rxled = 1
    hserin 50,Jump,[WAIT(header1,header2),komut,datainLow,DatainHigh]
        
        if komut = 100 then 
            WriteFlag = 1 
            number.lowbyte  = datainlow
            number.highbyte = datainhigh
        endif
       


Jump:

  RXLED = 0
@ INT_RETURN       

    
END

If I remove GIE, and use WRITE_INT, eeprom does not write right.