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

Unknown Author

Программировать на машинном языке сложно. Одна из причин этого - цифровая форма записи команд и данных, для людей более привычны символьные обозначения. И уже давно придумали средство, упрощающее составление машинных программ. Это язык ассемблера (другое название - автокод), представляющий собой фактически символьную форму записи машинного языка: в нем вместо цифровых кодов операций выписывают привычные знаки операций или их словесные названия, вместо адресов - имена, а константы записывают в десятичной системе. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит ее на машинный язык, и далее полученную машинную программу выполняют.

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

Отметим, что для любой ЭВМ можно придумать разные языки ассемблера, хотя бы потому, что можно по-разному обозначать машинные операции. В частности, и для ПК разработано несколько таких языков (ASM-86, MASM, TASM и др.). Мы будет рассматривать язык, который создан фирмой Microsoft и полное название которого - язык макроассемблера, сокращенно - MASM (смысл приставки "макро" будет понятен позже). Этот язык наиболее часто используется на ПК. Отметим также, что имеется несколько версий самого языка MASM; мы будем рассматривать версию 4.0 как наиболее известную и являющуюся базовой для других языков ассемблера. Именно эту версию мы будем понимать в дальнейшем под словами "язык ассемблера" и сокращением ЯА.

При описании синтаксиса ЯА мы будем использовать формулы Бэкуса-Наура (БНФ) со следующими дополнениями: 1

2.1. Лексемы

Изучение ЯА начнем с рассказа о том, как в нем записываются лексемы - такие простейшие конструкции, как имена, числа и строки.

2.1.1.

Идентификаторы

Идентификаторы нужны для обозначения различных объектов программы - переменных, меток, названии операции и т. п.

В ЯА идентификатор - это последовательность из латинских букв (больших и малых), цифр и следующих знаков:

Причем на эту последовательность накладываются следующие ограничения:

•    длина идентификатора может быть любой, но значащими являются только первые 31 символ (идентификаторы, отличающиеся только в 32-й и последующих позициях, считаются одинаковыми);

•    идентификатор не должен начинаться с цифры (7А - ошибка);

•    точка может быть только первым символом идентификатора (.А - можно, А. - нельзя);

•    в идентификаторах одноименные большие и малые буквы считаются эквивалентными (АХ, Ах, аХ и ах - одно и то же);

Особо подчеркнем, что в идентификаторах нельзя использовать буквы русского алфавита.

Идентификаторы делятся на служебные слова и имена. Служебные слова имеют заранее определенный смысл, они используются для. обозначения таких объектов, как регистры (АХ, SI и т. п.), названия команд (ADD, NEG и т. п.) и т. п. Все остальные идентификаторы называются именами, программист может пользоваться ими по своему усмотрению, обозначая ими переменные, метки и другие объекты программы.