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

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

05.11.2010, 19:43. Показов 3673. Ответов 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
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,926
Записей в блоге: 13
14.03.2017, 21:18
мановар,
Но ведь понятно, что у него ничего нет. А из плюсов переносят сюда.

Основной политикой форума является "можешь помочь - помогай", поэтому чуть позже удалю ваше и моё сообщения.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
14.03.2017, 21:54
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
можешь помочь - помогай
А чем помочь то ??? Я просто не понимаю. Я готов помочь, но эти задания меня ставят не то что в тупик, а в прямой ступор. ТС сам не знает что хочет, а я тем более.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
А из плюсов переносят сюда.
Не знаю что у Вас кто и чего переносит
Перенос элементов из одного массива в другой (ассемблерная вставка)
Помогайте разъяснять, я в этом не мастер.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,926
Записей в блоге: 13
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
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru