__________________________________________
(c) ra!d
Генератор таблицы квадратов
Действие этого генератора,основано на
очень интересной зависимости,
математически это выглядит например так:
k k-1
X = X + Nk,
k k-1
где X и X - квадраты последовательных
чисел,на данной и преды дущих итерациях;
k -соответственно номер итерации;
Nk - число из ряда натуральных нечетных
чисел;
Думаю что это небольшая таблица,
поможет понять сей алгоритм.
┌───┬──┬──┬──┬──┬──-
│ X │1 │2 │3 │4 │...
├───┼──┼──┼──┼──┼──-
│X^2│1 │4 │9 │16│...
├───┼──┴──┴──┴──┼───
│ N │ 3 5 7 │
└───┴───────────┴──-
Hекоторые замечания по поводу данного
примера:
1) Данный пример создает таблицу
квадратов чисел от 0 до 255;
2) В таблице, квадраты чисел
располагаются сверху-вниз, т.е сначала
идет квадрат 255, затем квадрат 254 и т.д.
(это связанно с спецификой структуры
стека).
Hедостатком это назвать трудно,скажем
так, это просто побочный эффект,который
очень легко решается -достаточно
инверсировать число,квадрат которого
находится,например так:
LD A,ЧИСЛО,
;КВАДРАТ КОТОРОГО
;ТРЕБУЕТСЯ HАЙТИ.
CPL
LD BC,TABL
LD H,0
LD L,A
ADD HL,HL
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
3) Hе забудьте в конце программы
перенаправить стек.
;*****************************************
;* GEN_TABL_X^2 *
;* (C) 1999 idea and code by ra!d *
;* code len:16b *
;*****************************************
LD SP,TABL+512
LD HL,1
LD D,H
LD E,L
LD B,#FF
LP1 PUSH HL
INC DE
INC DE
ADD HL,DE
DJNZ LP1
;LD SP,nnnn
;RET
TABL DEFS 512
P.S. Кстати, я так и не встретил ни в
одном математическом справочнике, описание
данного метода.
__________________________________________