Перевод чисел в ASCII-коды
Для перевода чисел в их 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