Cтраница 2
Схема включения стандартной подпрограммы в основную программу. [16] |
Перед обращением к стандартной подпрограмме заготовленная команда возврата на основную программу засылается в ячейку выхода стандартной подпрограммы. Команды возврата на основную программу имеют вид констант и обычно хранятся в ячейках вместе с другими константами. [17]
Команда из ячейки 0700 засылает команду возврата ( 24 0704 0000) в ячейку выхода из стандартной подпрограммы. [18]
Последняя команда подпрограммы - это всегда команда возврата, в которой никакой адрес не содержится. Команда возврата обеспечивает перезапись адреса, хранящегося в стеке [ в данном примере AD ( 16) 3, обратно в счетчик команд. После этого выполнение основной программы может продолжаться с того места, в котором произошло обращение к подпрограмме. [19]
Последней выполняемой командой подпрограммы должна быть команда RTS возврата из подпрограммы в основную программу. [20]
Первый способ состоит в том, что команда возврата включается в состав основной программы. [21]
В ячейке а & 1 стоит упомянутая выше самогасящаяся команда возврата, которая передает управление команде ( а 2) и сама себя стирает. [22]
Каждая подпрограмма должна содержать хотя бы одну команду возврата RET, которая возвращает управление программе, осуществившей вызов. Такая передача управления осуществляется путем извлечения из стека адреса возврата, включенного в него командой вызова подпрограммы. Поэтому команды возврата не содержат никакой адресной информации и неявно адресуют вершину стека. Тип команды возврата ( внутрисегментный NEAR или межсегментный FAR) выбирается в соответствии с типом команды CALL, осуществившей вызов данной подпрограммы. [23]
Окончив свое выполнение, процедура С выйдет на команду возврата, и процедура А продолжит свое выполнение. Вся необходимая для возврата информация находится в стеке, а адрес, опираясь на который можно осуществить этот возврат, находится в регистре F. В самом деле, в следующем слове за MSCW, на которое указывает F, расположено управляющее слово внешней процедуры, а в самом MSCW находится ссылка на MSCW, указывающая состояние стека внешней процедуры. В свою очередь, закончив свое выполнение, процедура А осуществляет возврат в самый внешний блок. Таким же путем производится обращение к процедуре В и от В и С. [24]
В связи с операциями перехода необходимо упомянуть операцию формирования команды возврата, которая заключается в том, что с помощью содержимого счетчика команд строится команда безусловного перехода и переносится в одну из ячеек оперативной памяти. Эта операция относится к виду С - - А. [25]
В связи с операциями перехода необходимо упомянуть операцию формирования команды возврата, которая заключается в том, что с помощью содержимого счетчика команд строится команда безусловного перехода и переносится в одну из ячеек оперативной памяти. Эта операция относится к виду С - - А. [26]
В связи с операциями перехода необходимо упомянуть операцию формирования команды возврата, которая заключается в том, что с помощью содержимого счетчика команд строится команда безусловного перехода и переносится в одну из ячеек оперативной памяти. Эта операция относится к виду С - А. [27]
Последняя, 15-я команда с безусловной передачей управления называется командой возврата. [28]
Подпрограмма обслуживания прерываний, начинающаяся меткой PRINT и заканчивающаяся командой RTI возврата из прерывания, размещается вслед за основной программой. Подпрограмма начинается с проверки байта, на который указывает ячейка COUNT. Если содержимое байта отлично от нуля, оно передается в регистр данных принтера, значение COUNT увеличивается на единицу ( при этом он будет указывать на следующий байт строки текста) и происходит выход из прерывания. [29]
Когда пациент впервые связывается с центральным компьютером, PDP-11 подает команду возврата каретки для сигнализации монитору о снятии с режима тревоги и перехода к ожиданию команды. [30]