Подробное описание системы команд микропроцессора МС68020 и способов адресации, страница 25

границе=2 и Верхней_ границе=0 число -1 принадлежит допустимому диапазону, а число 1 - нет. Это обстоятельство позволяет использовать команду CMP2 для проверки попадания  в  допустимый  диапазон  (понимаемый в обычном смысле, как отрезок числовой оси) и для чисел  со  знаком, и для чисел без знака. Для сравнения с учетом знака необходимо лишь, чтобы нижняя граница была арифметически меньше верхней; для сравнения без учета знака необходимо  лишь,  чтобы  нижняя  граница  была логически меньше верхней.

Размер операндов (регистра и границ) -  байт,  слово  и длинное слово. Если проверяется регистр данных и размер операндов  определен  как  байт  или слово, в сравнении участвует лишь соответствующая младшая  часть  регистра

Dn.  Если проверяется регистр адреса и размер операндов определен как байт или слово, то операнды-границы рассматриваются со знаком, распространенным до 32 бит и полученные значения сравниваются со всем регистром An.

Если верхняя граница равна нижней, допустимый  диапазон превращается в единственное значение.

ЗАМЕЧАНИЕ:

Команда аналогична CHK2 с той разницей, что при непопадании в допустимый диапазон не возбуждается исключение.

Коды условия:

X   N   Z   V   C

----T---T---T---T---¬

¦ - ¦ U ¦ * ¦ U ¦ * ¦

L---+---+---+---+---N       неопределен

Z       1, если Rn равен какой-либо из границ; иначе 0

V       неопределен

C       1, если Rn вне допустимого диапазона; иначе 0

X       не изменяется

Формат команды:

15  14  13  12  11  10   9   8   7   6   5   4   3   2   1   0

----T---T---T---T---T------T---T---T---T----------------------¬

¦   ¦   ¦   ¦   ¦   ¦      ¦   ¦   ¦   ¦ Исполнительный адрес ¦

¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦Размер¦ 0 ¦ 1 ¦ 1 ¦  Мода       Регистр  ¦

+---+---+---+---+---+---T--+---+---+---+---T---T---T---T---T--+

¦Д/А¦     Rn    ¦ 0 ¦ 0 ¦ 0¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0¦

L---+-----------+---+---+--+---+---+---+---+---+---+---+---+--Поля команды:

Поле Размера определяет размер операндов:

00 - байт

01 - слово

10 - длинное слово

Поле  Исполнительного  адреса определяет местоположение пары значений границ, при этом допустимы только способы адресации управляющих операндов:

-----------------T----T--------¬-----------------T----T--------¬

¦Способ адресации¦Мода¦Регист𠦦Способ адресации¦Мода¦Регистр ¦

+----------------+----+--------++----------------+----+--------+

¦       Dn       ¦ -  ¦   -    ¦¦    (xxx).W     ¦111 ¦  000   ¦

+----------------+----+--------++----------------+----+--------+

¦       An       ¦ -  ¦   -    ¦¦    (xxx).L     ¦111 ¦  001   ¦

+----------------+----+--------++----------------+----+--------+

¦      (An)      ¦010 ¦ном.An  ¦¦   #<данные>    ¦ -  ¦   -    ¦

+----------------+----+--------++----------------+----+--------+

¦      (An)+     ¦ -  ¦   -    ¦¦                ¦    ¦        ¦

+----------------+----+--------++----------------+----+--------+

¦     -(An)      ¦ -  ¦   -    ¦¦                ¦    ¦        ¦

+----------------+----+--------++----------------+----+--------+

¦   (d{16},An)   ¦101 ¦ном.An  ¦¦   (d{16},PC)   ¦111 ¦  010   ¦

+----------------+----+--------++----------------+----+--------+

¦  (d{8},An,Xn)  ¦110 ¦ном.An  ¦¦  (d{8},PC,Xn)  ¦111 ¦  011   ¦

+----------------+----+--------++----------------+----+--------+

¦   (bd,An,Xn)   ¦110 ¦ном.An  ¦¦   (bd,PC,Xn)   ¦111 ¦  011   ¦

+----------------+----+--------++----------------+----+--------+

¦([bd,An,Xn],od) ¦110 ¦ном.An  ¦¦ ([bd,PC,Xn],od)¦111 ¦  011   ¦

+----------------+----+--------++----------------+----+--------+

¦([bd,An],Xn,od) ¦110 ¦ном.An  ¦¦ ([bd,PC],Xn,od)¦111 ¦  011   ¦

L----------------+----+---------L----------------+----+--------Поле Д/А определяет тип проверяемого регистра:

0 - регистр данных

1 - регистр адреса.

Поле Rn определяет номер проверяемого регистра.

cpBcc      Переход по сопроцессорному условию     cpBcc

------------------------------------------------------Операция:       Если сопроцессорное условие истинно, то   PC + d  > PC

Синтаксис:      cpBcc  <метка>

Атрибуты:       Размер=(Слово,Длинное слово)

Описание:

Если указанное сопроцессорное условие истинно, выполнение  программы  продолжается  с адреса (РС) + смещение.

Смещение представляет собой относительное расстояние  в байтах,  представленное  в двоично-дополнительном коде.

Текущее значение РС указывает на слово (или  первое  из двух  слов)  смещения.  Смещение может быть 16- или 32битным. Сопроцессорное условие передается сопроцессору, определяя конкретное условие, требующее проверки.

Коды условия: не изменяются.

Формат команды:

15  14  13  12  11  10   9   8   7   6   5   4   3   2   1   0

----T---T---T---T-----------T---T---T---T---------------------¬

¦ 1 ¦ 1 ¦ 1 ¦ 1 ¦Сопроцессор¦ 0 ¦ 1 ¦W/L¦         CC          ¦

+---+---+---+---+-----------+---+---+---+---------------------+

¦              Необязательные слова расширения                ¦

¦             (определяются типом сопроцессора)               ¦

+-------------------------------------------------------------+

¦                      16-битное или                          ¦

+-------------------------------------------------------------+

¦                    32-битное смещение                       ¦

L-------------------------------------------------------------Поля команды:

Поле Сопроцессора идентифицирует  сопроцессор,  который должен выполнить данную операцию.

Поле W/L задает размер смещения:

0 - 16-битное  смещение

1 - 32-битное  смещение

Поле CC определяет  сопроцессорное  условие,  требующее проверки.  Это поле передается сопроцессору, который в свою очередь выдает директивы для  ЦП  (сопроцессорные примитивы) при выполнении данной команды.

Поле  16-битного смещения задает смещение для сопроцессора в 16-битной форме.

Поле 32-битного смещения используется для задания  смещений, превосходящих 2  .

cpDBcc      Проверка сопроцессорного условия     cpDBcc

с учетом кратности и переход