Вывод числа с фиксированной точкой

Тема в разделе "WASM.BEGINNERS", создана пользователем ABCetc, 2 май 2008.

  1. ABCetc

    ABCetc New Member

    Публикаций:
    0
    Регистрация:
    1 май 2008
    Сообщения:
    9
    Доброго времени суток.
    Подскажите, пожалуйста, как вывести на экран число
    в формате с фиксированной точкой.
    Алгоритмов по выводу чисел с плав. точкой полно, а вот фикированной...

    Идеи, вроде "преобразовать в плавающий формат, а затем вывести
    одним из стандартных алгоритмов" отвергаются как слишком... продвинутые :)

    Формат числа 16.16. Да, кстати, ассемблер ТАСМ 2, использовать .386 низзя.

    Исходник - по желанию. Лучше подробный алгоритм (все равно переделывать буду).

    Все попытки упираются либо в мой идиотизм (по-видимому), либо в неправильное
    кол-во нулей после запятой ... точки... ну, вобщем разделителя.
     
  2. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Посмотри книгу.
    Злобин В. К. Григорьев В. Л.
    Программирование арифметических операций в микропроцессорах: Учеб. пособие дли технических вузов.— М.: Высш. шк., 1991, —303 с: ил.

    Конкретно раздел.
    2.4.5. ПРЕОБРАЗОВАНИЕ ЧИСЕЛ ПО МЕТОДУ СДВИГА И КОРРЕКЦИИ (134 стр.)

    ... В то же время известны способы преобразования, в которых длина программ практически не зависит от разрядности чисел. Эти способы преобразования между двоичными и десятичными числами опираются на метод сдвига и коррекции. Он допускает относительно простую аппаратную реализацию и предполагает наличие двух регистров (регистр 1 и регистр 2), связанных цепями сдвига. В регистре 1 находится исходное число, а в регистре 2 образуется результат преобразования. Одним из регистров является обычный двоичный сдвигающий регистр, а вторым — регистр, рассчитанный на хранение десятичных чисел, но имеющий цепи обычного двоичного сдвига.
    ...
    Деление на 2 десятичного однобайтного числа. Двоичный сдвиг упакованного десятичного числа вправо на один бит дает в i-й тетраде правильный результат, если из младшего бита соседней слева тетрады сдвигается нуль. Когда из старшей тетрады сдвигается 1, она приобретает в i-й тетраде вес 8, а правильный десятичный нес равен 5. Следовательно, в тех тетрадах десятичного регистра, в которых после двоичного сдвига старший бит содержит 1, необходима коррекция, заключающаяся в вычитании из тетрады числа 3.
     
  3. ABCetc

    ABCetc New Member

    Публикаций:
    0
    Регистрация:
    1 май 2008
    Сообщения:
    9
    А-а-а :O... Уже разобрался.
    Указанную цитату не понял (вернее, как ее применить), но...
    Целые-то я выводил не делением, а через FPU (извратился),
    а если б по классике делал, сразу бы понял, что дробную часть
    надо умножать на 10 до посинения.
    Называется, сиди - смотри учебники. Изобрел велосипед... по-новой...

    Спасибо за ответ.