Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 12

Unknown Author

Рассказ про арифметические сопроцессоры - это большая самостоятельная тема, которой мы не будем касаться в данной книге. Поэтому в дальнейшем мы не будем рассматривать вещественные числа и связанные с ними команды ПК и средства языка ассемблера (например, директивы DQ и DT).

1.3.4. Представление символьных данных

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

В ЭВМ, кщ правило, используются 8-разрядные коды символов. Это позволяет закодировать 256 различных символов, чего вполне достаточно для представления многих символов, используемых на практике. Поэтому для кода символа достаточно выделить в памяти один байт. Так и делают: каждый символ представляется своим кодом, который записывают в один байт памяти.

В ПК обычно используется система кодировки ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена инфор-

мании). Конечно, в ней не предусмотрены коды для букв русского алфавита, поэтому в нашей стране используются варианты этой системы кодировки, в которые включают буквы русского алфавита. Чаще всего, пожалуй, используется вариант, известный под названием "Альтернативная кодировка ГОСТ". Мы не будем приводить эти системы кодировки, а отметим лишь следующие их особенности, которые важно знать при работе с символьными данными.

•    Код пробела меньше кода любой буквы и цифры и вообще меньше кода любого графически представимого символа.

•    Коды цифр упорядочены по возрастанию и идут без пропусков. Поэтому из неравенств код(’О’) <= код(с) <= код(’9’) следует, что с - цифра, и поэтому справедливо равенство код(0=код(’0,)+1, где i - число от 0 до 9. Отметим также, что код(’О’) о 0.

•    Коды больших латинских букв упорядочены согласно алфавиту и также идут без пропусков. Поэтому из неравенств код('А’) <= код(с) <= код('2') следует, что с - большая латинская цифра, и поэтому код i-й по порядку (при нумерации с 0) буквы латинского алфавита равен сумме код('А')+ъ

•    Все то же самое верно и для малых латинских букв.

•    В альтернативной кодировке ГОСТ коды русских букв (больших и малых) упорядочены согласно алфавиту7, но если коды больших букв идут без пропусков, то между кодами малых букв ’п’ и тр* вклиниваются коды иных символов.