ZX Review #7-8-9-10
08 ноября 1997

Этюды - Укороченная процедура индикации амплитуды каналов муз. сопроцессора. Способ вычитания константы из регистровой пары HL.

(c) Андряшкин А., Ульяновская
обл., р.п.Старая Майна

   Полностью согласен с мнением,
что прежде чем посылать  в  жур-
нал свои процедуры, нужно снача-
ла оптимизировать их  по  объему  
или по скорости.
   Вот,  к   примеру,  процедура
Александра  Соловьева  (ZX  РЕВЮ
N5/1995  стр.51)  для  индикации
амплитуды  каналов  музыкального
сопроцессора, которая у него за-
нимает 70 байт. Если в ней  про-
вести  простенькие  перестановки
(убрать ненужные подпрограммы) и
заменить операции на  более  ко-
роткие, то можно укоротить ее на
10 - 15 байт, но, по моему, мож-
но пойти еще дальше.
140.
ANAL      LD      HL,#58E2
          LD      A,3
AN1       PUSH    AF
          LD      HL,#FFFD
          ADD     A,7
          OUT     (C),A
          IN      A,(C)
          PUSH    HL
          LD      C,4
AN2       LD      B,4
AN3       DEC     H
          DEC     H
          OR      A
          LD      (HL),A
          JR      Z,AN4
          LD      (HL),126
          DEC     A
AN4       DJNZ    AN3
          LD      DE,#07E0
          ADD     HL,DE
          DEC     C
          JR      NZ,AN2
          POP     HL
          POP     AF
          DEC     L
          DEC     A
          JR      NZ,AN1
          RET
2
   Эта процедура будет  работать
в любой трети экрана (адрес  ин-
дикатора 3 канала заносится в HL
[метка ANAL]).

   Пользуясь  случаем, хочу  на-
помнить  об  одной   простенькой
конструкции, если требуется  от-
нять от регистровой пары HL  ка-
кое-либо  число  (константу), то
обычно  используется   следующая
конструкция:

          LD      DE,NN
          AND     A  ;т.к. неиз-
вестно состояние флага переноса
          SBC     HL,DE

   Но эту конструкцию можно уко-
ротить на 2 байта (не  говоря  о
скорости выполнения), если вмес-
то вычитания использовать сложе-
ние, а константу переести в  до-
полнительный код:

          LD      DE,0-NN
          ADD     HL,DE

Так в цифровой технике  выполня-
ется операция вычитания.

           *   *   *





Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Почта - пришло письмо от Алекса Ксора.
Demo Party - мрачный мысли Random'a: "Что мне надо сделать для того, чтобы вы повери в Конструкции Хаоса'999?"
Сетевые новости - Список BBS.

В этот день...   20 ноября