Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx53 / ПЗ (2).docx
Скачиваний:
52
Добавлен:
01.08.2013
Размер:
293.08 Кб
Скачать

5.4 Алгоритм выполнения команд передачи управления

Алгоритмы операций переход выполняются в зависимости от состояния соответствующих флагов (рисунки приложения 4.1 – 4.5) Управление на новый адрес передается путем загрузки программного счетчика либо значением из регистра аккумулятора А для команды формата AS, либо значением из регистра Р для команды формата RR

5.5 Алгоритм вызова подпрограммы

Алгоритм вызова подпрограммы, представленный на рисунке приложения 5.1 реализуется так. Сначала необходимо сохранить в стеке содержимое программного счётчика. Так как ОЗУ имеет разрядность 8, а сохраняемый программный счетчик 11, нам необходимо сохранить РС в две соседние ячейки памяти, т.е. занять две ячейки стека и указатель стека уменьшить на 2. После этого управление передается на новый адрес, который берется из регистра аккумулятора А для команд формата AS, или из регистра Р для RR.

5.6 Алгоритм возврата из подпрограммы

Для возврата из подпрограммы (рисунок приложения 6.1) необходимо извлечь из стека сохраненное значение программного счетчика РС. Это значение хранится в двух ячейка стека. Сначала устанавливаем на шину адреса значение указателя стека SP, по полученному адресу считываем 8 бит из ОЗУ на ШД. Потом переходим к следующей ячейки памяти, увеличив SP на 1. В старшие 3 бита программного счетчика копируем значение 3х младших бит с ШД и увеличиваем значение SP на 1. Далее опять устанавливаем на ША значение SP, и по полученному адресу считываем на ШД еще 8 бит. Копируем в РС эти биты начиная с младших разрядов, увеличиваем значение SP еще на 1. Таким образом устанавливаем сохраненное значение программного счетчика.

5.7 Алгоритмы операций со стеком

При выполнении команды записи в стек (рисунок приложения 7.1) сначала сдвигается указатель стека на 2 в сторону младших адресов, освободив место под 16 бита данных (28 бит в ячейке памяти).

Для формата RR выставляется на шину данных значение из регистра, адрес которого хранится в регистре команды. Для формата AS на шину адреса выставляется значение поля S из регистра команд RgI. По этому адресу происходит выборка из памяти 16ти битов на шину данных. Начиная с адреса, определяемого SP, записываем данные с ШД в память.

При выполнении операции чтения из стека (рисунок приложения 7.2) вначале следует прочитать 16 битов на шину данных из ОЗУ, начиная с адреса, определяемого SP. Для формата RR данные с ШД заносятся в регистр, адрес которого указан в команде. Для формата АS на шину адреса выставляется значение поля S из регистра команд RgI. По этому адресу значение с ШД заносится в память. Затем сдвигается указатель стека на 2 в сторону старших адресов для освобождения мест, занимаемых ранее, прочитанными 16-ю битами данных (28 бит в ячейке памяти).

При выполнении команд сложения и вычитания со стеком (рисунок приложения 7.3) для формата AS на шину данных копируется содержимое регистра, номер которого записан в регистре команды. Для формата AS на шину адреса выставляется значение поля S из регистра команд RgI. По этому адресу происходит выборка из памяти 16х битов на шину данных. Затем данные с ШД заносятся в регистр РВ. После этого необходимо прочитать 16 битов на шину данных из ОЗУ, начиная с адреса, определяемого SP. Полученные данные с ШД заносятся в регистр РА. После этого, в зависимости от кода операции, производится сложение либо вычитание операндов в АЛУ; результат операции выгружается на шину данных либо из аккумулятора А, либо из регистра Р, в зависимости от формата команды, затем записывается с шины данных в ОЗУ, начиная с адреса, определяемого SP.

Соседние файлы в папке docx53