Large Model
In the Large model, all variables, by default, reside in external data memory (which may be up to 64K Bytes). This is the same as if they were explicitly declared using the xdata memory type specifier.
The data pointer (DPTR) is used to address external memory. It is important to note that memory access through the data pointer is inefficient and slow, especially on variables that are two or more bytes long. This type of data access mechanism generates more code than the XTiny Model or the XSmall Model.
Therefore try to use the XTiny or XSmall memory model instead of the Large. Using the HOLD directive, you may direct variables above a specific object size to alternative memory areas.