Иногда в памяти программ удобно хранить некий блок констант для последующего использования. Определяется такой блок директивой .db (для однобайтовых значений) и помечается меткой, предположим const_label.
Как пример – набор битовых масок цифр и символов для 7-сегментного индикатора.
Или последовательность задержек для формирования сложного сигнала.
В чем разница?
В первом случае из памяти программ извлекается единственное значение – нужная в данный момент битовая маска.
Во втором происходит последовательное чтение всей цепочки до некоего определённого стоп-байта (как вариант – $FF).
Для задания адреса, по которому находится нужный блок и элемент в нём, используется регистровая пара Z (она же ZH:ZL, она же r31:r30), разрядностью в 16 бит.
В первом случае эта регистровая пара складывается либо с 8-битной константой,
либо с 8-битным же регистром.
Этот случай и рассмотрим.
Continue reading