Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler: математика, вычисления

Войти
Регистрация
Восстановить пароль
 
sandy15
0 / 1 / 0
Регистрация: 02.07.2015
Сообщений: 262
#1

Построение графика функции y=sin(x)*cos(x) - Assembler

28.06.2017, 00:22. Просмотров 419. Ответов 2
Метки нет (Все метки)

Разработать программу вычисления функций y=sin(x)*cos(x) и вывести на экран ее график. Вывести оси координат. Аргументы тригонометрических функций задавать в радианах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2017, 00:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Построение графика функции y=sin(x)*cos(x) (Assembler):

Построение графика функции - Assembler
Построить график функции y=x*log(2;x)

Ассемблер, формула с sin и cos - Assembler
Не получается разобраться с формулой, как её реализовать в ассемблере cos(x)*sin(x)+cos(x*x)*sin(x)+cos(x)*sin(x*x) Подскажите...

Построить график функции y=y*sin(x) + y^2 * sin(3x) - Assembler
Помогите решить данную задачу, мне необходимо только заменить часть кода, которую я выделил комментариями. Построить сам график. У меня не...

Вычисление выражения по формуле. Построение графика. - Assembler
Помогите решить формулу 50 * sin 3x + cos 5x .model small .stack 256h .data curentx dw 0 curenty dw 100 ...

Посчитать значение функции cos(0.056739), используя разложение ее в ряд Тейлора, с точностью до пятого члена этого разложения - Assembler
Помогите пожалуйста написать программку Написать фрагмент программы на языке ассемблера, выполняющий вычисления , фрагмент оформить в...

Поворот графика функции - Assembler
Построить график функции y=x*log2x развернуть график на 45 градусов и вывести оба графика на екран Вот мой код: .386 scale macro p1...

2
ФедосеевПавел
Модератор
3255 / 1865 / 752
Регистрация: 01.02.2015
Сообщений: 6,390
28.06.2017, 20:29 #2
Можно за основу взять программу Поворот графика функции и переделать её под нужные условия.
Программа будет работать (строить нужный график), но как - мне не удалось до конца разобраться, поэтому переделаю под нужные вычисления, но как она работает - попробуйте разобраться самостоятельно.

Добавлено через 21 минуту
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.386
scale   macro   p1
    fld max_&p1
    fsub    min_&p1
    fild    p1&_res
    fdivp   st(1), st(0)
    fstp    scale_&p1
endm
 
x_res_  equ 320
y_res_  equ 200
 
_stack  segment stack
        db      100h dup(?)
_stack  ends
 
_data   segment use16
    min_x   dq  -3.14
    max_x   dq  3.14
    x_res   dw  x_res_
    crt_x   dw  ?
    scale_x dq  ?
 
    min_y   dq  -1.0
    max_y   dq  1.0
    y_res   dw  y_res_
    crt_y   dw  ?
    scale_y dq  ?
 
    step    dq  0.001
    tmp     dw  ?
    tmp2    dq  ?
    const_4 dd  4
 
    ;рассчитанные координаты точки графика
    x       dq  ?
    y       dq  ?
_data   ends
 
_code   segment use16
    assume  cs:_code, ds:_data, ss:_stack
@main:
    mov ax, _data
    mov ds, ax
 
    mov ax, 13h
    int 10h
 
    finit
 
 
    ;вычисление масштабных коэффициентов для координат точек графика
    scale   x
    scale   y
    ;построение осей
    call    draw_axis
 
    ;построение графика
    push    10                  ;цвет точек
    push    offset func         ;указатель на функцию
    call    draw_gra
    add sp, 4
 
    mov ah, 8
    int 21h
    mov ax, 3
    int 10h
    mov ax, 4C00h
    int 21h
 
;вычисление функции
;на входе:
;  st(0) - аргумент функции
;на выходе:
;  st(0) - значение функции
func   proc        ;y=sin(x)*cos(x)
    fsincos        ;st(0)=cos(x), st(1)=sin(x)
    fmulp          ;st(0)=sin(x)*cos(x)
    ret
func   endp
 
draw_gra    proc
    push    bp
    mov     bp, sp
    fld     min_x
 
    ;в ходе выполнения цикла на вершине стека FPU будет текущее значение x
@1:
    ;сохранение значения x для дальнейших вычислений
    fst     x
    ;вычисление значения функции
    fld     st(0)
    call    word ptr [bp+4]
    ;записать значение y в переменную для дальнейшего поворота
    fstp    y
    ;пересчёт значения x в экранные координаты
    fld     x
    call    get_x
    ;пересчёт значения y в экранные координаты
    fld     y
    call    get_y
    ;рисование точки
    push    word ptr [bp+6]
    call    draw_point
    add     sp, 2
 
    fld     step
    faddp   st(1), st(0)
    fcom    max_x
    fstsw   ax
    sahf
    jna @1
    ffree   st(0)
    pop bp
    ret
draw_gra    endp
 
;пересчёт значения x в экранные координаты
;на входе:
;  st(0) - значение x
;на выходе:
;  crt_x - глобальная переменная значения x в экранных координатах
;  извлечение вершины стека FPU
get_x   proc
    fsub    min_x
    fdiv    scale_x
    frndint
    fistp   crt_x
    ret
get_x   endp
 
get_y   proc
    fsub    min_y
    fdiv    scale_y
    frndint
    fistp   crt_y
    mov ax, y_res
    sub ax, crt_y
    mov crt_y, ax
    ret
get_y   endp
 
draw_point  proc
    push    bp
    mov bp, sp
    mov ax, 0A000h
    mov es, ax
    mov si, crt_y
    mov di, crt_x
    cmp si, y_res_
    jae @nd
    cmp di, x_res_
    jae @nd
    mov ax, x_res_
    mul si
    add ax, di
    mov bx, ax
    mov dx, [bp+4]
    mov byte ptr es:[bx], dl
@nd:
    pop bp
    ret
draw_point  endp
 
draw_axis   proc
    fldz
    call    get_y
    mov crt_x, 0
    mov cx, x_res_
@x_c:
    push    15
    call    draw_point
    add sp, 2
    inc crt_x
    loop    @x_c
 
    fld max_x
    fsub    min_x
    frndint
    fistp   tmp
    mov cx, tmp
 
    fld min_x
    frndint
    dec crt_y
@lx:
    fld st(0)
    call    get_x
    push    15
    call    draw_point
    add sp, 2
 
    fld1
    faddp   st(1), st(0)
    loop    @lx
    ffree   st(0)
 
    fldz
    call    get_x
    mov crt_y, 0
    mov cx, y_res_
@y_c:
    push    15
    call    draw_point
    add sp, 2
    inc crt_y
    loop    @y_c
 
    fld max_y
    fsub    min_y
    frndint
    fistp   tmp
    mov cx, tmp
 
    fld min_y
    frndint
    dec crt_x
@ly:
    fst st(1)
    call    get_y
    push    15
    call    draw_point
    add sp, 2
 
    fld1
    faddp   st(1), st(0)
    fcom    max_y
    loop    @ly
    ffree   st(0)
    ret
draw_axis   endp
 
_code   ends
    end @main
1
sandy15
0 / 1 / 0
Регистрация: 02.07.2015
Сообщений: 262
29.06.2017, 14:34  [ТС] #3
Вообще мне очень сложно понять Ассемблер. Но, спасибо Вам, хоть что-то есть в решении этой задачи.
Попробую разобраться, хоть и не уверен, что получится.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2017, 14:34
Привет! Вот еще темы с ответами:

Построение графика sin, cos и tg в TChart - Delphi
Я делаю "Научный калькулятор". Помогите, пожалуйста, построить графики синуса, косинуса и тангенса в TChart. Нужно, чтобы при введении...

Написать программу построения графика функции y=cos x – sin x на отрезке [0;3] - Turbo Pascal
Написать программу построения графика функции y=cos x – sin x на отрезке

Написать программу построения графика функции y=sin x +2 cos x на отрезке [-3;2] - Turbo Pascal
Написать программу построения графика функции y=sin x +2 cos x на отрезке ;

Построение графика функции y=cos(x) - Turbo Pascal
Здравствуйте. Пожалуйста, помогите с построением графика y=cos(x), а то ведь даже непонятно с чего начать. Заранее спасибо.


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

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

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