границе=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
с учетом кратности и переход
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.