Ввод целых десятичных чисел из диапазона 0..999 999 999 999 999 999
Второй способ преобразования десятичных чисел хотя и выглядит несколько экзотически, вполне работоспособен. Данный способ предполагает использование особенностей некоторых команд сопроцессора. В материале урока 19 «Архитектура и программирование сопроцессора» учебника мы перечисляли форматы данных, которые поддерживает сопроцессор. Перечислим их еще раз:
Для нас интерес представляют форматы целых двоичных и упакованных десятичных (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 ;поле для результата - эквивалентного двоичного представления
--------вводим с экрана----------------............-----