|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2010, 09:05 | #1 |
Регистрация: 08.05.2010
Сообщений: 5
|
Распределение Максвелла в TASM
Доброго утра всем. Начинаю писать прогу для построения графика распределения Максвелла по скоростям. Сразу возникает уйма вопросов ибо формула для построения графика очень объемная и сложная. Для начала первый вопрос: скорость молекул изменяется от 0 до 4000 м/c, и по формуле это число нужно возвести в квадрат. В обычный 16 битный регистр это не влезет. Как обойти эту проблему?
|
08.05.2010, 09:49 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Открою вам секрет: давно уже почти все архитектуры дсктопов и системы для них 32 и 64 битны... Соответственно с 32 и 64 битными регистрами. + есть всякие сопроцесоры, MMX, SSE со своими регистрами....
|
08.05.2010, 13:33 | #3 |
Форумчанин
Регистрация: 16.11.2006
Сообщений: 175
|
ну дык регистры то есть и 32 разрядные а туда значит влазиет (2^32)-1 = 4294967295
на крайняк можно заюзать пару DX:AX
чайник юзеру не товарищ, а сам себе враг...
|
08.05.2010, 14:28 | #4 |
Форумчанин
Регистрация: 08.01.2010
Сообщений: 165
|
Подписываюсь под вышенаписанным) Воспользуйтесь 32-битными регистрами или парами 16-битных регистров.
В крайнем случае, воспользуйтесь сопроцессором. |
09.05.2010, 00:24 | #5 |
Регистрация: 08.05.2010
Сообщений: 5
|
спасибо за советы, но теперь непойму как поступить с k = 1,38·10–23 Дж/К – постоянная Больцмана. Каким образом организовать ввод данного числа и так же осуществить вычисления ведь в формуле необходимо 1/(k^3) и извлекать корень. Формула: http://ru.wikipedia.org/wiki/%D0%A0%...BB%D0%BB%D0%B0 формула под номером 11! функция плотности вероятности для модуля скорости.
|
09.05.2010, 00:37 | #6 |
Форумчанин
Регистрация: 08.01.2010
Сообщений: 165
|
Числа двойной точности с плавающей точкой обеспечивают относительную точность около 16 десятичных цифр и масштабы в диапазоне от 10^-308 до примерно 10^308 (источник: wiki)
Тебе должно вполне хватить. Для вычислений с нецелыми числами используй сопроцессор (FPU). Он и результат с приемлемой точностью сохранить сумеет, и корень квадратный извлечь могёт и много чего ещё. Не представляю, как решать без FPU такие задачи... Для ознакомления, как с ним работать, советую почитать книгу Зубкова "Ассемблер для DOS, Windows и Unix, главу 2.4 и далее. (если возникнут трудности где её найти - пиши в личку, пришлю). |
09.05.2010, 14:37 | #7 |
Регистрация: 08.05.2010
Сообщений: 5
|
Книгу почитал, действительно у сопроцессора куча полезных функций, и если я правильно понял то работать будет сопроцессор так как указано в комментах? и на выходе будет число 32?
(до знака "!" значение в ST(0), а после в ST(1)) MOV b, 2 ;ST(0) !ST(1) FILD b ;b ==> ST(0) !- ;b !- PROSCHET_NACHALO: MOV V, 4 FILD V ;V !b FIMUL V ;V*V !b FIST V ;ST(0) ==> V !b где (V=V*V) FMUL ST(0), ST(1) ;b*V*V !b FISTP P ;ST(0) ==> P !b ;P=b*V*V ;b !- FSTP ;- !- убрали значение из стека и ST(0) свободен |
10.05.2010, 13:24 | #8 |
Регистрация: 08.05.2010
Сообщений: 5
|
Еще вопрос: есть ли в TASMe у сопроцессора команда округления значения в регистре ST до целого значения, что б при этом значение оставалось в ST? Либо подскажите как это сделать. И! как работает команда FSCALE у сопроцессора и зачем она нужна
|
10.05.2010, 16:19 | #9 | |||
Форумчанин
Регистрация: 08.01.2010
Сообщений: 165
|
Цитата:
Цитата:
Блин, опять придётся отвечать цитатой из Зубкова. Цитата:
|
|||
10.05.2010, 16:40 | #10 |
Регистрация: 08.05.2010
Сообщений: 5
|
спасибо за твоё терпение и помощь. Информации очень много, все переварить и понять как применить тяжело, и многое пропускается вследствии моей рассеянности.
___________________________________ ________________________________ Умножает ST(0) на два в степени ST(1) и записывает результат в ST(0). Значение ST(1) предварительно округляется в сторону нуля до целого числа. ___________________________________ ________________________________ За это отдельный респект! стало намного понятнее. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TASM дело тонкое!:) (Где в TASM IDE?) | 3.14oner | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 9 | 15.11.2011 16:20 |
пуассоновское распределение | Dafka | Помощь студентам | 0 | 30.03.2010 21:15 |
(BC 3.1) Распределение памяти! | Lawliet32 | Помощь студентам | 8 | 28.12.2009 23:49 |
Распределение памяти | Jeni | Общие вопросы Delphi | 6 | 31.03.2008 19:59 |