Динамический останов

15-08-2013, 17:40
Просмотров: 1113
Рассмотрим блок-схему, где передача управления осуществляется ячеек в зависимости от значения. Мы приводим четыре варианта программ: два для одноадресной машины ИБМ-650 и два для трехадресной машины МИДАК с использованием и без использования индексных регистров.
Программа для машины ИБМ-650 без использования индексных регистров. Обратите внимание на выполнение команды с нижнего сумматора. Обратите внимание на то, что эта программа не короче программы без использования индексного регистра из-за трудности на данной машине непосредственной засылки в индексный регистр. Те же самые соображения относятся и к программе для машины МИДАК, приводимой ниже. Программа для машины МИДАК с использованием индексного регистра (регистра базы). Использование регистра базы требует выполнения более одной команды, так как не имеется возможности прямой записи числа в этот регистр.

Динамический останов


Возможно программным путем прекратить выполнение программы без останова машины. Это достигается передачей управления на саму команду передачи управления; такой цикл называется «завязанным» - машина продолжает работу в нормальном режиме. Такой останов используется главным образом при работе на машинах, не имеющих в системе команд операции останова. Для рассматриваемых машин динамический останов может быть осуществлен следующими приемами.
При обращении к подпрограмме необходимо:
1. Запомнить адрес следующей ячейки (которая может содержать адрес следующей команды программы или параметр, который должен использоваться подпрограммой).
2. Передать управление на первую ячейку подпрограммы.
На машине ИБМ-650 для запоминания информации ячейке, на которую должно быть передано управление по выполнении подпрограммы, используется второй адрес в «один-плюс-один»-адресной структуре команды.

Источник: delete-it
Автор: Николай Максименко
Опубликовано пользователем: 805 (смотреть все)
Комментарии: