Сборник по задачам и примерам Assembler


       

Ввод целых десятичных чисел из



Ввод целых десятичных чисел из диапазона 0..999 999 999 999 999 999

Второй способ преобразования десятичных чисел хотя и выглядит несколько экзотически, вполне работоспособен. Данный способ предполагает использование особенностей некоторых команд сопроцессора. В материале урока 19 «Архитектура и программирование сопроцессора» учебника мы перечисляли форматы данных, которые поддерживает сопроцессор. Перечислим их еще раз:

  • двоичные целые числа в трех форматах — 16, 32 и 64 бита;


  • упакованные целые десятичные (BCD) числа — максимальная длина -18 упакованных десятичных цифр (9 байт);


  • вещественные числа в трех форматах — коротком (32 бита), длинном (64 бита), расширенном (80 бит).


  • Для нас интерес представляют форматы целых двоичных и упакованных десятичных (BCD) чисел, а также команды обмена этими значениями с вершиной сопроцессора. Процесс преобразования десятичного целого числа, вводимого с клавиатуры, показан в программе ниже. Необходимо отметить, что этот способ преобразования позволяет расширить диапазон значений 0..999 999 999 999 999 999.

    :prg06_03.asm - программа ввода целых десятичных чисел из диапазона

    :0..999 999 999 999 999 999 и преобразования их в эквивалентное двоичное представление.

    ;Вход: ввод с клавиатуры числа в десятичной системе счисления

    :в диапазоне значений 0..999 999 999 999 999 999.

    :Выход: двоичное число-результат преобразования в области памяти stnng_bin.

    .data

    db 0 :барьер. если введенное количество цифр нечетно string db 20 dup (0) максимальное исходное число состоит из 18 цифр (20 - с учетом

    Od0ah)

    len_string=$-string adr_string dd string

    string_pack dt 0 :сюда упаковывается исходное значение

    len_string_pack=$-string_pack adr_string_pack dd string_pack результат - двоичное значение различной разрядности:

    string_bin_byte label byte

    string_bin_word label word

    string_bin_word label word

    string_bin_dword label dword

    string_bindq 0 ;поле для результата - эквивалентного двоичного представления

    --------вводим с экрана----------------............-----


    Содержание  Назад  Вперед