Ich hab's ein bißchen kommentiert, wenn das wen interessiert

Code:
red0 = (boden_value_red0[2*i]*256 | boden_value_red0[2*i + 1]) >> 2;

L_0x008E:
	LDI	YL,0x5C
	LDI	YH,0x04
	OUT	SPH,YH
	OUT	SPL,YL	            ; work frame
	LDD	r24,Y + 3               ; get  i
	MOV	r18,r24
	CLR	r19
	MOVW	r24,r18                 ; --> r24
	ADD	r24,r18                 ; * r18 ---> = *2
	ADC	r25,r19	; vielleicht n'carry, weiß man ja nie 
	MOVW	ZL,r24			; 
	SUBI	ZL,0xA0	; + 96  = (&boden_value_red0[0])
	SBCI	ZH,0xFF	; + 96  = (&boden_value_red0[0])
	LDD	r24,Z + 0	; r24 = boden_value_red0[2*i]
	MOV	r18,r24	:r18:r19
	CLR	r19
	LDI	r24,0x00	;r24:r25 = 256
	LDI	r25,0x01
	MUL	r18,r24	; * 256
	MOVW	r20,r0	;-> r20
	MUL	r18,r25
	ADD	r21,r0
	MUL	r19,r24
	ADD	r21,r0	;-> r21
	CLR	r1	; heilige Kuh, muß null sein

	LDD	r24,Y + 3	; get i
	MOV	r18,r24	; s.o 
	CLR	r19	; s.o
	MOVW	r24,r18	; s.o
	ADD	r24,r18	; s.o
	ADC	r25,r19	; * 2 (s.o.)

	MOVW	ZL,r24
	SUBI	ZL,0x9F	; + 95  = (&boden_value_red0[1])
	SBCI	ZH,0xFF

	LDD	r24,Z + 0	; r24 = boden_value_red0[2*i + 1]
	CLR	r25

	OR	r24,r20			; r24 | r20 
	OR	r25,r21			; r24 | r21

	ASR	r25			; >> 1
	ROR	r24
	ASR	r25			; >> 1
	ROR	r24
	STD	Y + 1,r24		; store red0
	STD	Y + 2,r25

	JMP	L_0x00EA		; forEver
L_0x00EA:
	RJMP	L_0x00EA
Listig, daß er das +1 rechts gleich in das Tabellen-Offset eingebaut hat.