Программирование на языке АССЕМБЛЕРА. Мещерякова Э.В. - 6 стр.

UptoLike

Составители: 

6
системой автоматически, загрузку адреса (номера) сегмента данных в регистр
DS следует запрограммировать. Пусть при описании сегмента данных ему при-
своено имя DATSEG . Поскольку непосредственная загрузка сегментного реги-
стра константой не разрешается, процесс косвенной загрузки DS будет таким:
MOV AX, DATSEG
MOV DS, AX
Далее размещается программа, реализующая основной алгоритм зада-
чи, а затем процедуры-подпрограммы, если
они есть.
3.3 Преобразование двоичного кода в код ASCII
Для вывода сообщений на экран дисплея или принтер все двоичнокоди-
рованные числа должны быть преобразованы в ASCII –коды (см Приложение,
с13, а также [3] ).
Процесс преобразования заключается в последовательном делении дво-
ичного числа на 10D и выделении остатков до тех пор, пока частное от деления
не окажется меньше делителя , т.е. десяти. Все остатки и последнее частное об-
разуют двоичные коды десятичных цифр, начиная с младшего разряда. Затем эти
коды преобразуются в формат ASCII вписыванием «3» (0011В) в старшую тет-
раду каждого байта.
Блок-схема описанного алгоритма представлена на рис.3.1.
Как известно, для выполнения операции деления исходное число
(де-
лимое), а затем частное всегда размещается в аккумуляторе (AX), остатокв
регистре DX. Делительконстанта (10D) помещается в один из РОН. Область
памяти для хранения ASCII цифр можно адресовать косвенно через базовый
(BX) или индексные регистры (SI, DI). Причем исходное значение адреса долж-
но указывать на ячейку памяти (ЯП) для младшей цифрыстарший адрес в со
-
ответствии с правилом хранения ASCII символов (старший знак по младшему
адресу) в отличие от принятого способа хранения обычных двоичных кодов
(младший байт по младшему адресу).
Приведенный алгоритм обеспечивает преобразование 16-разрядных
двоичных беззнаковых (положительных ) чисел. Если требуется преобразование
чисел со знаком, предварительно необходимо выявить знак числа. Для отрица-
тельных чисел следует до
преобразования изменить их знак (например, коман-
дой NEG), а после преобразования перед старшей цифрой в цепочку ASCII ко-
дов, сохраняемых в оперативной памяти, вписать знак «-» (код 2DH).
Примеры программной реализации преобразования 16-разрядного дво-
ичного кода в ASCII код и наоборот можно найти в [2, с. 199], [3, с. 218].
                                                                           6
системой автоматически, загрузку адреса (номера) сегмента данных в регистр
DS следует запрограммировать. Пусть при описании сегмента данных ему при-
своено имя DATSEG . Поскольку непосредственная загрузка сегментного реги-
стра константой не разрешается, процесс косвенной загрузки DS будет таким:

        MOV     AX, DATSEG
        MOV     DS, AX

         Далее размещается программа, реализующая основной алгоритм зада-
чи, а затем процедуры-подпрограммы, если они есть.

              3.3 Преобразование двоичного кода в код ASCII

         Для вывода сообщений на экран дисплея или принтер все двоичнокоди-
рованные числа должны быть преобразованы в ASCII –коды (см Приложение,
с13, а также [3] ).
         Процесс преобразования заключается в последовательном делении дво-
ичного числа на 10D и выделении остатков до тех пор, пока частное от деления
не окажется меньше делителя , т.е. десяти. Все остатки и последнее частное об-
разуют двоичные коды десятичных цифр, начиная с младшего разряда. Затем эти
коды преобразуются в формат ASCII вписыванием «3» (0011В) в старшую тет-
раду каждого байта.
         Блок-схема описанного алгоритма представлена на рис.3.1.
         Как известно, для выполнения операции деления исходное число (де-
лимое), а затем частное всегда размещается в аккумуляторе (AX), остаток – в
регистре DX. Делитель – константа (10D) помещается в один из РОН. Область
памяти для хранения ASCII цифр можно адресовать косвенно через базовый
(BX) или индексные регистры (SI, DI). Причем исходное значение адреса долж-
но указывать на ячейку памяти (ЯП) для младшей цифры – старший адрес в со-
ответствии с правилом хранения ASCII символов (старший знак по младшему
адресу) в отличие от принятого способа хранения обычных двоичных кодов
(младший байт по младшему адресу).
         Приведенный алгоритм обеспечивает преобразование 16-разрядных
двоичных беззнаковых (положительных ) чисел. Если требуется преобразование
чисел со знаком, предварительно необходимо выявить знак числа. Для отрица-
тельных чисел следует до преобразования изменить их знак (например, коман-
дой NEG), а после преобразования перед старшей цифрой в цепочку ASCII ко-
дов, сохраняемых в оперативной памяти, вписать знак «-» (код 2DH).
         Примеры программной реализации преобразования 16-разрядного дво-
ичного кода в ASCII код и наоборот можно найти в [2, с. 199], [3, с. 218].