Формат языка ассемблера

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

Большинство программ на языке ассемблера вводятся в ЭВМ с помощью перфокарт. Как мы уже знаем, перфокарта разделена на 80 колонок, в каждой из которых кодируется определенный символ (колонка может быть и пустой). На каждой карте обычно перфорируется одно предложение языка, хотя существуют средства продолжения длинных предложений за пределы одной карты.

Перфорируемые программы предварительно записываются на специальных бланках. Пример приведен на рис. 3.4. Бланк распределен на 80 столбцов, отвечающих 80 колонкам перфокарты. Каждая строка бланка соответствует одной карте. При подготовке программ к перфорации программист записывает предложения на бланке так, как он хочет, чтобы они были набиты на картах; каждый символ в своем столбце и в той последовательности, в которой они расположены в программе.

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

имя операция операнды комментарий

 

Рис. 3.4.

Поля отделяются друг от друга по крайней мере одним пробелом (пустой колонкой).

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

Имя может содержать от одного до восьми символов, первый из которых должен быть буквой (А — Z) или одним из специальных символов $, #,@. Следующие символы могут быть выбраны произвольно из множества букв алфавита, цифр от 0 до 9 и указанных специальных символов. Так, сочетания ABCDE, Z10239,и$$$@# и I могут использоваться в качестве имен, а 1АВ, ELEPHANTS, NUMBER1 и 1— нет. Если поле имени используется, то первый символ имени должен находиться в первом столбце бланка, в противном случае первый столбец должен быть оставлен пустым.

Существует только одно исключение из приведенного правила. Если первый столбец содержит символ * (звездочка), то все предложение рассматривается как комментарий и не анализируется транслятором с языка ассемблера. Если поле имени используется, то после него следует по крайней мере один пробел. Затем следует поле операции, обычно содержащее мнемонику кода некоторой машинной операции, например MVC, А или ST. Мнемоническое обозначение не должно содержать внутри себя пробелов. Поле операции должно по крайней мере одним пробелом отделяться от следующего поля, поля операндов.

Как мы уже отмечали, операндами обычно являются адреса регистров или ячеек памяти, определяемые числовыми значениями или символическими именами этих адресов. Если для представления адреса используется символическое имя, то оно, очевидно, должно появиться в поле имени некоторого предложения программы. Если указанная в пале операции машинная команда требует более одного операнда, то они указываются в обычной последовательности и отделяются друг от друга запятыми. Например, если в поле операндов указано 3,12,ADDR1 то число 3 (вероятно, ссылка на третий регистр) будет первым операндом, число 12 (вероятно, регистр 12) — вторым, а символическое имя ADDR1 —третьим. Поле операндов, за исключением некоторых специальных случав, не должно содержать пробелов.

Поля операции и операндов — обязательные в языке ассемблера. Поле имени является необязательным, но имеет для ассемблера определенное значение в случае своего использования. Четвертое поле, поле комментария, также является необязательным и используется исключительно для удобства программистов. После по крайней мере одного пробела за полем операндов программист имеет возможность указать все, что ему угодно. Ограничений на использование каких-либо символов, за исключением тех, которые могут быть отперфорированы, нет. Поле комментария продолжается до 71 столбца. Иначе говоря, программа-ассемблер игнорирует всю информацию, содержащуюся между концом поля операндов и 71 столбцом.

 

Рис. 3.5.

При обработке предложения языка ассемблера программа-ассемблер первым делом проверяет наличие звездочки в первом столбце. Если звездочка есть, то выполняется переход к обработке следующего предложения. Если столбец 1 — не звездочка и не пуст, то ассемблер рассматривает совокупность следующих символов до пробела в качестве имени обрабатываемого предложения. Следующая группа символов, опять до пробела,— поле операции. Следующая — поле операндов. Другими словами, пробел используется в качестве разделителя полей в команде.

В некоторых случаях предложение бывает слишком длинно для записи его на. одной карте. Для продолжения предложения на следующую карту необходимо всего лишь поставить какой-либо символ, кроме пробела, в 72 позицию бланка и продолжить предложение, начиная с 16 позиции следующей карты.

На рис. 3.5 приведен пример записи предложений языка ассемблера на бланке.

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

Колонка

Поле

1

Имени

10

Операции

16

Операндов

30

Комментария

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

Расскажи друзьям
 
Статьи раздела