Читать «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 и т. п.) и т. п. Все остальные идентификаторы называются именами, программист может пользоваться ими по своему усмотрению, обозначая ими переменные, метки и другие объекты программы.