Multi-byte SPI works like this:
- CS is asserted
- The address + R/W bit are sent
- N bytes are read or written (the address auto-increments)
- CS is deasserted
You can't do multi-byte access in reverse order. Only the first address you send matters. If you start at address 6 the next byte you read will be address 7, which is one of the alarm registers.
I don't understand your code: x << 8 will always be zero if x is uint8_t.