Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод вещественного числа 
:(
    Опции темы
Fant87
Дата 13.10.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.2.2010

Репутация: нет
Всего: нет



Здравствуйте. Помогите пожалуйста с выводом вещественного числа на экран (число всё равно где хранить, хоть в регистре, хоть в вершине стека FPU).
Я пролистал много похожих тем, там либо нет ответа, либо написаны такие функции, которые при компиляции TASM 5.0 не работают, а выдают много ошибок, пытаясь исправить ошибки я не только больше запутывался, так еще и после этого ничего не работало. Если есть у кого рабочий исходник, поделитесь пожалуйста. Может я что-то не объявляю, для компиляции тех кодов, поэтому приведу пример, как нас учат писать:
Код

IDEAL
model  small
stack 256
dataseg
a dd -5.0
b dd 5.0
z dd 0.5
steps dw 0
codeseg
 
start:
     mov ax,@data
     mov ds,ax

     MOV  AH,0      ;номер функции установки режима дисплея
     MOV  AL,2      ;код режима 80*25 черно-белого
     INT  10H       ;очистка экрана
     finit
     fld   [b]
     fld   [a]
     fsub  
     fdiv  [z]         ;количество шагов табулляции = (b-a)/z
     fistp [steps]
     
     mov cx,[steps]
     fld [a]
     for:
         ;(x^2 + x)     
         fst st(1)
         fst st(2)
         fst st(3)
         fst st(4)
         fmul
       fadd
     
         ;|x - 1|
         fxch st(1)
         fld1
         fsub 
         fabs
     
         ;(x^2 + x)/|x - 1|
         fdiv
     
         fistp [steps]
         fadd [z]
     loop for
     Exit:
          mov ah,10h
          int 16h
          mov ah,04Ch
          int 21h
end start
 
Здесь значение, которое необходимо вывести, я переносил в память, но вместо fistp [steps] должен быть вывод этого числа.
PM MAIL   Вверх
Logree
Дата 13.10.2010, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



если я не ошибаюсь то в FPU есть стандартная функция которая переводит число с плавающей точкой в двоично-десятичный вид.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
ksili
Дата 13.10.2010, 05:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Logree, я тоже могу ошибаться, но там кажется была функция для перевода целого числа в двоично-десятичный вид.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Mikl_
Дата 13.10.2010, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



ошибаетесь ksili smile 
можно загрузить вещественное --> получить целое
можно загрузить целое --> получить вещественное
можно загрузить вещественное --> получить двоично-десятичное
можно загрузить двоично-десятичное --> получить вещественное
можно загрузить двоично-десятичное -->получить целое
можно загрузить целое --> получить двоично-десятичное


PM MAIL   Вверх
ksili
Дата 13.10.2010, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Mikl_, круто. Я не знал, что в BCD можно задавать десятичную точку. 
Как при преобразовании вещественного в BCD решаются вопросы точности/округления? У BCD-числа же длина ограничена?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Mikl_
Дата 13.10.2010, 10:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



ksili
в BCD-будет преобразована целая часть с указанным режимом округления,
лично я пользуюсь массштабированием и целочисленной арифметикой, а по теме в пакете masm32 в папке m32lib есть atofp.asm (Convert a string containing an ASCII representation of a floating point value to an 8-byte double precision number.  Returns a pointer to the first character it couldn't convert.) fptoa.asm (Convert an 8-byte double-precision value to an ASCII string) и т.п. велосипед уже давно изобретен smile 

Это сообщение отредактировал(а) Mikl_ - 13.10.2010, 10:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.