Добрый день....Возникла одна проблемка, может немного не по теме, но все же может поможет кто?? Мне нужно на ассемблере написать прогу вычисления десятичного логарифма... Думал, что проблемой окажется написание самой проги, но получилось так, что я даже не могу найти формулу разложения десятичного логарифма в ряд.... Люди добрые, если кто знает, поделитесь плиз....Буду очень благодарен...
sting, немного по подробнее опишите проблему
1. Ассемблер слишком абстрактно - ассемблеров не одна сотня. (x86 ?)
2. Врядли кто-нить БЕСПЛАТНО напишет полностью готовую прогу по вычислению логарифма, укажите что конкретно не получается - подскажем.
3. Услови задачи допускает использование сопроцессора (AKA x87) ?
4. Как я препдполагаю асм всеже x86. Тогда ОС (ДОС/ВИН/ЛИНУКС) ?
5. Желательно указать что вы используете за компилятор TASM/MASM/FASM etc.
В общем используем мы такую программульку как Emu8086 - эмулятор ассемблера...Т.е программульки на нем пишуться как бы под ДОС под х86 процессор...Суть такая, мне нужно написать программу, которая будет вычислять десятичный логарифм числа Х... Так вот, как я понял, для вычисления Х, нужно разложить этот логарифм в ряд (вроде Тейлора), но найти я этого не могу (самого разложения). Мне совсем немножечко, только формулу, а задачку может и сам осилю...Единственное, не знаю как работать с числами с плавающей точкой....Может хоть это кто подскажет... Замечал, что при деление, целая часть заносится в AL, а остаток в AH...Можно конечно на это ориентироваться, но еще не пробовал...
Можно использовать такое разложение логарифма в ряд:
ln(X+1)=x-(x^2)/2+(x^3)/3-(x^4)/4+...
(т.е. через сумму слагаемых вида ((-1)^(i-1))*(x^i)/i ). Этот ряд сходится при -1<X<1, а количество его членов, которые необходимо просуммировать, определяется из требуемой точности вычислений (если очередной член ряда по модулю меньше погрешности, то на нем суммирование прекращается). Соответственно, lg X=ln X/ln 10.
sting, я ОЧЕНЬ сильно сомневаюсь что с такими вопросами, ты способен написать прогу обрабатывающую числа с плавающей точкой без использования сопроцессора . Скорее всего надо использовать сопроцеесор, а он позволяет высчитывать натуральный логарифм . В данном случае посчитать надо примерно так.
В том и проблема, что сопроцессор нам использовать нельзя...
sting,
Ну чтож. Тады мой совет таков
1. Хорошо прошерстить и-нет. Наверняка можно найти
Если не поможет
2. Обратись на wasm.ru/forum - там много классных спецов по асму, може у кого есть заготовки
Если не поможет
3. Я бы скомпилял прогу выводящую логарифм на паскале без поддержки сопроцессор - дизассемблировал и разобрался
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)