Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 01.03.2019, 12:08   #1
kompildan
Пользователь
 
Регистрация: 16.02.2019
Сообщений: 14
Репутация: 10
По умолчанию Вычисление заданной функции

функция - F(x) = (|sin(x)| + 2). Ошибка возникает при вычислении модуля sin
Код:
_asm
		{
			finit		//Инициализация сопроцессора

			fld b		//Загружаем в ST(0) верхнюю границу интервала
			fld x		//Загружаем значение функции
			loop_start :		//метка начала цикла
			fcom		//проверка границы интервала
				fstsw ax
				and ah, 01000101b
				jz loop_end

				fldz //Загружаем ноль
				fadd x//Прибавляем х

				fldz //Загружаем ноль
				fadd x //Прибавляем х
				fsin //Вычисляем синус
				neg sin //Вычисляем модуль ?????

				fiadd two //Прибавляем 2
				
				fdiv		//Делим
				fadd f	//Прибавляем значение функции
				fstp f	//Сохраняем в памяти значение

				fadd step		//Прибавляем шаг
				fst x			//Сохраняем х в памяти
				jmp loop_start	//Переходим к метке

				loop_end :	//Метка окончания работы
			fwait
		}
kompildan вне форума   Ответить с цитированием
Старый 01.03.2019, 13:29   #2
kompildan
Пользователь
 
Регистрация: 16.02.2019
Сообщений: 14
Репутация: 10
По умолчанию вот формула F(x) = x/(|sin(x)| + 2)

я деление забыл указать

Последний раз редактировалось kompildan; 01.03.2019 в 13:33.
kompildan вне форума   Ответить с цитированием
Старый 01.08.2019, 06:00   #3
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 69
Репутация: -47
По умолчанию

Код:
;ar=a*pi/180
.data
ar dd ?
y dd 2
z dd ?
.code
finit
fld dword ptr ar
fsin
fabs
fadd dword ptr y
fld dword ptr ar
fxch st(1)
fdiv st(1),st(0)
fxch st(1)
fstp dword ptr z
fwait
end;f=ar/(!sin ar!+2)
__________________
Немного о GoAsm.

Последний раз редактировалось Nif-naf; 01.08.2019 в 12:39.
Nif-naf вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление функции с использованием разложения в ряд Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, maximk301 Помощь студентам 1 20.10.2018 17:20
Вычисление заданной функции разложением ее в ряд с использованием рекурсии - C++ Fliiz Помощь студентам 1 20.09.2015 17:22
Вычисление заданной функции (выражения) kisch Паскаль 9 16.06.2011 21:18
Вычисление функции заданной в виде разложения в ряд StudeHt Паскаль 2 02.05.2009 20:08
Вычисление функции с заданной точностью. Absent Помощь студентам 1 21.11.2008 14:30


19:05.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.