Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
78 / 78 / 11
Регистрация: 02.12.2011
Сообщений: 296

Проверка вычисления тригонометрической функции

15.06.2013, 20:47. Показов 1107. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
...доброго времени суток, уважаемые форумчане!... Возникла такая задача: имеется некое значение "X", которое нужно домножить на число "минус ПИ", после чего вычислить косинус полученного числа. Иными словами требуется найти
Y = cos (-X*PI). Вот программный код этой процедуры:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Calc_1 proc                 ; процедура расчёта Y на 1-ом участке функции Y = cos(-X*Pi) 
    finit                                     ; инициализацизировать сопроцессор 
    fldpi                                     ; загрузить число "Пи" 
    fld    X                             ; загрузить текущее значение "X" 
    fmul                                      ; умножить X на "Пи"
    fstp     varTempPI                 ; забрать значение "X" домноженное на "Пи"
    fld       varTempPI            ; загрузить новое значение переменной varTempPI
    mov     varTempOne, -1         ; записать во временную переменную -1   
    fld    varTempOne              ; загрузить временную переменную varTempOne
    fmul                                     ; умножить значение varTempPI на -1
    fstp     varTempOne              ; забрать новое значение varTempPI
    fld    varTempOne              ; загрузить временную переменную varTempOne
    fcos                                   ; вычисляем косинус
    fstp    Y                               ; забираем значение "Y"
    ret                                     ; возврат управления из процедуры вызывающей программе
Calc_1 endp
...теперь вопрос: правильно ли, я реализовал данную процедуру?...можно ли это проверить не прибегая к отладчику?..(эта процедура "сидит" в программе довольно "глубоко") ...может быть кто-то из опытных программистов сразу сможет дать ответ...и, если я где-то ошибся, подсказать где именно ошибка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2013, 20:47
Ответы с готовыми решениями:

Включение операции получения значения тригонометрической функции в обратной польской записи
То есть sin представляем как S совсем не знаю как это изобразить и получить с обратной польской Помогите, кто шарит, пожалуйста

Таблица вычисления значений тригонометрической функции синус
Оформите таблицу вычисления значений тригонометрической функции синус согласно образцу. Вычисления производите для углов от 0 до 10 через...

Написать программу для вычисления значения тригонометрической функции (sin,cos,tg,ctg) для данного действительного числа
Помогите пожалуйста написать программу для вычисления значения тригонометрической функции (sin,cos,tg,ctg) для данного действительного...

5
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35
15.06.2013, 22:34
Строка 9 - ошибка! Нельзя вместе применять данные разных форм представления: плавающую и фиксированную запятые.
Есть, по крайней мере, два варианта решения Вашей "проблемы".
1. Зарезервируйте дополнительную переменную, значение которой равно -1.0 в одном из форматов: dd, dq или dt.
В нужный момент загрузите ее (как Х) командой fld в вершину стека и работайте далее по алгоритму.
2. Если резервировать дополнительную переменную трудно, то загрузите в вершину стека ноль (команда fldz), затем вещественную единицу (команда fld1), вычтите из нуля 1 и получите -1 в вершине стека. Далее работайте по алгоритму.
Желаю удачи!
1
78 / 78 / 11
Регистрация: 02.12.2011
Сообщений: 296
16.06.2013, 00:19  [ТС]
...переделал, но не могу понять - надо применять fsubr или все-таки fsub. Вот переделанный код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Calc_1 proc                 
   finit                   ; инициализацизировать сопроцессор 
   fldpi                    ; загрузить число "Пи" 
   fld     X                ; загрузить текущее значение "X" 
   fmul                 ; умножить X на "Пи"
    fstp   varTempPI        ; забрать значение "X" домноженное на "Пи"
   ; fld    varTempPI       ; загрузить новое значение переменной varTempPI
   ; mov    varTempOne, -1  ; записать во временную переменную -1
   fldz                    ; загружаем нуль
   fld1                    ; загрузить вещественную единицу
   fsubr                   ; вычесть из нуля единицу
   fld     varTempOne       ; загрузить временную переменную varTempOne
   fmul                 ; умножить значение varTempPI на -1
   fstp   varTempOne       ; забрать новое значение varTempPI
   fld     varTempOne       ; загрузить временную переменную varTempOne
   fcos                    ; вычисляем косинус
   fstp   Y                ; забираем значение "Y"
   ret                     ; возврат управления из процедуры вызывающей программе
   Calc_1 endp
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
17.06.2013, 05:12
Simulkin Stas,
начать нужно с того, что вспомнить тригонометрию https://www.cyberforum.ru/cgi-bin/latex.cgi?Cos(X)=Cos(-X) поэтому программа упрощается до https://www.cyberforum.ru/cgi-bin/latex.cgi?Y = Cos (X*\pi ), дальше уже совсем просто
Assembler
1
2
3
4
5
6
7
8
9
Calc_1 proc                 ; процедура расчёта Y на 1-ом участке функции Y = cos(-X*Pi) 
    finit                                     ; инициализацизировать сопроцессор 
    fldpi                                     ; загрузить число "Пи" 
    fld    X                             ; загрузить текущее значение "X" 
    fmul                                      ; умножить X на "Пи"
    fcos                                   ; вычисляем косинус
    fstp    Y                               ; забираем значение "Y"
    ret                                     ; возврат управления из процедуры вызывающей программе
Calc_1 endp
1
78 / 78 / 11
Регистрация: 02.12.2011
Сообщений: 296
17.06.2013, 07:37  [ТС]
...Mikl___, спасибо, я еще вчера разобрался - в том "исправленном" коде тоже была ошибка...
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
17.06.2013, 08:34
Simulkin Stas,
на будущее, для умножения на -1 в FPU есть специальная команда fchs ("сменить знак у st(0)")
Assembler
1
2
3
4
    fldpi ; st(0)= 3,1415926535897932384626433832795
    fld    X ; st(0)=X st(1)=3,1415926535897932384626433832795 
    fmul   ; st(0)=X*3,1415926535897932384626433832795 
    fchs   ; st(0)= -X*3,1415926535897932384626433832795
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.06.2013, 08:34
Помогаю со студенческими работами здесь

Собственные функции. Значение тригонометрической функции через степенной ряд
Привет всем! С языком "Си" ещё только знакомлюсь. Нужна помощь со следующим заданием: Нужно написать программу которая высчитывает...

Составить программу для вычисления значения функции. Проверка ,значение аргумента выбрать самостоятельно
Нужно в кротчайшие сроки, буду очень признателен. Заранее спасибо.

Интегрирование тригонометрической функции
очень очень нужно решить! помогите пожалуйста!!!

Интегрирование тригонометрической функции.
как можно вычислить такой интеграл? \int \frac{dx}{2sinx-cosx+5} Прочитала, что здесь нужно использовать универсальную...

Предел тригонометрической функции
Здравствуйте, никак не могу разобраться. Пробовал различные преобразования, однако никак не могу избавиться от синуса в знаменателе. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru