Команды условной передачи управления - Jxx
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

         У микропроцессора есть команды, которые позволяют ему передавать управление той или иной команде, в зависимости от определенных условий, например, нулевого или единичного значения флага переноса CF. Если условие выполнено, то микропроцессор выполнит переход, в противном случае он продолжит исполнение со следующей команды программы. Условия перехода определяют шесть флагов состояния процессора (CF, AF, ZF, SF, PF, OF). То есть, процессор выполняет или не выполняет переход в зависимости от значений флагов состояния. Такие переходы называются условными. Условные переходы обычно реализуются в два шага: сначала сравниваются некоторые величины, в результате чего формируются соответствующим образом флаги состояний, а затем выполняется собственно условный переход в зависимости от значений флагов.

Команды условной передачи управления имеют следующий общий формат: Jx х MP; хх – модификатор обозначающий условия перехода,

                  МР – метка точки перехода.

Все команды переходов можно разделить на три группы.

В первую группу входят команды, которые ставятся после арифметических или команд сравнения. В их мнемокодах определенными буквами описывается тот исход сравнения, при котором надо сделать переход. Обычно применяется набор следующих букв:

                   Е - Equal(равно) - для всех типов данных;

                   N - Not (нет) - для всех типов данных;

                   G – Greater (больше) –  для чисел со знаком;

                   L- Less  (меньше) – для чисел со знаком;

                   A –  Above  (выше) – для чисел без знака;

                   B – Below  (ниже) - для чисел со знаком.

В таблице 3.2 приведены основные команды условного перехода первой группы с условиями перехода и состояниями флагов для перехода.

Таблица 3.2 - Основные команды условного перехода первой группы

Мнемокод Условие перехода Состояние флагов
JE op1 = op2 ZF=1
JNE оp1≠ op2 ZF=0
JL оp1 < op2 SF≠ OF
JLE оp1 ≤ op2 ZF=1 или SF≠ OF
JG оp1 > op2 SF = OF и ZF = 0
JB p1 < op2 СF = 1
JA оp1 > op2 СА = 0  и  ZF = 0
JAE оp1 ≥ op2 СА =0

 

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

Таблица 3.3 – Команды перехода по флагам

Мнемокод Условие перехода Мнемокод Условие перехода
JZ ZF = 1 JNZ ZF = 0
JS SF = 1 JNS SF = 0
JC СF= 1 JNC СF= 0
JO OF = 1 JNO OF = 0
JP PF = 1 JNP PF = 0

 

В третью группу входит только одна команда условного перехода проверяющая состояние регистра СХ. Это следующая команда:

JCXZ <метка>; Если СХ = 0, перейти на метку.

 Команды условной передачи управления занимают в памяти два байта: первый байт содержит код операции, а второй - относительный сдвиг (адрес метки перехода). Поэтому метка перехода MP должна находиться не далее -128 или +127 байтов от команды условной передачи управления. Приведем несколько примеров команд условной передачи управления:

1. ADD AL,BL; Если при сложении возник перенос (СF=1),

 JC TOOBIG; то осуществляется переход к метке TOOBIG.

2. SUB AL,BL; Если при вычитании в регистре AL оказался ноль (ZF=1),

JZ ZERO; то осуществляется переход к метке ZERO.

3. СМР AL,BL; Если значения регистров AL и BL одинаковы (ZF=1),

 JE ZERO; то осуществляет переход к метке ZERO.

В последнем примере можно было бы использовать эквивалентный мнемокод – JZ, но мнемокод JE (jump if equal - перейти, если равно) в данном случае более содержателен.

В зависимости от того, проверяется результат операции над числами без знака или над числами со знаком, применяются различные команды условного перехода. Предположим, что требуется перейти к метке BXMORE, если содержимое регистра ВХ имеет большее значе­ние, чем содержимое регистра АХ. Если операнды не имеют знака, надо использовать последовательность следующих команд:

  СМР ВХ,АХ; Сравнить содержимое регисров АХ и ВХ.

JA ME;  Перейти на метку, если ВХ выше (CF=0).

Если операнды знаковые, небходимо использовать специальные команды для таких операндов. Например, СМР ВХ,АХ; Сравнить знаковые операнды.

                                JG ME; Перейти на метку, если ВХ больше (CF=0).

Командам условной передачи управления могут предшествовать любые команды, изменяющие состояния флагов, но обычно они используются совместно с командой сравнения (СМР) или арифметическими командами

Дата: 2018-11-18, просмотров: 482.