
Сообщение от
ivagor
139 тактов/символ
Можно быстрее.
1. Учесть, что часть байтов повторяются, тогда часть lxi меняем на mvi или убираем.
2. Совсем другой вариант на базе идей Дениса Грачева. Адрес текста в SP, но не коды букв, а адреса процедур. Базовый вариант:
Код:
;SP - адрес текста
;HL - экранный адрес
;A - младшая половина экранного адреса
inr h
mov l,a
mvi m,data0\ inr l ;7 повторов
...
mvi m,data7
ret
2.1. Свободны 4 регистра в которые можно поместить 4 наиболее используемых в символах байта (один явно будет 0). Меняем соответствующие mvi m,data на mov m,r.
2.2. При сдвиге на 1 строку можно выводить нулевые байты только если они идут после ненулевых. Плюс досрочное окончание процедуры если внизу остались только нули. Тогда вывод пробела сокращается до