Процедура выполнения команд перехода (условного и безусловного)

При естественной адресации адрес следующей команды получается из адреса выполняемой команды увеличением его на шаг адресации (1, 2, 4 и т.д. в зависимости от количества байт в команде). Производится эта операция путем автоматической модификации содержимого СчК после выполнения текущей команды.Для управления ходом выполнения программ и организации ветвлений в систему команд процессоров с естественной адресацией были введены команды

 
 

условных и безусловных переходов.

 

Рисунок 4.8- Формат команд условного и безусловного переходов

В разных машинах реализация этих команд различная, однако общий подход следующий: содержимое поля адреса перехода команды загружается в СчК, после чего процессор продолжает выполнение программы с нового адреса.

Команды безусловного перехода предписывают совершать переход по программе независимо от каких-либо условий. Существуют команды безусловного перехода по косвенному адресу. В этом случае в коде команды указывают адрес ячейки, в которой хранится адрес перехода.

При условном переходе адрес следующей команды зависит от некоторого условия, полученного в результате выполнения предыдущей. Если условие выполняется, то процессор переходит к выполнению программы по адресу, указанному в адресной части команды, если нет, то к команде, следующей непосредственно за командой условного перехода.

 

4.9 Процедура выполнения команд вызова подпрограмм

Другим типом команд передачи управления являются команды вызова подпрограмм. Их особенность заключается в том, что по окончанию выполнения подпрограммы они должны обеспечить возврат к выполнению программы, из которой подпрограмма была вызвана. Для этого адрес возврата должен быть запомнен, для чего в СчК формируется продвинутый адрес, который затем сохраняется в памяти (или в стеке). Для перехода к выполнению подпрограммы в СчК заносится адресная часть команды ее вызова. По окончанию выполнения подпрограммы адрес следующей команды основной программы, ранее сохраненный в стеке, вызывается из него, заносится в СчК и выполнение программы продолжается. Для организации возврата в основную программу подпрограмма должна оканчиваться командой “Возврат” (“RETURN”). Кроме нее существует также и команда “Условного возврата”.

Формат команды “Перехода к подпрограмме” приведен на рисунке 4.9.1.

 

 
 

Рисунок 4.9.1- Формат команды “Перехода к подпрограмме”

Процесс выполнения команд “Вызов подпрограмм” проиллюстрирован на рисунке 4.9.2. Короткий отрезок прямой на этом рисунке соответствует одной команде, длинный- переходу к выполнению подпрограммы или возврату из нее.

 

 

Рисунок 4.9.2 – Процесс выполнения команды “Вызов подпрограммы”