Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архит_ЭВМ_лекции.doc
Скачиваний:
99
Добавлен:
04.06.2015
Размер:
19.16 Mб
Скачать

Состав команд операций ветвления

К этим командам относятся:

  • IMP– безусловный переход по адресу;

  • IZ– перейти, если ноль по адресу;

  • INZ– перейти, если не ноль по адресу;

  • IC- перейти, если перенос;

  • INC– перейти, если нет переноса по адресу.

Обычно МП выполняет команды последовательно, т.е. 16-тиразрядный счетчик команд типового МП содержит всегда адрес следующий, извлекаемый из памяти команды до ее выполнения. Его содержимое (счетчик команд) обычно повышается на 1, при каждом счете.

Команды ветвления или перехода являются средством изменения значения содержимого счетчика команд и следовательно изменение нормальной последовательности выполнения программы.

Команда IMP– перейти. Она является трехбайтовой. Используется для изменения специфического адреса в счетчике команд.

Адрес 2000Н загружен в счетчик команд, информация об этом адресе следует непосредственно за кодом операции, поэтому такая адресация называется непосредственной. Младший байт адреса находится во втором байте памяти сразу за кодом операции. Команду безусловного перехода можно рассматривать как способ загрузки новой информации об адресе в счетчике команд.

Остальные команды ветвления являются командами условного перехода. Эти команды повлекут за собой непосредственную загрузку адреса только, если будет выполнены специальные условия. В противном случае, счетчик команд будет нормальным способом инкрементирован.

Например, команда IZ– перейти, если ноль.

В этом случае счетчик команд 2017Н до операции будет нормально инкрементирован, если только индикатор нуля Zнеустановлен в 1. МП проверяет это и находит 1, значит, результат последней арифметической или логической операции был ноль. Условие перехода выполнены и МП загружает новый адрес 2008Н в счетчик команд. Этот новый адрес поступает из ПЗУ. Следующей выполненной командой программы будет команда размещения данных в памяти по адресу 2008Н (но не 2018Н).

Команды перехода или ветвления существуют практически во всех программах МП. Они очень эффективны, как средство принятия решений и удобны для формирования циклов программ.

Состав команд операций вызова подпрограмм и возврата в основную программу

Этих команд две: команда вызова CALLи команда возвратаRET. Эти команды всегда используются парами, т.е. если в тексте программы есть командаCALL, ее всегда сопровождает командаRET. Трехбайтовая командаCALLиспользуется основной программой для перехода МП к подпрограмме.

В примере подпрограмма (п/п) является короткой последовательностью команд, целью которой является создание интервала времени в течение 1 секунды.

Когда МП передает первую команду CALLпо адресу 1000Н, он находит адрес перехода в двух следующих байтах программы. Адрес, следующий заCALLкоманды, отправляется (2010) в стек и МП переходит тогда в начало подпрограммы по адресу 1000Н. Команды, составляющие эту программу, выполняются до тех пор, пока МП не встретит команду возвратаRET. Сохраняющий в стеке адрес 2010 помещается в счетчик команд и МП продолжает выполнение основной программы, принимая ее там, где он ее покинул. Эта программа выполняется до тех пор, пока МП не встретит другую команду подпрограммы вызоваCALLпо адресу 2020. МП сохраняет адрес следующей команды 2023 в стеке и переходит к подпрограмме, находящейся по адресу 1000Н. После завершения выполнения этой подпрограммы команда возвратаRETизвлекает из стека адрес следующей команды основной программы (2023) и загружает ее в счетчик команд.

Данная подпрограмма может быть использована много раз в ходе выполнения одной и той же основной программы.

Подпрограммы, как правило, размещены в ПЗУ МП, но в некоторых случаях для ускорения выполнения программ, подпрограммы размещают в ОЗУ.

Команда вызова сочетает функции оператора загрузки в стек и перехода.

Эта команда сначала загружает в стек содержимое счетчика команд. После этого счетчик команд должен быть загружен новым адресом для выполнения перехода к подпрограмме.

Нарисуем блок-схему выполнения этой команды:

Имеет место следующей последовательности операции:

  1. Указатель стека декрементирован от 210А до 2109.

  2. Старший байт счетчика команд загружается в стек по адресу 2109.

  3. Указатель стека декрементируется до 2108.

  4. Младший байт счетчика команд загружается в ячейку памяти с адресом 2108.

  5. Младший байт адреса подпрограммы загружается в младший байт счетчика команд.

  6. Старший байт адреса перехода загружается в старший байт счетчика команд.

После этого МП ответвляется по адресу, на который указывает счетчик команд (в примере 1000Н). Этот адрес является началом подпрограммы. В конце подпрограммы находится команда RETERN. Обнаружив ее, МП извлекает в известном порядке из стека сначала младший, затем старший байты и размещает их в счетчике команд (в примере 2010). После этого продолжается выполнение основной программы до следующей командыCALL.

Имеется ряд других таких команд, как команды обслуживания стека, отсутствие операции, команда остановок и др. При их выполнении индикаторы регистра состояния не меняются.