Перевод чисел в ASCII-коды

воскресенье, 25 апреля 2010 г. Автор: Vadim

Для перевода чисел в их ASCII-коды даже не обязательно знать сами ASCII-коды, т.е. коды внешнего алфавита МЭВМ. Достаточно подготовить в памяти ЭВМ таблицу цифр, но не заполнять ее самому кодами цифр, а поручить эту работу ассемблеру. Этого можно добиться при помощи директивы

Table DB '0123456789ABCDEF'

По этой директиве ассемблер автоматически поместит, начиная с мнемоадреса Table правильные однобайтные ASCII-коды шестнадцатиричных цифр от 0 до F. Здесь '012..F' - это строковая константа, т.е. последовательность символов, заключенная в апострофы. Строковая константа всегда заменяется при ассемблировании на ее ASCII-код. Таким образом, в памяти ЭВМ по метке Table будет открыта таблица ASCII-кодов цифр. Теперь, чтобы перевести какую-то цифру, например 3, в ее ASCII-код, надо просто заменить эту цифру на соответствующий байт из таблицы (в нашем примере - на 3-й байт).

Для работы с таблицей, т.е. извлечения из нее нужных кодов, обычно используется команда XLAT. Она заменяет значение в регистре AL, рассматриваемое как номер элемента в таблице, на байт из таблицы с этим номером (исходное значение в AL служит индексом таблицы). Сама таблица адресуется регистром BX в сегменте данных DS. Таким образом, действие команды XLAT такое:

XLAT ; AL := m(DS:BX + AL)

Предположим, что необходимо преобразовать цифру 7 в ASCII-код. Получается следующий фрагмент:

MOV BX, OFFSET Table ; Поместить смещение таблицы в BX

MOV AL, 7 ; Загрузить 7 в AL

XLAT ; Считать 7-й элемент из таблицы в AL

Предлагаю ознакомиться с аналогичными статьями:



Ярлыки:

Отправить комментарий