Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Команды условной передачи управления - 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 - Основные команды условного перехода первой группы
Во вторую группу входят те команды, которые реагируют на значение какого – нибудь определенного флага. В мнемокодах этих команд указывается первая буква проверяемого флага, если переход при единичном значении флага, либо в сочетании с буквой N, если переход при нулевом значении флага. В таблице 3.3 указаны команды второй гуппы. Таблица 3.3 – Команды перехода по флагам
В третью группу входит только одна команда условного перехода проверяющая состояние регистра СХ. Это следующая команда: 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). Командам условной передачи управления могут предшествовать любые команды, изменяющие состояния флагов, но обычно они используются совместно с командой сравнения (СМР) или арифметическими командами
|