![]() |
|
:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №26 (16.01.2006) Просмотров: 5345
Рубрика: Этюды. Номер: №26 (16.01.2006). ЭтюдыВзято из журнала «Inferno 4». Описание и доказательство алгоритма там же.;sqr hl
;HL=аргумент N
OR A
LD A,L
LD L,H
LD DE,64
LD H,D
LD B,8
sqr0 SBC HL,DE
JR NC,$+3
ADD HL,DE
CCF
RL D
ADD A,A
ADC HL,HL
ADD A,A
ADC HL,HL
DJNZ sqr0
;D=результатПереход на одну линию вниз в экране новым методом. Е.Б. Голяков (Spencer Winset). Более подробно об этом методе читайте в электронной газете «Nicron» № 125. DOWN_HL+ INC H
LD A,H
AND #07
JR NZ,BREAK
LD A,L
SUB #E0
LD L,A
SBC A,A
AND #F8
ADD A,H
LD H,A
BREAK ...15b - 27/56t Обмен значений двух битов в байте. Владимир Минин (алгоритм), Александр Шушков (доработка). Можно освободить регистр B, заменив команды and b и xor b на and X, xor X, тогда пропадет универсальность, но выиграем минимум один такт, максимум четыре. ;B-маска обмениваемых битов
LD B,%00000101
BitExch ld C,A
and b
ld a,c
jp pe,$+4
xor b
RETA=HL/32 Синяков Александр (Sam Style). Использовано в игре «Вера». HLdiv32 ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,H
RETНиже предствалены еще более короткие процедуры, по теме затронутой в статье «Направление движения или история одной процедурки» (газета «Абзац» № 20). Обе процедуры преобразуют значение регистра BC в соответсивии с нижеприведенной таблицей. BC=#FFFF => a=0
BC=#00FF => a=1
BC=#01FF => a=2
BC=#FF00 => a=3
BC=#0100 => a=4
BC=#FF01 => a=5
BC=#0001 => a=6
BC=#0101 => a=7Вариант от Дмитрия Быстрова (Alone Coder), 8 байт. Alco LD A,C
ADD A,A
ADD A,C
ADD A,B
CP 9
SBC A,-4
RETВариант от Дмитрия Патютько (Pulsar), 8 байт. Pulsar LD A,C
ADD A,A
ADD A,C
ADD A,B
ADD A,4
ADC A,-1
RETГенератор случайных чисел. Milos «baze» Bazelides, {baze@stonline.sk} На выходе: A = псевдослучайное число, период 256. RANDOM ld a,SEED ;SEED is usually 0
ld b,a
add a,a
add a,a
add a,b
inc a ;you may try also ADD A,7
ld (RANDOM+1),a
retКороткий способ определить, что оба числа (A и B) не равны нулю. Если хотя бы одно из них равно нулю, то будет установлен флаг Z. Применено в ACEdit для проверки нажатия Extend. Info Guide 7, Дмитрий Быстров ;(A<>0) AND (B<>0)
add a,-1
sbc a,a
and bАвтор данного сборника этюдов из вышеприведенной конструкции вывел вот какую штуку: add a,-1
sbc a,a
inc aПосле этого если было A=0, то будет A=255, если A<>0, то будет A=0. Этюды собирал Александр Шушков |