![]() |
|
![]() ![]() ![]() |
|
Belij |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 19.12.2003 Репутация: нет Всего: нет |
![]() Помогите плиз, кто может с задачкой!Все книжки перерыл-нигде не нашел. Как вычислить сумму двух чисел типа real (6 байт) ![]() Может у кого есть примерчики, вышлите на мыло!Буду благодарен! P.S. одна оговорка-использование компилятора TASM! Это сообщение отредактировал(а) Belij - 19.12.2003, 09:44 |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Сопроцессор можно использовать ?
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
Belij |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 19.12.2003 Репутация: нет Всего: нет |
если бы....=((( хотя может и нужно!я точно не знаю..
![]() вообще эта фишка нужна в кодельнике,пищущемуся на паскале или дельфе, а там асмовская вставка с суммированием.... Это сообщение отредактировал(а) Belij - 19.12.2003, 13:36 |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Так это две большие разницы !!!
Проще всего (если это без сопроцессора) написать на turbo pas код, использующий сложения чисел типа real (кажется, они 6 байт ? или double ?), но важно указать ключ {$E+} - использовать библиотеку эмуляции сопроцессора. Тогда при написании: var x,y,z: real; z:=x+y; Компиллятор в этом месте сделает вызов кода из библиотеки. Надо в отладчике войти в этот вызов и скоприровать этот код ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
Belij |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 19.12.2003 Репутация: нет Всего: нет |
дык а прокатит?
ведь придется все это во встроенный пихать.. Это сообщение отредактировал(а) Belij - 19.12.2003, 20:26 |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Тут главное - алгоритм вытянуть.
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
Belij |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 19.12.2003 Репутация: нет Всего: нет |
я уточнил условие поставленной задачи..и..оказывается сопроцессор использовать даже НУЖНО!!!
=( как быть в этом случае! и спасибо за идею с отладчиком. |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Ну тогда все проще.
Сопроцессор поддерживает САМ числа с плавающей запятой. Например:
Как видно, программист здесь не сном ни духом не ведает. как и из чего сделаны числа с плавающей запятой. Компиллятор за него создал инициализированные данные (x,y). Проблемы начинаются тогда, когда пытаешься, к примеру, сделать вывод таких чисел на экран (на ассемблере). Как сделать это, если не знаешь формата ? Но такие проблемы решить можно, если, к примеру, использовать последовательное деление на 10. Я ее решал - если интересно, см. мою статью на wasm.ru. Если же операции делать на ассмблере (на вставках в код паскаля или дельфи), а вывод - с помощью функций языка высокого уровня, то проблем быть не должно. Однако. Я не уверен, что сопроцессор поддерживает 6-ти байтные числа с плавающей запятой. Он ТОЧНО поддерживает 4-х и 8-ми байтные числа. Возможно, 6-ти байтные - это рудимент старого паскаля, про который я уже упоминал - эпоха 286 или 486 SX. Если так и есть, то вполне вероятно, что 6-ти байтные числа - это тот же формат, что и у обычных, 4-х или 8-ми байтных, только с другой мантиссой. Ведь real-число состоит примерно так: Знак (старший бит); Экспонента = старшая степень двойки и еще (кажется) +126 - 7 или 8 бит после старшего; Мантисса - коэффициенты разложения числа по степеням двойки. Например: 0.625 = 1/2 + 1/8 = 2^(-1) * ( 1 + 0*2^(-1) + 1*2^(-2) ). Экспонента = -1 Подробнее см. в книге Зубкова С.В. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |