Cтраница 3
Если прикладная программа запрашивает выполнение оператора IF, то после возврата управления следует анализировать значение специального поля РОП IFR. Его значение, равное ОООГ, означает, что проверяемое условие истинно, а значение 0000 - проверяемое условие ложно. [31]
На рис. 9.41 показана организация файловой системы с указанием вызовов и возвратов управления, которые могут произойти при обработке запроса. [32]
![]() |
Цепочки вызывающих и вызываемых программ.| Структура области сохранения. [33] |
Основная программа продолжает выполняться до точки Р2, где возникает цепочка передач и возврата управления, аналогичная той, что была в точке Pi. Завершившись, основная программа возвращает управление вызвавшей ее операционной системе. Не исключено, что некоторая подпрограмма А содержит обращение к самой себе - либо непосредственно, либо после некоторой цепочки обращений к другим подпрограммам. Например, подпрограмма А обращается к подпрограмме В, подпрограмма В - к подпрограмме С, а подпрограмма С - снова к подпрограмме А. Подпрограммы, допускающие обращение к себе, называются рекурсивными. Рекурсивные подпрограммы являются эффективным инструментом при реализации многих алгоритмов обработки списков со сложной организацией. Для написания рекурсивных подпрограмм существуют специальные приемы, на которых здесь останавливаться не будем. [34]
![]() |
Пример межпрограммных связей ( Банк-ОС. [35] |
Подпрограмма получает текущее состояние называющей программы и может им пользоваться; вызывающая программа при возврате управления получает от подпрограммы, вообще говоря, новое текущее состояние. [36]
Последовательность команд, используемая для вызова подпрограммы н передачи ей управления, а также для последующего возврата управления вызывающей программе. [37]
Примечания: Когда процедура Exit выполняется в подпрограмме ( процедуре или функции), то происходит возврат управления из подпрограммы. Когда эта процедура выполняется в операторной части программы, она вызывает прекращение работы программы. [38]
Состояние переменных в процессе исполнения программы может меняться, - основной причиной этого является освобождение памяти при возврате управления, что происходит при выходе из подпрограмм. Если хотя бы один элемент массива становится неопределенным, в состоянии неопределенности оказывается весь массив. [39]
Макрокоманда CNTRL прекращает выполнение двух последних функций, если обнаруживает ленточную марку: В этом случае при возврате управления в регистр 15 помещается число блоков, на которое не удалось продвинуться. При нормальном завершении выполнения этих функций в регистр 15 помещается нуль. [40]
Сегмент команд содержит команду CALL ( например, CALL MULU32), а также команду RET, обеспечивающую возврат управления операционной системе DOS. Далее, нередко в нем находятся команды присваивания начальных значений тем регистрам и ячейкам памяти, через которые вызывающая программа рассчитывает получить результат. [41]
Способ обращения к модулю определяется языковыми средствами организации связи по управлению, которое реализуется через активизацию модуля и возврат управления. [42]
Степенью возврата управления будем называть число модулей, размещенных в цепочке активаций между модулями, участвующими в операции возврата управления: возврат управления непосредственному предшественнику имеет степень возврата, равную нулю. [43]
Синхронный интерфейс, предоставляемый iMAX, реализован с буферизацией ввода-вывода; это обеспечивает в типичном случае то, что возврат управления после вызова операций Read или Write для реального устройства ввода-вывода произойдет без ожидания, пока созданное сообщение с запросом ввода-вывода совершит полный цикл прохождения через интерфейс с периферийной подсистемой и обратно. Для понимания этого факта полезна модель, показанная на рис. 7.4 и применимая для ввода или вывода. [44]
Область сохранения создается вызывающей подпрограммой, а вызываемая подпрограмма обеспечивает сохранение в ней содержимого регистров и восстановление их при возврате управления вызвавшей подпрограмме. Если вызываемая подпрограмма, - в свою очередь, тоже вызывает подпрограмму, то и в ней должна быть создана своя область сохранения. Поэтому может быть создано большое число таких областей сохранения. [45]