Cтраница 2
Мы не будем приводить синтаксиса адресных выражений, считая, что они определяются так же, как и простые арифметические выражения в алгоритмических языках, а приведем лишь некоторые примеры адресных выражений. [16]
Разные автокоды допускают различные способы задания адресных выражений и различную степень их сложности. Однако следует иметь в виду, что чаще всего адресные выражения используются с целью уменьшения числа вводимых в употребление имен, так как обилие различных используемых имен затрудняет их подбор, понимание программы и увеличивает вероятность ошибок в ней - например, придания одного и того же имени разным объектам. [17]
Однако мы знаем, что значения адресных выражений полностью определяются будущим распределением памяти. Поэтому, чтобы иметь возможность управлять процессом трансляции при помощи таких отношений, в них необходимо использовать такие величины, значения которых можно было бы определять и изменять в процессе трансляции по усмотрению автора программы. Такие величины называются переменными периода генерации. [18]
В некоторых случаях невозможно определить тип адресного выражения. Например, DEC [ BX ] может быть интерпретировано, не только как декрементировать байт, адресуемый ВХ, но и как декрементировать слово. Такие адресные выражения называются анонимными ссылками. Иногда может возникнуть необходимость в применении некоторого объекта по назначению, отличному от того, которое предписано его типом, например осуществить переход по значению переменной или использовать имя метки в качестве переменной для организации доступа к программному коду, как к обычному элементу данных. Во всех этих ситуациях появляется необходимость в явном определении типа адресного выражения. [19]
Кроме сокращения числа меток, использование адресных выражений в ряде случаев может заметно упростить работу программиста. Если, например, в программе запасается таблица констант, первая из которых помечена меткой СН, а последняя - меткой СК, и в какой-то команде надо указать число байтов в машинной программе, расположенных между метками СН и СК, то подсчет этого числа может оказаться весьма затруднительным для программиста, так как при этом надо учитывать как длину каждой из констант, так и факт их выравнивания на целочисленные границы. Между тем очевидно, что это число байтов равно значению выражения СК-СН, причем оно сохраняет свою силу даже в том случае, если впоследствии между метками СН и СК будут вставлены или удалены какие-либо константы. [20]
Адресными выражениями являются: адресный аргумент, адресное выражение, заключенное в круглые скобки, два адресных выражения, соединенные знаком операции. [21]
При исполнении директивы EQU Ассемблер вычисляет стоящее справа адресное выражение и присваивает его значение метке. [22]
Изменяет атрибут сегмента метки, переменной или адресного выражения. [23]
Возвращает младший байт 16-битового числового значения или адресного выражения. [24]
Каждый из трех адресов в автокодной команде является адресным выражением. Если какой-либо из адресов в команде должен модифицироваться по индексному регистру, а в коде операции этой команды не заданы признаки модификации, что может быть сделано только в случае цифрового кода операции, то вслед за соответствующим адресным выражением записываются последовательно открывающая и закрывающая круглые скобки. [25]
Метки полей общей памяти могут фигурировать и в адресных выражениях. [26]
В элементах списка вывода везде вместо имени может использоваться адресное выражение. [27]
В более общем случае в качестве s может использоваться переместимое адресное выражение общего вида, а в качестве х и / - абсолютное адресное выражение. Например, адрес вида s ( jc) может быть записан как TAB 2 L X ( P 5), если TAB - переместимое, а Р - абсолютное имя. [28]
Если наложить дополнительное ограничение - что все имена, входящие в адресное выражение, через которое определяется имя с помощью операции ЭК. В, должны быть определены раньше - то в ТИ можно было бы сразу заносить соответствующие значения для имен четвертого типа; в противном случае эти значения должны доопределяться в конце первой фазы. [29]
На самом деле в качестве любого элемента явного адреса может использоваться абсолютное адресное выражение общего вида. [30]