:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №26 (16.01.2006) Просмотров: 5000
Рубрика: Этюды. Номер: №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 RET A=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. Этюды собирал Александр Шушков |