Таблица 2. Перечень команд условного перехода для команды cmp операнд_1,операнд_2 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Таблица 2. Перечень команд условного перехода для команды cmp операнд_1,операнд_2

Поиск

Условные переходы

Микропроцессор имеет 18 команд условного перехода (см. “Описание команд”). Эти команды позволяют проверить:

  • отношение между операндами со знаком (“больше — меньше”);
  • отношение между операндами без знака (“выше — ниже”)2;
  • состояния арифметических флагов zf, sf, cf, of, pf (но не af).

Команды условного перехода имеют одинаковый синтаксис:
jcc метка_перехода

Как видно, мнемокод всех команд начинается с “j” — от слова jump (прыжок), cc — определяет конкретное условие, анализируемое командой. Что касается операнда метка_перехода, то эта метка может находится только в пределах текущего сегмента кода, межсегментная передача управления в условных переходах не допускается.

Для того чтобы принять решение о том, куда будет передано управление командой условного перехода, предварительно должно быть сформировано условие, на основании которого и будет приниматься решение о передаче управления.
Источниками такого условия могут быть:

  • любая команда, изменяющая состояние арифметических флагов;
  • команда сравнения cmp, сравнивающая значения двух операндов;

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

Команда сравнения cmp

Команда сравнения cmp имеет интересный принцип работы. Он абсолютно такой же, как и у команды вычитания.
sub операнд_1,операнд_2. Команда cmp так же, как и команда sub, выполняет вычитание операндов и устанавливает флаги. Единственное, чего она не делает — это запись результата вычитания на место первого операнда.

Синтаксис команды cmp:
cmp операнд_1,операнд_2 (compare) — сравнивает два операнда и по результатам сравнения устанавливает флаги.

Флаги, устанавливаемые командой cmp, можно анализировать специальными командами условного перехода. Прежде чем мы их рассмотрим, уделим немного внимания мнемонике этих команд условного перехода (табл. 1). Понимание обозначений при формировании названия команд условного перехода (элемент в названии команды jcc, обозначенный нами cc) облегчит их запоминание и дальнейшее практическое использование.

Таблица 1. Значение аббревиатур в названии команды jcc

Мнемоническое обозначение

Английский

Русский

Тип операндов

E e

equal

Равно

Любые

N n

not

Не

Любые

G g

greater

Больше

Числа со знаком

L l

less

Меньше

Числа со знаком

A a

above

Выше, в смысле “больше”

Числа без знака

B b

below

Ниже, в смысле “меньше”

Числа без знака

Типы операндов

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

Критерий условного перехода

Значения флагов для осуществления перехода

Любые

je

операнд_1 = операнд_2

zf = 1

Любые

jne

операнд_1<>операнд_2

zf = 0

Со знаком

jl/jnge

операнд_1 < операнд_2

sf <> of

Со знаком

jle/jng

операнд_1 <= операнд_2

sf <> of or zf = 1

Со знаком

jg/jnle

операнд_1 > операнд_2

sf = of and zf = 0

Со знаком

jge/jnl

операнд_1 => операнд_2

sf = of

Без знака

jb/jnae

операнд_1 < операнд_2

cf = 1

Без знака

jbe/jna

операнд_1 <= операнд_2

cf = 1 or zf=1

Без знака

ja/jnbe

операнд_1 > операнд_2

cf = 0 and zf = 0

Без знака

jae/jnb

операнд_1 => операнд_2

cf = 0

Не удивляйтесь тому обстоятельству, что одинаковым значениям флагов соответствует несколько разных мнемокодов команд условного перехода (они отделены друг от друга косой чертой в табл. 2).
Разница в названии обусловлена желанием разработчиков микропроцессора облегчить использование команд условного перехода в сочетании с определенными группами команд. Поэтому разные названия отражают скорее различную функциональную направленность. Тем не менее, то, что эти команды реагируют на одни и те же флаги делает их абсолютно эквивалентными и равноправными в программе. Поэтому в табл. 2 они сгруппированы не по названиям, а по значениям флагов (условиям), на которые они реагируют.



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 4; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.245.104 (0.008 с.)