Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/57: Рейтинг темы: голосов - 57, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 21.08.2015
Сообщений: 2
1

Вычисление значений тригонометрических функций

01.12.2010, 16:53. Показов 11268. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу для вычитания тригонометрической функции угла от 0 до 360, в зависимости от кода выбора пользователя : 'S' - вычислить значение синуса угла; 'C' - вычисление значения косинуса угла; 'T' - вычисление значения тангенса угла ; 'c' - вычисление значения котангенса угла.
Вычисление значений тригонометрических функций оформите в виде отдельных процедур, используя процедуру для вычисления значения синуса угла.

cos(x)=sin(90+-x);

tg(x)= sin(x)/cos(x); ctg(x)=cos(x)/sin(x);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2010, 16:53
Ответы с готовыми решениями:

Вычисление значений функций в подпрограммах
программа на языке ассемблера для вычисления значения y. Значения y1 и y2 необходимо вычислять в...

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

Вычисление тригонометрических функций
#include <stdio.h> #include <conio.h> #include <math.h> #include <Windows.h> void main() {...

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

3
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
02.12.2010, 05:12 2
Valdes, в топике программа вычисления tg x библиотека программ по использованию FPU с примерами на ассемблере с вычислением синуса, косинуса, тангенса и арктангенса -- воспользуйтесь!
0
0 / 0 / 0
Регистрация: 21.08.2015
Сообщений: 2
02.12.2010, 17:26 3
Нужно в таком вот духе написать для косинуса и тангенса с котангенсом, что бы через меню можно было выбирать нужное действие

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
   ; Демонстрация реализации передачи параметров в процедуру
   ; с помощью регистров. 
   ;   Программа, позволяющая получить значение  синуса угла
   ; от 0 до 360 градусов [Скэнлон,1989,с.166]
   ; -----------------------------------------
   MASM
   MODEL small
   .STACK 256
   .DATA
      ; -----------------------------------------
      ; Таблица значений функции синус для углов, 
      ; измеряемых в градусах
      ; ---------------------------------------
      Sine DW 0,175,349,523,698,872     ;  0- 5
           DW 1045,1219,1392,1564,1736  ;  6-10
           DW 1908,2079,2250,2419,2588  ; 11-15
           DW 2756,2924,3090,3256,3420  ; 16-20
           DW 3584,3746,3907,4067,4226  ; 21-25
           DW 4384,4540,4695,4848,5000  ; 26-30
           DW 5150,5299,5446,5592,5736  ; 31-35
           DW 5878,6018,6157,6293,6428  ; 36-40
           DW 6561,6691,6820,6947,7071  ; 41-45
           DW 7193,7313,7431,7547,7660  ; 46-50
           DW 7771,7880,7986,8090,8191  ; 51-55
           DW 8290,8387,8480,8572,8660  ; 56-60
           DW 8746,8829,8910,8988,9063  ; 61-65
           DW 9135,9205,9272,9336,9397  ; 66-70
           DW 9455,9511,9563,9613,9659  ; 71-75
           DW 9703,9744,9781,9816,9848  ; 76-80
           DW 9877,9903,9926,9945,9962  ; 81-85
           DW 9976,9986,9994,9998,10000 ; 86-90
      ; --------------------------------------------------
      Str1 DB "Введите угол (от 0 до 360 градусов) x=",'$'
      Str2 DB "SIN(",'$'
      Str3 DB ")=",'$'
      Str4 DB "*10^(-4)",'$'
      Str5 DB "Введите нужное действие S-синус, C-косинус, T-тангенс, c-котангенс. ", '$'
   ; -----------------------
   .CODE
   Start: 
      mov ax,@data
      mov ds,ax    ; (DS)=@data
    
      ; -----------------------------
      ; Ввод значения угла в градусах
      ; -----------------------------
    Vvod_a:
      mov ah,09h      ; Функция вывода строки на экран
      lea dx,Str1     ; (DX):=<Адрес_строки_Str1>
      int 21h         ; Вызов функции
      ; ----------
      call Vvod_AX    ; Ввод значения угла (в градусах)
      cmp ax,0        ; (AX)=0?
      jb Vvod_a       ; Если (AX)<0, то переход по метке
      cmp ax,360      ; (AX)=360?
      ja Vvod_a       ; Если (AX)>360, то переход по метке
      ;------------------------------
      ; Ввод нужного действия
      ;------------------------------
    Vvod_d:
      mov ah,09h
      lea dx,Str5
      int 21h 
      mov ah,01h ; 
      int 21h
      cmp ah,53h
      je Sin
     ;cmp ah,43h
     ;je Cos
     ;cmp ah,54h
     ;je Tan
     ;cmp ah,50h
     jne Vvod_d
      ; --------------------------------------------------
      ; Оформление предложения для написания ответа
      ; -------------------------------------------
    Sin:
      push ax         
      mov ah,09h      ; Функция вывода строки на экран
      lea dx,Str2     ; (DX):=<Адрес_строки_Str2>
      int 21h         ; Вызов функции
      pop ax          
      ; -----------
      call Vivod_AX   ; Печать (AX)
      ; -----------
      push ax         
      mov ah,09h      ;
      lea dx,Str3     ; (DX):=<Адрес_строки_Str3>      
      int 21h         ; Вызов функции вывода строки на экран
      pop ax          
      ; -----------------------------------------------------
      ; Вычисление синуса заданного угла и вывод его на экран
      ; -----------------------------------------------------
      call Find_Sine  ; Процедура для вычисления синуса угла
      mov ax,bx       ; Результат работы процедуры -> AX
      call Vivod_AX   ; Вывод целого числа из AX на экран
      ; -----------
      mov ah,09h      ;
      lea dx,Str4     ; (DX):=<Адрес_строки_Str4>      
      int 21h         ; Вызов функции вывода строки на экран
      ; --------
      mov ah,08h      ; "Задержка" экрана
      int 21h         
    Exit:
      mov ax,4C00h    
      int 21h         
   ; ****************************************************
   ; Процедура Find_Sine: нахождение значения синуса угла 
   ; Передаётся             : (AX)=<Значение_угла_в_градусах> 
   ; Возвращается           : (BX)=<Значение_синуса_угла>
   ; Модифицируемые регистры: BX
   ; ----------------------------------------------------
   ; В зависимости от значения угла в процедуре осуществ-
   ; ляются следующие преобразования:
   ;
   ; ┌────────┬─────────────┬────────────────┐
   ; │Квадрант│Диапазон угла│Значение функции│
   ; ├────────┼─────────────┼────────────────┤
   ; │   I    │   0<=x<= 90 │   sin(x)       │
   ; │   II   │  91<=x<=180 │   sin(180-x)   │
   ; │        │             │                │
   ; │   III  │ 181<=x<=270 │  -sin(x-180)   │
   ; │        │             │                │
   ; │   IV   │ 271<=x<=360 │  -sin(360-x)   │
   ; └────────┴─────────────┴────────────────┘
   ; --------------------------------------------
   Find_Sine PROC  ; Открытие процедуры Find_Sine
      push ax      
      push cx      
      ; -------
      xor cx,cx        ; (CX):=0 - флаг для обозначения знака числа
      cmp ax,181       ; (AX)=181?
      jl Sin_Pos       ; Переход по метке, если угол < 181
      mov cx,1         ; (CX):=1
      sub ax,180       ; (AX):=x-180
    Sin_Pos:
      cmp ax,91        ; Сравнение значения угла x с 91
      jl Get_Sin       ; Переход по метке, если угол < 91
      neg ax           ; -\
      add ax,180       ; -/ (AX):=180-x
      ; -------------------------------
      ; Вычисление синуса угла x
      ; ------------------------
    Get_Sin:         
      mov bx,ax        ; (BX):=(AX)
      shl bx,1         ; (BX):=2*(BX)
      mov bx,[sine+bx] ; (BX):=<Значение_синуса_из_таблицы>
      cmp cx,0         ; (CX)=0?
      je Ext           ; Переход, если (CX)=0
      neg bx           ; (BX):=-(BX)
    Ext:
      pop cx       
      pop ax       
      ret              ; Возврат в программу 
   Find_Sine ENDP      ; Завершение процедуры Find_Sine
   ; --------------------------------------------------
   include bibl-prc.inc
   END Start
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
03.12.2010, 04:38 4
Valdes, там только таблицы и нужно переделать сверяясь с встроенным в Windows калькулятором
0
03.12.2010, 04:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2010, 04:38
Помогаю со студенческими работами здесь

Вычисление тригонометрических функций
Нужно написать скрип на js который бы считал : sin,cos,tg и выводил в пустой ячейке ответ вида...

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

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

Вычисление тригонометрических значений
Здравствуйте. Использую c++ Builder 6. Подскажите, пожалуйста, как сделать так, чтобы когда вводишь...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru