I'm learning the ISP protocol in the atmega doc. This is usually under chapter 27 or 28 on Memory programming. There is a table of Serial Programming Instruction set.
On the table, Load Program Memory Page commands only need LSB. Only the Write Program Memory Page command needs MSB.
On the other hand, as I was running a version of avrdude, possibly 6.0.1 included in a version of Arduino IDE, I logged the SPI communication. There the LPM commands seem to have MSB included. This made me curious and I examined ArduinoISP.ino
Here is the code in ArduinoISP.ino:
void flash(uint8_t hilo, unsigned int addr, uint8_t data)
{
spi_transaction(0x40 + 8 * hilo,
addr >> 8 & 0xFF,
addr & 0xFF,
data);
}
So the MSB is indeed included in the transaction (arduino IDE 1.8.5). I wonder why.