RTN: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Команда '''В/О''' (лат. '''RTN''') «Возврат из подпрограммы или переход на нулевой адрес страницы» с кодом 52 вызывает возврат из подпрограммы.
Команда '''В/О''' (лат. '''RTN''') «Возврат из подпрограммы или переход на нулевой адрес страницы» с кодом 52 вызывает возврат из подпрограммы.


Если команда "В/О" использована вне подпрограммы (адрес в [[стек возврата|стеке возврата]] отсутствует), то происходит безусловный переход на адрес 01 в пределах текущей страницы.  Эта недокументированная особенность широко использовалась в программах для ПМК и была документирована в ЭКВМ.
Если команда "В/О" использована вне подпрограммы (адрес в [[стек возвратов|стеке возвратов]] отсутствует), то происходит безусловный переход на адрес 01 в пределах текущей страницы.  Эта недокументированная особенность широко использовалась в программах для ПМК и была документирована в ЭКВМ.


В [[режим автоматической работы|режиме автоматической работы]] команда "В/О" очищает [[стек возврата]] и сбрасывает содержимое [[счётчик адреса|счетчика адреса]], что эквивалентно переходу на нулевой адрес.  В советских ПМК не существовало документированного способа очистить [[стек возврата]] — с другой стороны, при его переполнении сообщений об ошибке не выдавалось.
В [[режим автоматической работы|режиме автоматической работы]] команда "В/О" очищает [[стек возвратов]] и сбрасывает содержимое [[счётчик адреса|счетчика адреса]], что эквивалентно переходу на нулевой адрес.  В советских ПМК не существовало документированного способа очистить [[стек возвратов]] — с другой стороны, при его переполнении сообщений об ошибке не выдавалось.


== История ==
== История ==

Версия от 11:49, 14 января 2014

Команда В/О (лат. RTN) «Возврат из подпрограммы или переход на нулевой адрес страницы» с кодом 52 вызывает возврат из подпрограммы.

Если команда "В/О" использована вне подпрограммы (адрес в стеке возвратов отсутствует), то происходит безусловный переход на адрес 01 в пределах текущей страницы. Эта недокументированная особенность широко использовалась в программах для ПМК и была документирована в ЭКВМ.

В режиме автоматической работы команда "В/О" очищает стек возвратов и сбрасывает содержимое счетчика адреса, что эквивалентно переходу на нулевой адрес. В советских ПМК не существовало документированного способа очистить стек возвратов — с другой стороны, при его переполнении сообщений об ошибке не выдавалось.

История

Использование шестнадцатеричных адресов в ЭКВМ может привести к переходу на другую страницу памяти программ. Если в исходной программе советских ПМК в адресах 100-104 использовались команды переходов или команда В/О вне подпрограммы, вместо них в ЭКВМ можно использовать команды переходов с расширенным адресом.

Команда В/О штатным образом используется для возврата из подпрограмм. В советских ПМК эта команда часто использовалась в программах для перехода на адрес 01. В ЭКВМ эта возможность документирована, однако при использовании команды В/О вне подпрограммы переход производится на адрес 01 в пределах текущей страницы. При этом возврат из подпрограммы командой В/О в ЭКВМ выполняется корректно - по полному адресу.

В советских ПМК при полном заполнении стека возвратов из подпрограмм, а его глубина составляла всего 5 адресов, команда В/О вне подпрограммы начинала выполнять переход на адреса, зависящие от предыдущего содержимого стека (см. «Школа начинающего программиста. Занятие 26», В.А. Хмелюк, «Наука и Жизнь» №11 - 1989 г.). В ЭКВМ переход в этом случае всегда выполняется по адресу 01 текущей страницы и от предыдущего содержимого стека не зависит. Глубина стека возвратов в ЭКВМ увеличена до 64 адресов, переполнение вызывает сообщение об ошибке.

Ссылки