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

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



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

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

;prg06_07.asm - ввод с консоли десятичного числа из диапазона 0..99
:и обратный его вывод на консоль.

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 символа с клавиатуры, контроль на допустимые значения не делаем

ldsdx.adr_buf

mov ah.Oah

int 21h

хог ах.ах

emp buf .len_in,2 .-сколько чисел введено реально?

jne ml

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

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

add :в AL двоичный эквивалент исходного двузначного десятичного значения ;вывод на консоль содержимого AL

аат

mov dx.ax

or dx.03030h

rol dx.8 :выводим старшую цифру

mov ah,2

int 21h

rol dx.8 :выводим младшую цифру

int 21h

Для преобразования с целью последующего вывода на консоль больших двоичных значений можно использовать два способа: путем деления по модулю 10 (диапазон значений не ограничен) и с помощью сопроцессора (0..1018-1).


Содержание раздела