■························[ Coding ]·························■
(c) Brom^Ellipse mdm 2383150
──────────────────────────┐
in : HL - исходное число │ Не многие знают, что извлечь при-
out : BC - результат │ близительный корень из любого целого
used: HL,DE,BC,IX,A │ числа так просто, ну или почти
│ просто. Метод описаный ниже был при-
SQR LD BC,1 │ думам еще в начале 80-х. По-научному
LD DE,1 │ звучит он так: Квадратный корень из
XOR A │ любого целого числа равен количеству
L1 OR A │ последовательных четных чисел,
SBC HL,DE │ которые можно из него вычесть.
PUSH HL │ Суть метода заключается в том
OR A │ чтобы вычитать из числа все нечетные
SBC HL,DE │ числа (начиная с 1) пока результат
POP HL │ не станет равным нулю, либо пока
RET C │ уменьшаемое не станет больше вычита-
INC DE │ емого, количество раз вычитания и
INC DE │ будет,округлюнный до меньшего, резу-
INC BC │ льтат.
JR L1 │ Слева приведена процедура на asm'e
──────────────────────────┘ которая явно не является слишком
быстрой, но в принципе у меня все работает :)
Other articles: