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
Bookmarks