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

¦ДА1¦    Rn1    ¦ 0 ¦ 0 ¦ 0 ¦    Du1    ¦ 0 ¦ 0 ¦ 0 ¦   Dc1   ¦

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

¦ДА2¦    Rn2    ¦ 0 ¦ 0 ¦ 0 ¦    Du2    ¦ 0 ¦ 0 ¦ 0 ¦   Dc2   ¦

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

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

01 - слово

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

Поля DA1, DA2 определяют, что задается в полях Rn1, Rn2:

0 - в соответствующем поле задан регистр данных

1 - в соответствующем поле задан регистр адреса

Поля Rn1, Rn2 определяют номера  регистров,  содержащих адреса первого и второго операнда-Приемника. Если операнды перекрываются в памяти, в случае прохождения изменения результат непредсказуем.

Поля Du1, Du2 определяют  регистры  данных,  содержащие

Операнды_замены для записи в первый и  второй  операнды-Приемники при успешном сравнении.

Поля Dc1, Dc2 определяют  регистры  данных,  содержащие

Операнды_сравнения для первого и  второго   Приемника.

Если Dc1 и Dc2 задают один и тот же регистр и  сравнение было неуспешным,  регистр  данных  загружается  из первого операнда-Приемника.

ЗАМЕЧАНИЕ ПО ПРОГРАММИРОВАНИЮ:

Команды CAS и CAS2 могут быть использованы для безопасного обновления в мультипроцессорных  средах  системных управляющих структур данных.

CHK        Контроль попадания в диапазон           CHK

с нулевой нижней границей

-----------------------------------------------------Операция:       Если (Dn < 0) или (Dn > Источника), то TRAP

Синтаксис:      CHK  <иа>,Dn

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

Описание:

Указанный регистр данных сравнивается с 0 и  с  верхней границей (целым числом в двоично-дополнительном  коде).

Если значение регистра меньше 0 или больше верхней границы, процессор возбуждает  обработку  исключения,  при этом номер вектора равен 6, т.е. соответствует исключению по команде CHK.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ U ¦ U ¦ U ¦

L---+---+---+---+---N       1,  если  (Dn < 0);   0, если (Dn > Источника);

иначе неопределен

Z       неопределен

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

C       неопределен

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

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

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

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

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

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

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

Поле регистра Dn определяет любой из 8 регистров данных.

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

110 - слово

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

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

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

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

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

¦       Dn  (*)  ¦000 ¦ном.Dn  ¦¦    (xxx).W     ¦111 ¦  000   ¦

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

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

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

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

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

¦      (An)+     ¦011 ¦ном.An  ¦¦                ¦    ¦        ¦

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

¦     -(An)      ¦100 ¦ном.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----------------+----+--------(*) - только длинный операнд.

CHK2          Контроль попадания в диапазон       CHK2

-----------------------------------------------------Операция:       Если Rn < Источник.Нижняя_граница или

Rn > Источник.Верхняя_граница то TRAP

Синтаксис:      CHK2 <иа>,Rn

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

Описание:

Производится проверка попадания значения указанного регистра данных в  диапазон,  определяемый  парой  чисел, расположенных по заданному исполнительному адресу. Значение Нижней_границы находится по исполнительному адресу,  адрес  значения Верхней_границы превышает исполнительный адрес на размер операнда.

Множество  двоичных чисел по mod 2**N (где N равно размеру_операндов в случае, если Rn -  регистр  данных,  и

N=32 в случае, если Rn - регистр адреса) рассматривается как кольцо (положительное направление на котором задается  инкрементацией на единицу), а допустимый диапазон - как дуга кольца, начинающаяся в Нижней_границе, и заканчивающаяся в Верхней. Так, к примеру,  при Нижней_

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

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