Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Madi Yerzhan
1 / 1 / 1
Регистрация: 22.02.2018
Сообщений: 75
1

Вычисление выражения по формуле

31.03.2018, 16:26. Просмотров 924. Ответов 2

Входные данные необходимо вводить с клавиатуры; результат должен быть выведен на
консоль.
0
Изображения
 
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2018, 16:26
Ответы с готовыми решениями:

Вычисление выражения по формуле
Входные данные необходимо вводить с клавиатуры; результат должен быть выведен на консоль.

Вычисление выражения по формуле
Входные данные необходимо вводить с клавиатуры; результат должен быть выведен на консоль.

Вычисление выражения по формуле
Составить программу вычисления y=(10*sin({x}_{1})+20*cos({x}_{2}))/x_3^3. Числа вводятся с...

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

Вычисление выражения по формуле
Входные данные необходимо вводить с клавиатуры; результат должен быть выведен на консоль.

2
Madi Yerzhan
1 / 1 / 1
Регистрация: 22.02.2018
Сообщений: 75
31.03.2018, 16:37  [ТС] 2
Блин, там не masm, а emu8086
0
ФедосеевПавел
Модератор
4247 / 2337 / 939
Регистрация: 01.02.2015
Сообщений: 7,726
31.03.2018, 19:27 3
Лучший ответ Сообщение было отмечено Madi Yerzhan как решение

Решение

masm32
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
.486
.model flat, stdcall
option casemap :none
 
        include d:\masm32\include\windows.inc
 
        include d:\masm32\include\user32.inc
        include d:\masm32\include\kernel32.inc
        include d:\masm32\include\masm32.inc
 
        includelib d:\masm32\lib\user32.lib
        includelib d:\masm32\lib\kernel32.lib
        includelib d:\masm32\lib\masm32.lib
.data
        aszPromptX      db      0Dh, 0Ah, 'Enter the X: ', 0
        aszPromptZ      db      0Dh, 0Ah, 'Enter the Z: ', 0
        aszMsgResult    db      0Dh, 0Ah, 'Result: ', 0
        aszPressEnter   db      0Dh, 0Ah, 0Dh, 0Ah, "Press ENTER to exit", 0
.data?
        hConsoleOutput  HANDLE  ?
        hConsoleInput   HANDLE  ?
        X               dq      ?
        Z               dq      ?
        Result          dq      ?
        Buffer          db      1024 dup(?)
        BufLen          dd      ?
.code
 
;ввод числа в формате double
ReadFloat       proc    lptrPrompt:DWORD, iLengthPrompt:DWORD, lptrFloat:DWORD
 
        invoke  WriteConsole, hConsoleOutput, lptrPrompt,\
                iLengthPrompt, ADDR BufLen, NULL
        invoke  ReadConsole, hConsoleInput, ADDR Buffer,\
                LENGTHOF Buffer, ADDR BufLen, NULL
        lea     esi,    [Buffer]        ;удаление из буфера
        add     esi,    [BufLen]        ;символов перевода строки
        mov     [esi-2],word ptr 0
        finit
        invoke  StrToFloat, ADDR Buffer, lptrFloat
        ret
ReadFloat       endp
 
;arcsin(x)
ArcSin  proc
        fld     st(0)
        fabs
        fld1
        fcompp
        fstsw   ax
        sahf
        je      @@Else
                fld     st(0)
                fmul    st(0),  st(0)
                fld1
                fsubrp  st(1),  st(0)
                fsqrt
                fpatan  ;st(1)=x, st(0)=sqrt(1-x^2)
        ret
        @@Else:
                fldpi
                fld1
                fadd    st(0),  st(0)
                fdivp   st(1),  st(0)
                fxch    st(1)
                ftst
                fstsw   ax
                sahf
                        fcomp
                ja      @@Positive1
                        fchs
                @@Positive1:
        ret
ArcSin  endp
 
;Вычисляет значение exp(x)
;на входе:
;  st(0) - аргумент функции x
;на выходе:
;  st(0) - значение функции
Exp     proc
        ;fld     x              ;st(0)=x
        fldl2e                  ;st(0)=1/ln(2)=log2(e)
        fmul                    ;st(0)=x/ln(2)=x*log2(e)
        fld     st
        frndint
        fsub    st(1), st
        fxch    st(1)
        f2xm1
        fld1
        fadd
        fscale
        fstp    st(1)
        ret
Exp     endp
 
main    proc
 
        ; получение описателей ввода и вывода консоли
        invoke  GetStdHandle,   STD_INPUT_HANDLE
        mov     hConsoleInput,  eax
 
        invoke  GetStdHandle,   STD_OUTPUT_HANDLE
        mov     hConsoleOutput, eax
 
        invoke  ClearScreen
        ;ввод X
        invoke  ReadFloat,      ADDR aszPromptX, \
                                LENGTHOF aszPromptX - 1, \
                                ADDR X
        ;ввод Z
        invoke  ReadFloat,      ADDR aszPromptZ, \
                                LENGTHOF aszPromptZ - 1, \
                                ADDR Z
        ;вычисление
        finit
        fld     [Z]
        call    ArcSin
        fld     [X]
        fld1
        fadd    st(1),  st(0)
        fadd    st(1),  st(0)
        faddp   st(1),  st(0)
        fchs
        call    Exp
        faddp   st(1),  st(0)
        fld     [X]
        fmulp   st(1),  st(0)
 
        fstp    [Result]
        ;очистка FPU
        finit
        ;вывод результата
        invoke  WriteConsole, hConsoleOutput, ADDR aszMsgResult,\
                LENGTHOF aszMsgResult - 1, ADDR BufLen, NULL
        invoke  FloatToStr2, [Result], ADDR Buffer
        invoke  StrLen, ADDR Buffer
        mov     [BufLen],       eax
        invoke  WriteConsole, hConsoleOutput, ADDR Buffer,\
                BufLen, ADDR BufLen, NULL
 
        ;ожидание нажатия ENTER
        invoke  WriteConsole, hConsoleOutput, ADDR aszPressEnter,\
                LENGTHOF aszPressEnter - 1, ADDR BufLen, NULL
        invoke  ReadConsole, hConsoleInput, ADDR Buffer,\
                LENGTHOF Buffer, ADDR BufLen, NULL
 
        invoke  ExitProcess, 0
main    endp
end     main
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2018, 19:27

Вычисление выражения по формуле.
Уважаемые программисты, помогите пожалуйста с решением примера на ассемблере \frac{(a-b)^3...

Вычисление выражения по формуле
Всем привет, помогите, пожалуйста, вычислить выражение с использованием FPU. Заранее спасибо....

Вычисление выражения по формуле
Нужно решить задачу на ассемблере, самую простую.. а я в нем не жу жу. Z=a^2*sqrt((c*d)/b) Вот...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru