Привет всем. в общем нашел функцию извлечения корня квадратного,но мне не совсем понятна ее работа вот собсно функа: Code: function sqrt(x: cardinal): integer; asm bsr edx, eax jz @exit mov ecx, edx test ecx, 1 jz @even @odd: shr ecx, 1 inc ecx shr eax, cl mov edx, 1 shl edx, cl shr edx, 1 add eax, edx mov edx, $B504F334 mul edx mov eax, edx ret @even: shr ecx, 1 inc ecx shr eax, cl mov edx, 1 shl edx, cl shr edx, 2 add eax, edx @exit: end; если можно откоментите.я так понял тут манипуляции с битами происходят. и еще одно,подскажите какие знаете еще функции для извлечения корня без использования вычислений с плавающей точкой.была идея возводить число в степень 1\2, но как я понял без подключения арифметического сопроцессора это не получится.
в общем основы: степень любого числа можно представить как сумму различных степеней двойки Code: 3^2 = 8 + 1 = 2^3 + 2^0 9^2 = 64 + 16 + 1 = 2^6 + 2^4 + 2^0 и т д это все что нужно для понимания этого кода. shr и shl сдвигают число на 1 байт направо/налево. Это равноценно ПРИМЕРНОМУ делению или умножению числа на 2. p.s тот кто пишет на асме, не ищет легких путей. Вникай и удачи.