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

Если R/M=1, то регистр адреса Ay для способа адресации с предекрементированием.

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

00 - байт

01 - слово

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

Поле R/M определяет способ адресации операндов:

0 - операция над регистрами данных

1 - операция над памятью.

Поле регистра Rx определяет регистр Источника:

Если R/M=0, то регистр данных Dx.

Если R/M=1, то регистр адреса Ax для способа адресации с предекрементированием.

SWAP          Перестановка слов регистра           SWAP

------------------------------------------------------Операция:       Регистр [31:16] <> Регистр [15:0]

Синтаксис:      SWAP Dn

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

Описание:

Старшее и младшее слова заданного регистра данных меняются местами.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ * ¦ 0 ¦ 0 ¦

L---+---+---+---+---N       1, если старший бит результата равен 1; иначе 0

Z       1, если результат равен нулю; иначе 0

V       всегда 0

C       всегда 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---T---T---T---T---------¬

¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ Регистр ¦

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

Поле Регистра определяет регистр данных.

TAS          Проверка и установка операнда          TAS

------------------------------------------------------Операция:       Проверка Приемника  > Коды условия;

1  > бит 7 Приемника

Синтаксис:      TAS <иа>

Атрибуты:       Размер=(Байт)

Описание:

Коды  условия  Z  и N устанавливаются в соответствии  с текущим значением байта по исполнительному адресу.  Затем  старший  бит  байта-Приемника устанавливается в 1.

Команда  выполняется  как  непрерываемая  (используется цикл шины "чтение-модификация-запись"),  что  позволяет использовать  ее  для  синхронизации  работы нескольких процессоров.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ * ¦ 0 ¦ 0 ¦

L---+---+---+---+---N       1, если старший бит операнда равен 1; иначе 0

Z       1, если операнд равен нулю; иначе 0

V       всегда 0

C       всегда 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---T---------------------¬

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

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

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

Поле Исполнительного адреса  определяет  местоположение байта-Приемника. Допустимы  только  способы  адресации изменяемых данных:

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

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

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

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

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

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

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

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

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

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

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

¦     -(An)      ¦100 ¦ном.An  ¦¦                ¦    ¦        ¦

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

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

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

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

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

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

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

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

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

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

L----------------+----+---------L----------------+----+--------TRAP             Программная ловушка               TRAP

------------------------------------------------------Операция:       SSP - 2  > SSP; Формат/Смещение  > (SSP);

SSP - 4  > SSP; PC  > (SSP);

SSP - 2  > SSP; SR  > (SSP);

Адрес вектора  > PC

Синтаксис:      TRAP #<вектор>

Атрибуты:       Размер не используется

Описание:

Процессор возбуждает обработку исключения. Операнд  команды задает номер используемого вектора среди векторов исключения команды TRAP. Может быть выбран один  из  16

(0-15) векторов.

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

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

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---T---T---T--------------¬

¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦    Вектор    ¦

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

Поле Вектора задает номер вектора команды TRAP, в котором лежит новое значение программного счетчика.

TRAPcc       Условная программная ловушка          TRAPcc

--------------------------------------------------------Операция:       Если  cc

то    TRAP

Синтаксис:      TRAPcc

TRAPcc.W  #<данные>

TRAPcc.L  #<данные>

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

Описание:

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