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

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

Cтраница 3


Если в программе встречаются одинаковые последовательности команд, то для того чтобы не записывать такие последовательности по нескольку раз в памяти, их выделяют в подпрограммы. Переход от выполнения программы к выполнению подпрограммы производится с помощью команды вызова подпрограмм. Команды вызова подпрограмм и возврата из подпрограмм, как и команды переходов, бывают безусловными и условными.  [31]

Область сохранения различными компиляторами организуется по-разному. Например, компилятор языка PL / I формирует в объектном модуле команды вызова подпрограмм, которые будут резервировать область сохранения при исполнении загрузочного модуля, а компилятор ФОРТРАН организует область сохранения непосредственно внутри вызывающего объектного модуля.  [32]

Процедура описывается в начале программного сегмента и ее действие состоит в том, что она увеличивает содержимое регистра СХ на два. Далее, в теле программы, процедура дважды вызывается с помощью команды CALL вызова подпрограммы.  [33]

Мы можем производить загрузку этого регистра, записывать его содержимое в память, осуществлять положительное или отрицательное приращение, а также сравнивать с другой 16-разрядной величиной. Регистр SP всегда указывает на верхушку стека адресов возврата, используемых командами вызова подпрограмм и возврата в исходную программу. Команда LDS может использоваться для начальной установки указателя стека SP в начале программы.  [34]

Содержимое областей с адресами OF25 и OF24 равно адресу области главной программы. Этот адрес является адресом команды, следующей в главной программе за командой вызова подпрограммы. Области памяти с адресами OF25 и OF24 содержат соответственно младший и старший байты счетчика команд.  [35]

Каждая подпрограмма должна содержать хотя бы одну команду возврата RET, которая возвращает управление программе, осуществившей вызов. Такая передача управления осуществляется путем извлечения из стека адреса возврата, включенного в него командой вызова подпрограммы. Поэтому команды возврата не содержат никакой адресной информации и неявно адресуют вершину стека. Тип команды возврата ( внутрисегментный NEAR или межсегментный FAR) выбирается в соответствии с типом команды CALL, осуществившей вызов данной подпрограммы.  [36]

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

38 Модификация программы, приведенной на, после замены множества команд, предназначенных для отрицательного приращения и проверки значения счетчика, на команды вызова подпрограмм. [38]

На рис. 10.10 приведена модификация программы, представленной ранее на рис. 8.24. Модифицированная часть программы предназначена для отрицательного приращения содержимого счетчика. В данном случае она составлена таким образом, чтобы вместо множества команд, служащих для отрицательного приращения и проверки содержимого счетчика, использовать команды вызова подпрограмм.  [39]

Если в программе встречаются одинаковые последовательности команд, то для того чтобы не записывать такие последовательности по нескольку раз в памяти, их выделяют в подпрограммы. Переход от выполнения программы к выполнению подпрограммы производится с помощью команды вызова подпрограмм. Команды вызова подпрограмм и возврата из подпрограмм, как и команды переходов, бывают безусловными и условными.  [40]

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

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

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

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

Предположим, что разработана короткая программа умножения двух чисел тройного формата. Такая программа может иметь длину от 30 до 50 байт. С помощью команд вызова подпрограмм можно использовать ее сколько угодно раз.  [45]



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