С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 16

Сопроцессор: вычисление гиперболического тангенса

05.11.2010, 19:43. Показов 3613. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста разобраться с передачей результатов из ассемблера в сишник.
в ассемблере вычисляю гиперболический тангенс.данные source передаются из c++ а вернуть надо в result. в с++ функция asmth(&source,&result).
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
;.model small
;e2x-1/e2x+1
 
                .386
_TEXT           segment use32 para public 'CODE'
                public  _asmth
                public  __CItanh
source equ qword ptr [ebp+8]
result equ qword ptr [ebp+12]
 
_asmth          proc    near
                assume  cs:_TEXT
                push    ebp
                mov     ebp,esp
                fld     qword ptr [ebp+8]       ; загрузка в стек
                fld     st                      ; дублируем
                fadd                            ; 2*x
                fldl2e                          ; log по основан 2 от (e)
                fmulp   st(1),st                ; x * log base 2(e)
                fst     st(1)                   ; copy
                frndint                         ; округлен до целого
                fsub    st(1),st                ; вычитание
                fxch                            ; обмен st, st(1)
                f2xm1                           ; вычисление 2 в степени (x - 1)
                fld1                            ; загрузка единицы
                fadd                            ; сложение;2 to the x
                fscale                          ; Scale by power of 2
                fstp    st(1)                   ; Set new stack top and pop
                fld1                            ; загрузка единицы
                fadd                            ; вычисление exp(2*x)+1
                fld1                            ; загрузка единицы
                fld1                            ; загрузка единицы
                fadd                            ; Set divisor to 2
                fdivr                           ; Compute 2/(exp(2*x)+1)
                fld1                            ; загрузка единицы
                fsubr                           ; вычислен th
        ;fstp qword ptr [ebp+12];result
                pop     ebp                     ; Restore register bp
                ret
_asmth          endp
 
__CItanh        proc    near
                assume  cs:_TEXT
                sub     esp,8                   ; Allocate stack space for x
                fstp    qword ptr [esp]         ; Copy x onto stack
                call    _asmth                  ; Call tanh
                add     esp,8                   ; Remove x from stack
                ret
__CItanh        endp
 
_TEXT           ends                            ;End of segment
                end                             ;End of module
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
extern "C"
{
    void asmth(float *source,float *result);
}
int main()
{
    float source=0;
    float result=0;
    printf("Vvedite x:");
    scanf("%f", &source);
    printf("C++ Tanh=%f\n",tanh(source));
    asmth(&source,&result);
    printf("AsmTh = %f\n", result);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2010, 19:43
Ответы с готовыми решениями:

Реализовать вычисление гиперболического тангенса с помощью fpu
Здравствуйте мне необходимо реализовать вычисление гиперболического тангенса с помощью fpu. Нашел в нете код но никак не понятен смысл...

Сопроцессор. Вычисление показательной функции.
Здравствуйте, у меня вопрос. Как с использованием функций сопроцессора (среда MASM, семейство x86)) вычислить значение следующего...

Функция гиперболического тангенса tanh(x)
Всем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций...

8
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 16
08.11.2010, 00:46  [ТС]
собственно разобрался..если надо кому скину без ошибок код..
0
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 5
14.03.2017, 19:14
Цитата Сообщение от vantusb Посмотреть сообщение
если надо кому скину без ошибок код..
Очень надо)
Хотя спустя 7 лет ответа я, наверное, не дождусь(
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
14.03.2017, 21:13
Цитата Сообщение от X_A_A Посмотреть сообщение
Хотя спустя 7 лет ответа я, наверное, не дождусь(
Создай тему, выложи свои наработки, идеи, помогут. Или в плюсах гугли.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 12
14.03.2017, 21:18
мановар,
Но ведь понятно, что у него ничего нет. А из плюсов переносят сюда.

Основной политикой форума является "можешь помочь - помогай", поэтому чуть позже удалю ваше и моё сообщения.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
14.03.2017, 21:54
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
можешь помочь - помогай
А чем помочь то ??? Я просто не понимаю. Я готов помочь, но эти задания меня ставят не то что в тупик, а в прямой ступор. ТС сам не знает что хочет, а я тем более.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
А из плюсов переносят сюда.
Не знаю что у Вас кто и чего переносит
Перенос элементов из одного массива в другой (ассемблерная вставка)
Помогайте разъяснять, я в этом не мастер.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 12
14.03.2017, 22:18
Думаю, что у обоих пользователей одинаковая задача - многофайловая компиляция. Один из файлов - исходник на ассемблере.
Можно предположить, что приведённый код верен, но есть ошибки в оформлении кода .model small и в соглашении о вызовах - результат должен возвращаться в стеке сопроцессора.

Вопросы про асм вставки в С/С++ часто публикуют именно в разделе ассемблера. Поэтому я несколько преувеличил про перенос тем.

Добавлено через 2 минуты
Чем помочь - в данном случае опубликовать изменённый исходник.

Добавлено через 9 минут
Прошу прощения. У меня закончился длинный день. Уже не очень отчётливо воспринимаю мир.
0
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 5
14.03.2017, 23:01
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Но ведь понятно, что у него ничего нет.
Скажу честно, Вы правы. Дело в том, что ассемблер мне не нужен, ковыряться в нем я пыталась и писать код самостоятельно - 2 недели убитого времени впустую. Помочь мне некому, ибо преподавание никакое - на отвали, а инфы не особо много внятной даже в инете, желание самостоятельно разбираться отпало напрочь.

У меня попалось задание один в один с данным, а именно:
"Разработать подпрограмму соответствующую стандарту связей языка Си с двумя аргументами (source,result), которая вычисляет (с использованием сопроцессора) гиперболический тангенс"
Поэтому какой смысл создавать новую тему. Просто надеялась на чудо, ведь тому кто разобрался, кинуть код или указать на ошибки одна минута.
0
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 16
15.03.2017, 10:53  [ТС]
блин кто вспомнил эту тему.7 лет прошло.я уже с этим сто лет не связывался.если не забуду дома в архивах поищу остатки былых времен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2017, 10:53
Помогаю со студенческими работами здесь

Вычисление гиперболического синуса
Здравствуйте, помогите решить 1 и 2 задачу с помощью процедур.

Вычисление гиперболического синуса
Помогите пожалуйста, абсолютно не могу понять..

Вычисление тангенса
HELP! Не могу разобраться с процедурами. Написал процедуру для вычисления тангенса. при вызове работает всё хорошо. procedure tangens...

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

Обчисление суммы гиперболического синуса и гиперболического косинуса ((shA+сhB) в квадрате)
Помогите написать программу в С++ для обчисления сумы гиперболического синуса и гиперболического косинуса ((shA+сhB) в квадрате).Зарание...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru