

(c) Волчков Евгений (Hacker
Rowdy), г.Чита, 1996.

   В те времена, когда я  еще  с
натугой понимал  Ассемблер,  мне
посчастливилось  купить   первый
том  сериала  книг  о   графике.
Очень полезная программа,  опуб-
ликованная  в  книге,  вычисляла
адрес  в  дисплейном  файле   по
координатам, заданным  в  знако-
местах. В оригинале, как вы, ко-
нечно, знаете, она выглядит так:
140.
     LD   DE,(COORDS)
     LD   A,E
     AND  #18
     OR   #40
     LD   H,A
     LD   A,E
     AND  #07
     OR   A
     RRA
     RRA
     RRA
     RRA
     ADD  A,D
     LD   L,A
2
   После того как  я, не без по-
мощи вашей  литературы,  повысил
свои знания Ассемблера,  я  нат-
кнулся как-то опять на эту прог-
рамму и возле  команды  OR  A  с
удивлением прочитал  комментарий
"Сбросим флаг  CARRY".  Но  ведь
перед OR A стоит AND #07,  кото-
рая, следуя книге "ZX Spectrum &amp;
TR-DOS", всегда, вне  зависимос-
ти  от  получаемого  результата,
СБРАСЫВАЕТ флаг CARRY, т.е.  эту
небольшую подпрограмму можно ис-
пользовать с таким  же  успехом,
но просто убрав OR A. Кроме  то-
го,  длину  подпрограммы   можно
уменьшить, если поставить 3  би-
та, означающие  номер  ряда,  на
свое место  при  помощи  команды
RRCA. Таким образом 5 команд:
140.
     OR   A
     RRA
     RRA
     RRA
     RRA

заменяем на 3:

     RRCA
     RRCA
     RRCA
2
   Мы выигрываем  сразу  в  двух
областях - уменьшаем на два бай-
та подпрограмму, которая  и  без
того  мала,  а  также  сокращаем
время ее исполнения (хотя и  не-
намного, но для динамических игр
это может оказаться полезным).

********************************