Ёлы-палы, почему я раньше об этом не подумал?!
Стандартный макрос замены команды LDIR, например
Код:
lxi b, 0000Fh
push psw
mov a, m
stax d
inx h
inx d
dcx b
mov a, b
ora c
jnz $-7
pop psw
для случаев BC<=000FFh вполне можно представить в виде
Код:
lxi b, 0000Fh
push psw
mov a, m
stax d
inx h
inx d
dcr c
jnz $-5
pop psw
Получаем экономию 12 тактов при каждом выполнении тела цикла. В некоторых случаях можно отказаться от push/pop psw и развернуть цикл.
ivagor, в связи с этим новый исходник tank.asm в приложении, запакуй его, как ты это делаешь. Кое-что еще поправлено, в итоге получилось на 112 байт короче и теоретически должно быть немного пошустрее.