Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2010, 16:26   #1
ksander_29
Новичок
Джуниор
 
Регистрация: 22.07.2010
Сообщений: 2
По умолчанию Помогите решить d=b2-4ac

Доброго времени суток!
при изучении asm возникла проблема,как реализовать вычисление по такой формуле
d=b2-4ac
a,b,c переменные которые поступают от контролов во время исполнения пограммы
посоветуйте как это реализовать(желательно masm или fasm)
интересует только реализация вычислений (квадрат числа,квадратный корень,и в частности степени и корни н-ой степени)

Последний раз редактировалось ksander_29; 30.07.2010 в 16:33.
ksander_29 вне форума Ответить с цитированием
Старый 30.07.2010, 17:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А в чем именно проблема?
Перевести текст контролов в число, или вычислить формулу?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2010, 17:29   #3
ksander_29
Новичок
Джуниор
 
Регистрация: 22.07.2010
Сообщений: 2
По умолчанию

решить формулу используя команды ассемблера
ksander_29 вне форума Ответить с цитированием
Старый 30.07.2010, 17:39   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Как-то так
Код:
;d = b^2 - 4*a*c
mov eax,[a]
imul eax,[c]
shl eax,2
mov ebx,eax
mov eax,[b]
imul eax
sub eax,ebx
mov [d],eax
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 02.08.2010, 06:43   #5
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от ksander_29
Помогите решить d=b^2-4ac... интересует только реализация вычислений (квадрат числа,квадратный корень,и в частности степени и корни н-ой степени)
интересно, а где в данном уравнении квадратный корень и корни N-ой степени?
Скорее всего ksander_29 постеснялся написать, что ему требуется найти корни квадратного уравнения, заданного формулой: AX^2+BX+C= 0
Программа для решения этого уравнения:
Код:
.data
A DW ? ;место под коэффициенты
B DW ?
C DW ?
STATUS DW ?
FOUR DW 4.0 ;нам понадобятся две константы
TWO DW 2.0 ;FOUR=4.0 и TWO=2.0
ROOT1 DW ? ;место под 1-ый корень уравнения
ROOT2 DW ?;место под 2-ой корень уравнения
.code 
FINIT ;инициализируем блок FPU
FILD B ;загрузить число в регистр стека ST(0):=B
FMUL ST(0) ;перемножить числа ST(0):=B*B
FILD A ;загрузить число в регистр стека, ST(0):=A ST(1):=B*B
FIMUL FOUR ;умножить число в ST(0) на 4, ST(0):=4*A
FIMUL C ;умножить число в ST(0) на C, ST(0):=4*A*C
FSUBRP ST(1),ST(0) ;вычитаем обратные целые числа ST(0):=B*B-4*A*C
FTST ;проверяем дискриминант на отрицательность
FSTSW STATUS;записываем в память управляющий регистр FPU
FWAIT; и переводим FPU в режим ожидания
MOV AH,BYTE PTR STATUS+1;Читаем в AH
SAHF; помещаем содержимое регистра AH в регистр флагов
JB IMAGINARY;если корни мнимые переходим на метку IMAGINARY, где сообщаем об отрицательном корне
FSQRT ;извлекаем квадратный корень ST(0):=SQRT(ST(0))
FLD ST(0) ;загрузить число из ST(0) в ST(1):=ST(0)
FCHS ;изменяем знак, ST(0)=-SQRT(D)
FIADD B;складываем целые числа ST(0)=B-SQRT(D)
FCHS ;изменяем знак ST(0)= -B+SQRT(D)
FXCH ST(1);обмениваемся данными между ST(0) и ST(1)
FIADD B;складываем целые числа ST(0)=B+SQRT(D)
FCHS ;изменяем знак, ST(0)= -B-SQRT(D)
FIDIV A;делим на целое число ST(0)= -(B+SQRT(D))/A
FIDIV TWO;еще раз делим на 2, ST(0)=-(B+SQRT(D))/2A
FST ROOT1;сохраняем в памяти 1-ый результат из ST(0)
FIDIV A;делим на целое число ST(0)=(-B+SQRT(D))/A
FIDIV TWO ;делим на 2 ST(0)=(-B+SQRT(D))/2A
FST ROOT2 ;сохраняем в памяти 2-ой результат

Последний раз редактировалось Mikl___; 03.08.2010 в 05:45.
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парни помогите!!срочно нужно решить в течении пару часов..завтра зачет!Парни помогите! razorl1ner Паскаль, Turbo Pascal, PascalABC.NET 0 01.06.2009 00:02
Помогите решить Ruster Паскаль, Turbo Pascal, PascalABC.NET 0 11.01.2009 15:42
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44