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

Косвенное адресование

Cтраница 2


К первой ячейке подпрограммы обращаются косвенно по команде БП при выходе из подпрограммы. Таким образом, для того чтобы участок программы превратить в подпрограмму, необходимо одну ячейку перед началом этого участка выделить для адреса возврата ( адрес этой ячейки будет в дальнейшем - являться адресом подпрограммы), а в конце участка добавить команду БП е косвенным адресованием по начальному адресу.  [16]

Вариантов всего два: использовать в адресной части команды СЛ прямое или косвенное адресование. При косвенном адресовании та же команда обращается в некоторую ячейку памяти лишь за адресом, по которому расположены данные: меняя содержимое этой ячейки в блоке переадресации, можно использовать все новые данные, расположенные в соседних ячейках.  [17]

Специальный прием приходится также применять, если подпрограмма переходит на следующую страницу МОЗУ. При этом адрес возврата в основную программу остается ( вместе с началом подпрограммы) на предыдущей странице - известен лишь адрес ячейки ( начальный адрес подпрограммы), где нужный адрес записан. Как и в предыдущем случае, должно быть организовано двойное косвенное адресование - теперь перед выходом из подпрограммы. Вначале в дополнительную рабочую ячейку с косвенным обращением по начальному адресу подпрограммы с предыдущей страницы ДЮЗУ вызывается ( переписывается) адрес возврата в основную программу, а затем уже осуществляется выход из подпрограммы по команд.  [18]

Определенную специфику в программирование в кодах Электроники-100 вносит страничная организация памяти. В иных случаях для перехода со страницы на страницу, для использования массива данных, расположенных на других страницах, для обращения к подпрограммам и в ряде других случаев используют косвенное адресование и особенности нулевой страницы - возможность непосредственного адресования к ней ( и прямого, и косвенного) из любого места МОЗУ. При этом наиболее общий прием разбиения программы на отдельные, по возможности минимально связанные, блоки приобретает дополнительный смысл экономии памяти.  [19]

Наконец, для передачи исходных данных в подпрограмму вместе с НР ( СМ) может употребляться и дополнительная ячейка памяти, следующая непосредственно за командой обращения к подпрограмме. Так как адрес этой яч йки автоматически заносится в первую-ячейку поля подпрограммы ( для обычного использования в качестве адреса возврата в основную программу), подпрограмма сразу получает в свое поле адрес расположения дополнительных исходных данных. Для того чтобы возвратиться к продолжению основной программы ( обойдя ячейку с дополнительными данными), содержи - - Мое первой ячейки поля подпрограммы в конце ее работы увеличивают на единицу ( по команде УП), а затем осуществляют обычный выход из подпрограммы по команде БП с косвенным адресованием к этой ячейке. Таким образом, в рассматриваемом случае первая ячейка поля подпрограммы используется дважды: вначале для хранения адреса дополнительных данных, а затем для формирования адреса возврата и возвращения в основную программу.  [20]

Ячейки памяти е номерами 00108 - 00178 в Электронике-100 являются индексными. Имеется определенная специфика их использования. При прямом адресовании эти ячейки работают как обычные ячейки памяти. При каждом косвенном адресовании к индексной ячейке ее содержимое вначале увеличивается на единицу, а затем используется в качестве адреса. Такие свойства индексных ячеек позволяют строить эффективные циклические программы ( см. гл.  [21]

22 Структурная схема организации однократной работы участка ( ячейка 0050 отведена под признак. [22]

В некоторых случаях возникает необходимость добавить несколько команд ( поставить заплату) в середине отлаживаемой программы, когда уже исчерпан весь резерв ячеек МОЗУ вблизи требуемого места. Тогда, заменяя командой БП или ОП последнюю команду перед заплатой. БП или ОП) команду основной программы, а затем размещают вновь добавляемые команды, завершая всю цепочку командой БП на продолжение основной программы. Если заплата не может быть размещена на текущей или нулевой странице, приходится портить две ячейки основной программы, занимая одну из них командой БП с косвенным адресованием, а другую ( обычно следующую) - начальным адресом заплаты, и усложнять программу самой заплаты за счет косвенного адресования, если ояа содержит команды обращения к памяти.  [23]

Эффективность программы резко повышается, если вычисления удается организовать в виде двойных ( многократных) циклов. В этом случае весь внутренний цикл, вместе с блоками подготовки и окончания цикла, входит в тело внешнего цикла. Часть ячеек, где ранее хранились константы внутреннего цикла, используются в качестве рабочих ячеек внешнего цикла. При подготовке внешнего цикла в них заносятся начальные адреса таблиц, в которые помещены сведения о местоположении нужных данных, а при подготовке внутреннего цикла к этим ячейкам происходит теперь косвенное адресование.  [24]

В некоторых случаях возникает необходимость добавить несколько команд ( поставить заплату) в середине отлаживаемой программы, когда уже исчерпан весь резерв ячеек МОЗУ вблизи требуемого места. Тогда, заменяя командой БП или ОП последнюю команду перед заплатой. БП или ОП) команду основной программы, а затем размещают вновь добавляемые команды, завершая всю цепочку командой БП на продолжение основной программы. Если заплата не может быть размещена на текущей или нулевой странице, приходится портить две ячейки основной программы, занимая одну из них командой БП с косвенным адресованием, а другую ( обычно следующую) - начальным адресом заплаты, и усложнять программу самой заплаты за счет косвенного адресования, если ояа содержит команды обращения к памяти.  [25]



Страницы:      1    2