not much on today so i tried a few options with pic16f877 and 16f1825 with no other complications code wise
resultant code sizes are commented


Code:
array var word[2]
ADRESLO VAR BYTE
inx var byte
ADRESHi VAR BYTE


;METHOD 0
word_temp  var word   


;METHODS 2 AND 3
array_asbyte var byte ext
@array_asbyte=_array




;ALL METHODS EXCEPT 0 , 1
i    var byte
i=0
;METHOD 4
@ MOVE?CW _array , FSR0L    ;  PIC16 ENH CORE
;METHOD 5
'@ MOVE?CW _array , FSR     ;  PIC16 SHITTY OLD CHIP


for  inx=0 to 3       ;1 FOR METHOD 0        ;                        36  WORDS
'    word_temp.byte0=adreslo         ;METHOD 0
'    word_temp.byte1=adreshi
'    array[inx]=word_temp   


 
'    array[inx]=(adreshi<<8)| adreslo    ;METHOD 1  ;                52   WORDS


'    if !i&1 then                       ;METHOD 2    ;               60   WORDS
'        array_asbyte[i]=ADRESLO
'    else
'        array_asbyte[i]=ADRESHi
'    endif
'    i=1+1


    
'    array_asbyte[i]=ADRESLO          ;METHOD 3   ;                  34   WORDS
'    i=1+1
'    array_asbyte[i]=ADRESHi
'    i=1+1
    




asm                                   ;METHOD 4 PIC16 ENH CORE;      23   WORDS
  MOVE?BA _ADRESLO
  MOVWI FSR0++
  MOVE?BA _ADRESHi
  MOVWI FSR0++
ENDASM
 
'asm                               ;METHOD 5 PIC16 SHITTY OLD CHIP;  29   WORDS
'  MOVE?BA _ADRESLO
'  MOVWF INDF
'  INCF FSR,F
'  MOVE?BA _ADRESHi  
'  MOVWF INDF
'  INCF FSR,F
'ENDASM
 


 
next


stop