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



         

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



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

Для значений из диапазона 0..99 взаимное преобразование между символьной десятичной и двоичной формами может производиться командами умножения и деления двоично-десятичных (BCD-чисел) — ММ и AAD.

:prg06_01.asm - программа ввода с консоли двоичного числа из диапазона 0..99
:в десятичном символьном представлении

;Вход: число в десятичной системе счисления, вводимое в символьном виде с клавиатуры.
;Выход: двоичное число в регистре А1.

buf_Oahstruc

len_bufdb 3 :длина buf_0ah

len_in db 0 действительная длина введенного слова (без учета Odh)

bufjn db 3 dup (20h) :буфер для ввода (с учетом Odh)

ends

.data

bufbuf_0ah<>

adr bufdd buf

.code

;.........

;вводим 2 символа с клавиатуры, контроль на допустимые значения не делаем

Ids dx.adr__buf

nrav ah.Oah

int 21h

xor ax.ax

cmp buf .lenjn.2 ;сколько чисел введено реально?

jneml

mov ah.buf.buf_in ml: mov al,buf.buf_in+l

andax.0f0fh преобразование в неупакованное десятичное представление

aad :в al двоичный эквивалент исходного двузначного десятичного значения

fbld string_pack :помещаем в стек сопроцессора 'fistp string_bin ;и извлекаем эквивалентное двоичное представление в поле string_bin '¦.........

Приведенная программа преобразует любое значение из диапазона 0..1018-!. Интересно отметить количественное значение максимальной двоичной величины, соответствующее верхней границе диапазона, — это +0de0b6b3a763ffffl6. Запомните его, оно пригодится нам при рассмотрении обратного преобразования Для вывода на консоль — из двоичного в десятичное представление. Извлечь значение нужной разрядности можно, если ввести директивой label соответствующие идентификаторы в исходный текст программы (что и сделано в нашем сегменте кода):

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

Если исходное значение выходит за диапазон 0..99, то здесь следует иметь в виду возможность возникновения ситуации, при которой значение вводимого десятичного числа превышает диапазон, допустимый форматами типов целочисленных данных, поддерживаемых, в частности, арифметическими командами микропроцессора. Для Pentium III это 8, 16 и 32 бита. Допустимые диапазоны значений для этих форматов (числа без знака):




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