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 Так в цифровой технике выполня- ется операция вычитания. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября