Примеры команд условного перехода


Введение

Команды условного перехода

1) Команда условного перехода – это команда, которая в ходе своего выполнения либо выполняет переход на указанный адрес, либо не выполняет, в зависимости от выполнения или невыполнения некоторого "условия перехода".

 

2) Условием для команд условного перехода - являются определённые значения флагов регистра RF.

 

3) Процессор поддерживает множество команд условного перехода. Команды условного перехода отличаются тем значение какого именно из флагов регистра RF анализируется в ходе выполнения данной команды, и какое именно значение флага, 0 или 1 – считаются выполнением условия перехода.

 

4) Общий формат команд условного перехода:

JMP XX #Adr, где ХХ – код условия перехода, некоторое число, показывающее какой именно значение и какого из флагов флаг считается выполнением условия перехода. #Adr – как и в команде безусловного перехода: адрес перехода заданный непосредственным методом адресации.

 

JMP Z #Adr – команда называется "перейти если ноль". В ходе выполнения команды будет анализироваться флаг ZF. Выполнением условия перехода при выполнении этой команды считается: флаг нуля ZF=1.

 

JMP NZ #Adr – команда называется "перейти если не ноль". В ходе выполнения команды будет анализироваться флаг ZF. Выполнением условия перехода при выполнении этой команды считается: флаг нуля ZF=0.

 

Подобные же команды – и для остальных флагов побочных результатов. По аналогии с предыдущими двумя командами ещё несколько примеров. Опишем короче, указав только название команды да условие перехода.

 

 

JMP S #Adr – "перейти если знак" (SF=1)

JMP NS #Adr – "перейти если нет знака" (SF=0).

JMP P #Adr – "перейти если чётный" (PF=1)

JMP NP #Adr – "перейти если нечётный" (PF=0)

JMP O #Adr – "перейти если переполнение" (OF=1)

JMP NO #Adr – "перейти если нет переполнения" (OF=0)

 

 

3.9.3 Алгоритм команды JMP XX #Adr

Поскольку эта команда предполагает ветвление в ходе выполнения алгоритма выполнения команды – снова используем блок-схему:

 

 

Микрооперации 1,2: стандартные микроопереции начала выполнения команды. Смотрите [3.6.2]

 

Микрооперация 3: проверка значения одного из флагов флага регистра RF, того самого определённое значение которого и является условием перехода для данной разновидности команды JMP XX #Adr.

 

Микрооперация 4а: если условие выполнилось - осуществляет переход, адрес перехода переписывается в регистр РС, как это имело место и при выполнении команды JMP #Adr.

 

Микрооперация 4б: если условие не выполнилось – переход не осуществляется. Выполняется обычная "стандартная" предпоследняя микрооперация завершения команды. В программный счетчик заносится адрес следующей по порядку размещения в ОЗУ команды, точно так, как это было описано в [3.6.2], и как и происходит при выполнении большинства команд ЭВМ – любых команд не связанных с изменением последовательности выполнения команд. С

 

Микрооперация 5: стандартная последняя микрооперация завершения команды. [3.6.2]