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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

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

функция - 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, 12:29   #2
kompildan
Пользователь
 
Регистрация: 16.02.2019
Сообщений: 14
По умолчанию вот формула F(x) = x/(|sin(x)| + 2)

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

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

Код:
;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 в 11:39.
Nif-naf вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS