Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2008, 15:44   #11
forsy
 
Аватар для forsy
 
Регистрация: 16.05.2008
Сообщений: 8
По умолчанию !

Stilet, а почему не правильно считает программа? заместо 45 пишет 4.5
forsy вне форума Ответить с цитированием
Старый 19.05.2008, 15:56   #12
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
И вообще, у меня никогда не работали строки типа:
a dd 25,48
А это потому что я ставил запятую.
вместо ',' надо ставить точку...
До меня только сейчас дошло:
a dd 25,48 - это же объявление массива из двух элементов типа dd равными первый-25, второй 48..
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось B_N; 19.05.2008 в 16:01.
Ulex вне форума Ответить с цитированием
Старый 19.05.2008, 16:09   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А это потому что я ставил запятую.
Ой, чет я на сей раз тоже запятые с точками попутал...
Вот что значит учиться писать в слепую )
Иногда такого понаписывать можно...

Цитата:
почему не правильно считает программа? заместо 45 пишет 4.5
Вот только что проверил:
Цитата:
Turbo Pascal Version 7.1 Copyright (c) 1983,97 Borland International

4.53400000000000E+0001
3.47600000000000E+0001
8.01000000000000E+0001
Все правильно.
I'm learning to live...

Последний раз редактировалось Stilet; 19.05.2008 в 16:16.
Stilet вне форума Ответить с цитированием
Старый 19.05.2008, 22:35   #14
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Цитата:
Сообщение от forsy Посмотреть сообщение
Че та программа неправильно считает, да и цифр много лишних !
Купи калькулятор


Код:
program sum;

var rez,x,y:double;

begin
x:=45.34;
y:=34.76;
asm
fld x
fadd y
fstp rez
end;
writeln;
writeln(x:2:2);
writeln(y:2:2);
writeln(rez:2:2);
readln;
end.
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 20.05.2008, 06:59   #15
forsy
 
Аватар для forsy
 
Регистрация: 16.05.2008
Сообщений: 8
По умолчанию )

Цитата:
Сообщение от airyashov Посмотреть сообщение
Купи калькулятор


Код:
program sum;

var rez,x,y:double;

begin
x:=45.34;
y:=34.76;
asm
fld x
fadd y
fstp rez
end;
writeln;
writeln(x:2:2);
writeln(y:2:2);
writeln(rez:2:2);
readln;
end.
Спасибо большое
А для вычитания также будет?
forsy вне форума Ответить с цитированием
Старый 20.05.2008, 08:01   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да так же за исключением того что fadd заменяется на другую команду, о которой советую читать хелпы в твоем ассемблере.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2010, 22:43   #17
Baby Ice
Новичок
Джуниор
 
Аватар для Baby Ice
 
Регистрация: 20.03.2010
Сообщений: 2
По умолчанию

Здравствуйте!
Помогите пожалуйста!
Мне надо решить задачи по вычислительным машинам,все решила,кроме последних!

Сложить числа с плавающей точкой:
1)100100Е100010+110010Е011101
2)100111Е101101+110100Е011111

Это для меня "тёмный лес"...
Baby Ice вне форума Ответить с цитированием
Старый 20.03.2010, 23:13   #18
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

А эти числа в каком формате?
В принципе это неважно.
fld dword[firstNumberInIEEE754Format]
fadd dword[secondNumberInIEEE754Format]
fstp dword[destinationOperand]

Первая команда грузит в вершину стека FPU(не вдаваясь в подробности, у FPU регистры организованны в стек из них доступны только вершина стека и регистр пониже - st0 и st1 соответственно).
Вторая складывает два числа, то которое в st0(мы его загрузили предыдущей командой) с числом из памяти.
Выгружает число из регистра st0 в память. Dword указывает на то что мы работает с FP32 числами, можно еще указать QWORD и TWORD - это соответственно FP64 и собственный формат FPU (схожий с IEEE754, но там 80-бит используется) Так же эта команда очищает последний элемент стека (т.е. регистры st0). Есть еще команда FST - она делает тоже самое что и FSTP только не очищает st0.
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 20.03.2010 в 23:25.
Ivan_32 вне форума Ответить с цитированием
Старый 22.03.2010, 19:57   #19
Baby Ice
Новичок
Джуниор
 
Аватар для Baby Ice
 
Регистрация: 20.03.2010
Сообщений: 2
По умолчанию

там ничего не дано,только надо как то вычесть значения после Е и уровнять порядки этих чисел
Baby Ice вне форума Ответить с цитированием
Старый 29.03.2010, 02:15   #20
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Если ничего не дано, то нечего и ответить.

Цитата:
1)100100Е100010+110010Е011101
2)100111Е101101+110100Е011111
действительно, интересно в каком формате числа?
смахивает на scientific binary, но нет разделителя. плюс не понятно экспонента смещенная или нет? если смещенная, то точноcть double или single?
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение чисел с плавающей точкой ? Ulex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 12.04.2008 21:14
Преобразование числа с плавающей точкой в строку Sibedir Общие вопросы Delphi 14 09.03.2008 21:48
Числа с плавающей точкой Blondinka Общие вопросы Delphi 8 21.09.2007 11:32