С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
SerЁga
32 / 32 / 16
Регистрация: 18.08.2009
Сообщений: 93
1

Округление чисел в сопроцессоре

26.02.2010, 19:09. Просмотров 2822. Ответов 5
Метки нет (Все метки)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
data segment
temp dw 0
x1 dd 51.675
data ends
text segment
assume CS:text,DS:data
begin:
mov ax,data
mov ds,ax
fld x1 ;загрузка x1 в стек сопроцессора
frndint ;округляем число (тут проблема) 
fistp temp ;загружаем число в переменную temp
mov ax,4c00h
int 21h
text ends
end begin
Тут проблема в том что число 51.675 округляется до 52, а нужно
что-бы округлялось до 51, есть ли какая нибудь команда?.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2010, 19:09
Ответы с готовыми решениями:

lg вс сопроцессоре
как высчитать lg(2+sin^2x) в сопроцессоре. Скобки я уже высчитал, нужна...

Арифметика на сопроцессоре
Помогите написать программу с арифметическими командами(+,-,*,/). Если можно с...

Арифметические команды на сопроцессоре
Помогите написать программу с арифметическими командами на сопроцессоре. ( что...

Вычисление шести значений ф-ции на сопроцессоре
Есть два кода: Первый (НЕрабочий) В меседжбокс выводит у1 = "ERROR" вместо...

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

5
Kastaneda
Jesus loves me
Эксперт С++
4950 / 3027 / 347
Регистрация: 12.12.2009
Сообщений: 7,633
Записей в блоге: 2
Завершенные тесты: 1
26.02.2010, 19:15 2
Цитата Сообщение от SerЁga Посмотреть сообщение
Тут проблема в том что число 51.675 округляется до 52
По правилам математике так и должно быть. Если нужно округлить до 51, тогда это нужно "руками делать"
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
26.02.2010, 19:18 3
Режим округления содержится в Слове управления FPU.
Добавьте перед округлением
Assembler
1
2
3
4
5
  fnstcw fsttmp; копирование текущего содержимого FCW в переменную oldfcw
  
; and    fsttmp; 0F3FFh; очистка разрядов поля RC (здесь не требуется)
  or     [fsttmp], 0C00h; установка обоих разрядов поля RC
  fldcw  fsttmp; запись нового содержимого в FCW
где fsttmp - переменная типа word.
1
SerЁga
32 / 32 / 16
Регистрация: 18.08.2009
Сообщений: 93
26.02.2010, 19:32  [ТС] 4
Спасибо большое, всё работает
0
qwertun
9 / 9 / 1
Регистрация: 22.12.2012
Сообщений: 490
26.10.2013, 19:14 5
Цитата Сообщение от Goodwin98 Посмотреть сообщение
fsttmp
хто это? и почему на него ругается андефайнед симбол
0
Mikl___
Автор FAQ
12002 / 6266 / 599
Регистрация: 11.11.2010
Сообщений: 11,342
26.10.2013, 19:20 6
qwertun,
это переменная
Цитата Сообщение от Goodwin98 Посмотреть сообщение
где fsttmp - переменная типа word.
0
26.10.2013, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2013, 19:20

Сопроцессор. Округление до нужного знака
Необходимо округлить число до нужного знака в сопроцессоре(в данном случае до...

Деление вещественных чисел в сопроцессоре
Задание: Составить и отладить программу на ассемблере для нахождения результата...

Округление чисел
Здравствуйте. Реализую метод, где необходима проверка является ли число целым....


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

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

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