Команды условного перехода
Команды передачи управления реализуют изменение естественного порядка выполнения команд программы. Их можно разделить на 3 подгруппы, описание которых приведено в приложении 1 [5]. В мнемонические обозначения команд условного перехода входят буквы, которые определяют условия в соответствии с таблицей 1 [1]. В этой таблице операнд “метка перехода” или “близкая метка” отражает тот факт, что метка помеченной команды должна находиться в пределах текущего сегмента кода и на относительном расстоянии от команды перехода > -128 и < 127 байтов. Ограничение (–128..127) байтов снято у процессоров, начиная с модели 80386, однако ограничение передачи управления в пределах текущего сегментного кода действует и в моделях PENTIUM. Таблица 1 Мнемокоды команд условного перехода
Решение о том, куда будет передано управление командой условного перехода, принимается на основании условия. Источниками таких условий могут быть: - любая команда, изменяющая состояние арифметических флагов (ниже эти флаги будут перечислены); - команда сравнения CMP. Формат команды CMP: CMP приемник, источник или CMP операнд1, операнд2. Эта команда осуществляет вычитание (операнд1 - операнд2) или (приемник – источник), однако результат никуда не записывается, а только устанавливает флаги в соответствие с таблицей 2 [5]. Таблица 2 Значения флагов, устанавливаемые командой CMP
В этой таблице приняты следующие обозначения: - “H” означает, что ‘не имеет значения” или иначе, на этот флаг операция не влияет; - 0/1 означает, что флаг устанавливается или в 1 или в 0 в зависимости от значений операндов (отрицательные, положительные или разнознаковые операнды сравниваются). Приведем еще одну таблицу 3 [1], в которой отражается действие команд условного перехода по значениям анализируемых этими командами флагов. В этой таблице через слеш ‘/’ перечисляются идентичные команды, действие которых совершенно одинаково, и применение конкретной из них зависит от пристрастий программиста. Наличие идентичных команд объясняется тем фактом, что если число_1 > число_2, то можно с уверенностью утверждать, что число_1 не (меньше или равно) число_2.
Таблица 3 Логика команд условного перехода
|