SBC (ну просто для 16-битного числа опкода SUB нет, насколько я понял).
Вот на это надо обратить внимание. Именно на данном этапе, пока нет понимания флагов. SBC не замена SUB! Если очень хочется SBC, как замену SUB, то перед ней нужно сбросить флаг переноса. Командой AND A или OR A или CP A.
LD DE,1
AND A ; сбрасываем перенос
SBC HL,DE ; отнимаем