fix indexfield reading when blen > field source

the asus ux has a DSDT with:

    OperationRegion (ECMS, SystemIO, 0x72, 0x02)
    Field (ECMS, ByteAcc, Lock, Preserve)
    {
        EIND,   8,
        EDAT,   8
    }

    IndexField (EIND, EDAT, ByteAcc, NoLock, Preserve)
    {
        Offset (0x40),
        IKFG,   8,
        Offset (0x43),
        RAMB,   32,
        AVOL,   8,
    [...]

RAMB is 32 bits but it's reading from EDAT which is only 8 bits.

rather than just truncating it to 8 as the code was doing before,
iterate over each 8-bit chunk, writing an incremented offset into
EIND and shifting each read value onto the final return buffer.