Свойства оператора
Оператор CSECT определяет начало или продолжение программной секции. Оператором CSECT можно определять и начало первой секции в модуле, но в этом случае начальное значение счетчика адреса всегда равно нулю.
Отметим некоторые свойства оператора ORG, которые не были рассмотрены в 3.5- В поле операндов оператора ORG записывается простое переместимое выражение. В этом выражении неспаренное переместимое имя должно быть определено в той же программной секции, в которой появился оператор ORG. Например, в приведенном модуле оператор ORG используется в секции СЕК1. Переместимое имя NAME определяется в этой же секции. Оператор ORG уменьшает значение счетчика адреса. Необходимо следить за тем, чтобы значение NAME-50 не оказалось меньше начального адреса программной секции СЕК1, так как в этом случае оператор ORG будет ошибочным. По оператору ORG, операнд которого опущен, счетчику адреса присваивается значение, которое равно адресу байта, следующего за последним байтом, использованным данной секцией к моменту обработки оператора ORG без операнда. В исходном модуле особое место занимает первая программная секция в модуле. Она имеет следующие свойства:
Начальное значение ее счетчика адреса можно определить оператором START;
Она содержит литералы, которые записаны между последним оператором LTORG и оператором END, или все литералы, если в исходном модуле вообще отсутствуют операторы LTORG.
В приведенном модуле для первой программной секции определяется начальный адрес Х’1000’. Если в этом модуле используются литералы и нет операторов LTORG, то они будут размещены транслятором после всех операторов секции СЕК, а только после литералов будут располагаться операторы секции СЕК1.
Простое имя, если оно записано в поле названия, является переместимым именем, значение которого равно 0, характеристика длины этого имени равна 1. Неименованный оператор DSECT указывает начало или продолжение неименованной области.
Оператор DSECT определяет начало или продолжение фиктивной области. Если в модуле встречается несколько операторов DSECT с одним именем, то первый из них определяет начало фиктивной области, а остальные определяют ее продолжение.
Операторы, следующие за оператором DSECT, относятся к фиктивной области. Появление операторов CSECT, СОМ или DSECT с другим именем обозначает конец фиктивной области.
Структура области памяти, которая представлена в данном модуле в виде фиктивной области, описывается с помощью обычных операторов ассемблера, которые следуют за оператором DSECT и могут иметь имена. Для каждой фиктивной области ведется счетчик адреса. Начальное значение счетчика адреса для фиктивной области всегда равно нулю, а затем увеличивается каждый раз на длину оператора, принадлежащего фиктивной области. Счетчик адреса фиктивной области используется транслятором для определения значений имен из фиктивной области.