Since
→{} stores only the lower eight bits (one byte), it doesn't matter what the high byte of HL is as long as the low byte is zero. In other words, all we need is for the last eight bits of HL to be zero.
and 0 does a bitwise AND on the last eight bits of HL, which looks like this:
**************** // Original value of HL; * is either 0 or 1
and 00000000 // and 0
********00000000 // Final value of HL
And that's all that's needed to store one byte of zero to
{S}. It's also one byte smaller than just using
0 (
LD L,0 versus
LD HL,0), which is why Runer112 uses it.
Clever optimization there
