Показаны сообщения с ярлыком ASCII. Показать все сообщения
Показаны сообщения с ярлыком ASCII. Показать все сообщения

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

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

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

Ярлыки:

Коды ASCII для чисел

Автор: Vadim 0 коммент.

Среди функций DOS нет такой, которая выводит числа. Такую операцию, если надо, приходится реализовывать на основе функций вывода текста на экран. Поэтому, чтобы вывести число, надо предварительно преобразовать его цифры в ASCII-коды этих цифр и выводить на экран эти коды, а не само число. Если же выводить число на экран непосредственно, то экран воспримет его не как число, а как последовательность ASCII-символов - каждый байт числа будет воспринят как один ASCII-символ - и выведет на экран эти символы, а не наше число. Например, если вывести на экран байт 61h, то на экране отобразится символ (буква) 'a', а не число (две цифры) 61, поскольку байт 61h (в двоичной нотации - 01100001) - это и есть ASCII-код буквы 'a'. Для того чтобы "высветить" на экране цифры '61', надо вывести на экран сначала ASCII-код цифры '6' - он равен 36h (00110110), а потом - ASCII-код цифры '1' - 11h (00010001). Тогда на экране отобразится нужная запись: 61. Кодирование цифр и букв-шестнадцатиричных цифр показано в таблице.

Таблица. Представление 16-ричных цифр в коде ASCII

-----------------------------------------------------------------

Цифра Код ASCII Цифра Код ASCII

двоичный 16-рич. двоичный 16-рич.

-----------------------------------------------------------------

0 0011 0000 30h 8 0011 1000 38h

1 0011 0001 31h 9 0011 1001 39h

2 0011 0010 32h A 0100 0001 41h

3 0011 0011 33h B 0100 0010 42h

4 0011 0100 34h C 0100 0011 43h

5 0011 0101 35h D 0100 0100 44h

6 0011 0110 36h E 0100 0101 45h

7 0011 0111 37h F 0100 0110 46h

-----------------------------------------------------------------

Ярлыки: