Неявный адрес - Большая Энциклопедия Нефти и Газа, статья, страница 3
Почему-то в каждой несчастной семье один всегда извращенец, а другой - дура. Законы Мерфи (еще...)

Неявный адрес

Cтраница 3


Обработка этого предложения, не породив в объектном модуле ничего, приведет к тому, что в таблице базовых регистров будет отмечено, что общий регистр 11 можно использовать в качестве базового при обработке неявных адресов и что в нем содержится адрес 000004 - значение суммы символического имени BEGIN и двойки.  [31]

При трансляции исходного модуля ( см. рис. 24) Ассемблер думал1, что базовый адрес равен 000004, адрес LE равен 00001 А, адрес STORERS равен 00001С, и на этом основании вычислял смещения при переработке неявных адресов.  [32]

Поскольку при программировании на автокоде явные адреса типа X используются сравнительно редко ( случаи целесообразного их использования будут рассмотрены в последующих главах), пока будем исходить из того, что адреса типа X задаются в виде неявных адресов.  [33]

34 Использование явного адреса. [34]

Программист, составляющий программу на языке Ассемблера, избавляется от необходимости вычислять адреса предложений программы п значений смещения в командах, передающих управление другим командам программы или обращающихся к данным, расположенным в теле программы, как это приходилось делать в 3.1.4 и 3.1.6. Для указания адресов предложений программы он может употреблять их неявные адреса.  [35]

Хг-номер ( имя) регистра, по которому производится индексирование. Запись неявного адреса в виде s2 означает, что второй адрес в команде должен модифицироваться только с целью базирования. Поскольку в случае задания неявного адреса базирование обеспечивается транслятором, то указание регистра, по которому производится базирование, отсутствует.  [36]

Типичная одноадресная ЭВМ, схема УУ которой представлена на рис. 8.2, работает следующим образом. Команда содержит один неявный адрес ( адрес следующей команды, хранимый в счетчике команд С ч К.  [37]

По этой команде строка, расположенная в памяти с адреса sz, пересылается в область памяти, начинающуюся с адреса Si. Если si - неявный адрес, то в качестве длины пересылаемой строки транслятор принимает характеристику длины символического адреса si; если длина, определяемая по такому правилу, программиста не устраивает, он может сам указать нужную ему длину, Для явного задания длины / пересылаемой строки первый адрес в команде записывается в виде А. А - адресное выражение, с помощью которого задается начало области памяти.  [38]

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

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

Однако здесь возникает следующая трудность. Поскольку в команде R: FX используется неявный адрес в виде имени NAME, то необходимо обеспечить его базирование. А поскольку имя NAME принадлежит другому модулю, то его базирование, вообще говоря, не может быть обеспечено с помощью базовых регистров для данного модуля.  [41]

Таким образом, значения смещений, вычисленные Ассемблером и помещенные в текст абсолютного модуля, равны значениям смещений при выполнении абсолютного модуля. Команды, построенные Ассемблером в результате переработки неявных адресов в пары номер регистра - смещение работают в соответствии с замыслом автора исходного модуля.  [42]

Для каждого неявного адреса в программе должен существовать регистр базы. Регистр базы называется доступным, если разность между неявным адресом и значением базы, указанным в операторе USING, не превышает 4095 байтов.  [43]

В исходном модуле может быть несколько предложений USING. Информация, доставляемая операндами каждого предложения USING, используется Ассемблером при переработке неявных адресов, входящих в операнды машинных команд, следующих за данным предложением USING по написанию.  [44]

45 Программа для вычисления z2 х2 н - у2 с использованием явных адресов. [45]



Страницы:      1    2    3    4