Cтраница 1
Ассемблерные имена, оппсаннные в фиктивной секции, нельзя использовать в адресных постоянных. Это накладывает ограничения на употребление Р, Q, R в качеств операндов некоторых макрокоманд. [1]
Адрес перехода обычно указывается ассемблерным именем, помечающим ту команду программы, переход к которой нужно совершить. Но внутри макроопределения помечать модельные предложения обычным именем опасно: если мы внутри входной программы более одного раза сошлемся на такое макроопределение, один и тот же идентификатор более одного раза появится на поле имени и компилятор с базисного языка отметит ошибку. Для избежания этого в ассортименте макропроцессора имеется системная переменная со стандартным обозначением & SYSNDX. Эта переменная может употребляться в модельных предложениях точно на таких же правах, как параметры макропрототипа. Она автоматически заменяется четырехзначным десятичным числом. [2]
Пере-местимое выражение обычно состоит из ассемблерного имени, к которому могут быть дописаны справа со знаком плюс или минус одно или несколько абсолютных выражений. [3]
Поле имени модельного предложения может быть пробелом, содержать ассемблерное имя, параметр, а также конкатенации ( соединения) параметров с последовательностями букв и цифр и другими параметрами. Правило конкатенации состоит в следующем. Соединение параметра с параметром и присоединение последовательности символов к параметру слева от последнего производится непосредственным объединением их текстов. Если же мы хотим присоединить последовательность букв или цифр ( или других символов в конкатенациях на поле операндов) к параметру справа, между ним и присоединенным текстом нужно поместить точку. [4]
Термом арифметического выражения вне макроопределения может быть ссылка на характеристику длины ассемблерного имени, описанного в собственно программе, а в арифметическом выражении внутри макроопределения - ссылка на характеристику длины параметра макроопределения, замещаемого ассемблерным именем. [5]
Для того чтобы ссылаться на переменные повторно входи-мого модуля с помощью ассемблерных имен, удобно пользоваться фиктивной программной секцией, построенной командой ассемблера DSECT. Пусть, например, в RE используются переменные Р, Q и R, занимающие вместе поле в 800 байтов. [6]
Предположим, что текст длиной 1, начинающийся с байта, адрес которого обозначен ассемблерным именем А, нужно пере-гести на новое место, начинающееся с байта, указанного именем В. Длина текста известна в момент составления программы и буква 1 замещает соответствующее десятичное число. [7]
Системная переменная & SYSECT при обработке каждой макрокоманды ( как внешней, так и внутренней) имеет своим значением ассемблерное имя той программной или фиктивной секции, в которой расположена обрабатываемая макрокоманда. Переменная обычно служит для генерирования команд продолжения текущей секции в тех макроопределениях, которые содержат модельные команды CSECT или DSECT. [8]
Символьное выражение может быть ссылкой на характеристику типа, состоящей из буквы Т, апострофа и следующего за ним ассемблерного имени ( вне макроопределения) или ( внутри макроопределения) обозначения параметра. [9]
Поле имени макропрототипа может быть либо пустым, либо содержать еще один параметр, который обычно служит для перенесения ассемблерного имени с поля имени макрокоманды на ее расширение. [10]
Предполагается, что a, b, с и d - числа типа Е, расположенные в словах А, В, С и D, a fsM и N2 - ассемблерные имена ветвей пгограммы. [11]
Термом арифметического выражения вне макроопределения может быть ссылка на характеристику длины ассемблерного имени, описанного в собственно программе, а в арифметическом выражении внутри макроопределения - ссылка на характеристику длины параметра макроопределения, замещаемого ассемблерным именем. [12]
Часть ESD ( External Symbol Dictionary) - словарь внешних связей модуля. Он содержит ассемблерные имена и указания о расположении всех тех точек модуля, на которые возможны ссылки из других модулей, а также перечень всех имен в других модулях, ссылки на которые содержит данный модуль. [13]
Поле имени макрокоманды может быть занято ассемблерным именем или состоять из пробелов, а поле операции должно содержать название макрокоманды, совпадающее с идентификатором на поле имени макропрототипа в одном из макроопределений. [14]
Первая макрокоманда строит блок управления чтением перфокарт. Ее первый операнд - назначаемое автором программы ассемблерное имя, указывающее на начало этого блока. Второй, необязательный, операнд задает адрес той команды нашей программы, к которой следует перейти, если входная информация исчерпана. Макрокоманда OPENIN должна выполняться только один раз и обязательно до первого исполнения макрокоманды GET. Последняя же может исполняться многократно, перенося каждый раз содержимое очередной перфокарты из читающего устройства машины на 80-байтное поле, адрес начала которого указан во втором операнде GET. При этом каждый из 80 символов, записанных во внешнем коде в колонках перфокарты, переводится во внутренний код. [15]