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

Команда - вызов - подпрограмма

Cтраница 4


Команды JP и CALL задают единственный операнд, которым должно быть слово, записанное в памяти, а не непосредственный операнд или содержимое регистра. Полагая, что слово представляет собой команду, команда JP позволяет осуществить переход к этой команде. Для этого значение счетчика команд устанавливается равным адресу этого слова. Команда CALL является командой вызова подпрограммы, идентичной команде JSR, и служит для записи адреса возврата в стек и последующего перехода к подпрограмме.  [46]

Что касается первых двух вопросов, то почти во всех ЭВМ есть специальные команды для запоминания текущего содержимого PC, называемого адресом возврата, и перехода затем к точке входа ( начальному адресу) подпрограммы. Адрес возврата обычно включается в стек, а переход выполняется так же, как и другие переходы. В ЭВМ, не имеющих стека, адрес возврата обычно запоминается в специальном регистре. В некоторых ЭВМ есть команды условных и безусловных вызовов подпрограмм.  [47]

Загрузка базового адреса в базовый регистр обычно делается из самого программного модуля. Так как в процессоре выборка команд происходит по содержимому счетчика команд, то яосле получения программным модулем управления на счетчике команд будет адрес первой команды модуля. Этот адрес и может быть использован как базовый. Загрузку базового адреса удобно делать с помощью команды вызова подпрограммы, запоминающей содержимое счетчика команд в одном из регистров процессора.  [48]

Такая ситуация была проиллюстрирована выше на рис. 10.6. При выполнении второй команды вызова подпрограммы текущее содержимое счетчика команд помещается в стек. Текущее содержимое счетчика команд представляет собой в данном случае адрес одной из команд первой подпрограммы. Эти 2 байт размещаются в двух областях стека, следующих за теми областями, в которых хранится текущее содержимое счетчика команд главной программы. Теперь в счетчик команд загружается из второго и третьего байтов команды вызова подпрограммы начальный адрес второй подпрограммы, и начинается выполнение подпрограммы второго уровня вложения.  [49]

Такой способ организации оказывается веевма эффективным, но если какая-то последовательность команд часто повторяется, то доступная для работы пймять быстро исчерпывается. С введением команд, которые могут модифицировать счетчик команд, появляется возможность прерывать линейную последовательность выполнения программы и передавать управление в любое другое место программы. Такими командами, автоматически изменяющими последовательность выполнения программы путем передачи управления в другое место программы, являются команды безусловных переходов, команды условных переходов и команды вызова подпрограмм. Один или два байта, следующие в программе за командой перехода, используются микро - ЭВМ для замены содержимого счетчика команд и представляют собой адрес в памяти новой последовательности команд.  [50]

При организации работы с подпрограммами для сохранения адреса возврата используется стек. Команды вызова подпрограмм CALL адрес работают следующим образом. Когда процессор считывает из памяти команду вызова подпрограммы, программный счетчик увеличивается и показывает на команду, следующую за командой вызова подпрограммы. С этой команды выполнение программы должно продолжиться после окончания работы подпрограммы. Таким образом, программный счетчик после выборки команды вызова подпрограммы содержит адрес возврата. При выполнении обращения к подпрограмме процессор сохраняет содержимое программного счетчика в стеке. Адрес, с которого начинается подпрограмма, вычисляется процессором по адресному полю команды вызова подпрограммы и помещается в программный счетчик. Процессор приступает к выполнению подпрограммы.  [51]

Каждый раз, когда в стек помещается 1 байт информации, осуществляется отрицательное приращение указателя стека. Стек заполняется в направлении убывания значений адресов памяти. Итак, при вызове подпрограммы текущее содержимое счетчика команд запоминается в стеке. Затем в счетчик команд загружается адрес области памяти, с которой должно начаться выполнение подпрограммы. Этот адрес берется из второго и третьего байтов команды вызова подпрограммы.  [52]

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

Возврат к исходной точке программы или подпрограммы осуществляется с помощью одной команды, которая находится в конце вложенной подпрограммы. Эта команда называется ВОЗВРАТ ИЗ ПОДПРОГРАММЫ и описана ниже. Рассматриваемый здесь микропроцессор снабжен лишь простой командой ВОЗВРАТ ИЗ ПОДПРОГРАММЫ, однако нередко микропроцессоры располагают различными командами возврата по выполнении некоторого условия. Команды ВЫЗОВ ПОДПРОГРАММЫ нашего гипотетического микропроцессора имеют длину 3 байт и реализуются за пять микроциклов. Во всех этих командах используется прямая адресация, тогда как в других, более сложных типах микропроцессоров в командах вызова подпрограмм применяются другие виды адресации.  [54]

При организации работы с подпрограммами для сохранения адреса возврата используется стек. Команды вызова подпрограмм CALL адрес работают следующим образом. Когда процессор считывает из памяти команду вызова подпрограммы, программный счетчик увеличивается и показывает на команду, следующую за командой вызова подпрограммы. С этой команды выполнение программы должно продолжиться после окончания работы подпрограммы. Таким образом, программный счетчик после выборки команды вызова подпрограммы содержит адрес возврата. При выполнении обращения к подпрограмме процессор сохраняет содержимое программного счетчика в стеке. Адрес, с которого начинается подпрограмма, вычисляется процессором по адресному полю команды вызова подпрограммы и помещается в программный счетчик. Процессор приступает к выполнению подпрограммы.  [55]



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