116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
1

Команды сопроцессора.

17.04.2012, 11:49. Показов 18855. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожайлуста, как выполнить умножение при помощи сопроцессора и еще, как вводить числа с запятой (например, 2.5). Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2012, 11:49
Ответы с готовыми решениями:

Команды сопроцессора и его стек
Вот кусок кода. fild fild fadd fldpi fmulp mov , 2048 fidiv ca изначально -...

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

Константы сопроцессора
Зачем в сопроцессоре команды загрузки констант? С ПИ понятно, например, а вот зачем загружать как...

Стек сопроцессора
Друзья, не могу до конца разобраться с работой стека. В стек загружаются данные последовательно,...

21
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
17.04.2012, 12:28 2
programmisto,
1) z := x * y
Assembler
1
2
3
fld x
fmul y
fstp z
2) смотри здесь
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
17.04.2012, 12:46  [ТС] 3
Спасибо, сейчас понял. Поясни, пожайлуста ещё, что делают fld и fstp.

Добавлено через 2 минуты
А ещё, как вычислить синус, косинус. А угол вводится в градусах или радианах?
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
17.04.2012, 12:58 4
programmisto, в радианах
синус можно вычислить несколькими командами например fsin, fsincos
косинус проще всего через fsincos
fld загрузить что-либо в стек сопроцессора,
fstp вытолкнуть в переменную содержимое вершины стека сопроцессора
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 10:45  [ТС] 5
И ещё, как округлять при помощи сопроцессора? И есть ли возможность указания разряда, до которого округлять?

Добавлено через 20 часов 13 минут
И ещё, зачем нужна функция finit? В других руководствах я читал, но в примерах этой строки не было.
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 12:55 6
programmisto, finit - инициализация FPU, устанавливает некоторые регистры FPU в их начальное состояние, незавимо от предыдущих значений. Слово управления CW устанавливается в 037Fh (округлять к ближайшему, все особые ситуации замаскированы, точность 64 бита). Слово состояния SW очищается (флаги особых ситуаций сброшены, регистр стека R0 является вершиной стека). Все стековые регистры помечаются как пустые. Указатели команды и данных очищаются.

Добавлено через 1 час 5 минут
Цитата Сообщение от programmisto Посмотреть сообщение
как округлять при помощи сопроцессора? И есть ли возможность указания разряда, до которого округлять?
Допустим у нас есть число Пи = 3,1415926535897932384626433832795 требуется округлить его до пятой цифры после запятой
3,1415926535897932384626433832795*100000 то, что получилось округляем до целого и снова делим на 100000
Assembler
1
2
3
4
5
6
7
8
9
10
.code
    finit
    fldpi
    fmul y
    frndint
    fdiv y
    fstp result
.data
y   dd 100000.0
result  dd ?
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 13:02  [ТС] 7
А процессор надо деинициализировать? В ООП если создали объект надо уничтожить. А здесь как?
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 13:04 8
programmisto, следующая программа, которая будет обращается к сопроцессору (если ее пишет не жопорукий программист) также начнется с команды finit
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 13:33  [ТС] 9
А как вычислять ArcSin, ArcCos?
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 13:52 10
programmisto, для вычисления arcsin(x), arccos(x) используется свойство https://www.cyberforum.ru/cgi-bin/latex.cgi?sin^{2}(x)+cos^{2}(x)=1 тогда https://www.cyberforum.ru/cgi-bin/latex.cgi?tg(x)=\frac{sin(x)}{\sqrt{1-sin^{2}(x)}}=\frac{\sqrt{1-cos^{2}(x)}}{cos(x)}
https://www.cyberforum.ru/cgi-bin/latex.cgi?arcsin(x)=arctg(tg(x))=arctg(\frac{sin(x)}{\sqrt{1-sin^{2}(x)}})
https://www.cyberforum.ru/cgi-bin/latex.cgi?arccos(x)=arctg(tg(x))=arctg(\frac{\sqrt{1-cos^{2}(x)}}{cos(x)})
"Это же элементарно, Ватсон!"
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 14:00  [ТС] 11
Ошибочка выходит.
arctg(tg(x)) = x.
Тогда что-ли
arcsin(x)=0
При любом x?
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 14:13 12
programmisto, если arcsin(x)=0, тогда x=0 при чём здесь любое значение Х, если ищется конкретное?
Y=sin(Х) X=arcsin(Y) у сопроцессора есть только команда извлечения арктангенса
https://www.cyberforum.ru/cgi-bin/latex.cgi?arcsin(x)=arctg(\frac{x}{\sqrt{1-x^{2}}})
https://www.cyberforum.ru/cgi-bin/latex.cgi?arccos(x)=arctg(\frac{\sqrt{1-x^{2}}}{x})
так понятнее?
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 14:16  [ТС] 13
Arcsin (x)= arctg(tg(x))
arcsin (x) = x ?
при угле в 90
arcsin (90) = 90?
1 = 90?
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 14:20 14
programmisto, посмотри сообщение выше твоего и не цепляйся к словам, с таким бы рвением сам мог найти способ получения арксинуса и арккосинуса
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 14:33  [ТС] 15
Понятно. А как извлечь квадратный корень? А также, какая функция вычисляет тангенс. И ещё, какие параметры берёт и что возвращает функция fpatan.
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 14:38 16
programmisto,
1) стоит найти учебник
2) fsqrt корень st(0)=https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{st(0)}
3) fptan тангенс st(0)=tg(st(0))
4) fpatan арктангенс ST(0)=Arctg (ST(1)/ST(0)), содержимое st(1) выталкивается
все функции не имеют аргументов, вернее он всегда на верхушке стека, или для арктангенса это аргументы в st(0) и в st(1)
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 14:57  [ТС] 17
А параметры в каком порядке запихивать (в прямом или обратном)?
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 15:01 18
programmisto, смотри пункт первый
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 15:46  [ТС] 19
А где взять книгу по сопроцессору? У меня есть несколько книг по ассемблеру, но там совершенно не говорится о сопроцессоре.
0
Ушел с форума
Автор FAQ
15888 / 7462 / 1012
Регистрация: 11.11.2010
Сообщений: 13,446
18.04.2012, 15:56 20
programmisto, для начала найди Дэвид Дж. Брэдли "Программирование на языке ассемблера для IBM PC" там азы по сопроцессору, немного есть у Юрия Магда - "Ассемблер для процессоров Intel Pentium", дальше сам найдешь если захочешь
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 15:56
Помогаю со студенческими работами здесь

Работа сопроцессора
Помогите найти ошибку mov a,ax fldpi fxch fild a fmul st,st(1) mov...

SASM-вывод из сопроцессора
Нужно вывести с регистра st0 значение которое туда записывается в ходе математических операций. Сам...

Обмен регистров сопроцессора
Какой командой можно поменять местами значения регистров st(1) и st(2)?

Включение/отключение сопроцессора
Доброго времени суток. Подскажите, как можно выполнить включение и выключение арифметического...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru