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

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

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

¦                          Смещение                           ¦

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

Поле Кода - одно из 16 значений, кодирующих проверяемые условия, описанные выше.

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

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

ЗАМЕЧАНИЯ:

1. Условие прекращения  играет роль конструкции  UNTIL, используемой в  языках  высокого  уровня.  Например,

DBMI выражает операцию "уменьшать и переходить, пока не минус".

2. Большинство  ассемблеров  "понимают" мнемонику DBRA, эквивалентную DBF (прекращение цикла без учета условия).

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

DIVS               Деление со знаком                    DIVS

DIVSL                                                  DIVSL

-----------------------------------------------------------Операция:       Приемник / Источник  > Приемник

Синтаксис:      DIVS.W  <иа>,Dn        32/16  > 16r:16q

DIVS.L  <иа>,Dq        32/32  > 32q

DIVS.L  <иа>,Dr:Dq     64/32  > 32r:32q

DIVSL.L <иа>,Dr:Dq     32/32  > 32r:32q

(q - делимое и частное, r - остаток)

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

Описание:

Операнд-Приемник  делится  на операнд-Источник, результат запоминается в Приемнике.  Используется  арифметика целых чисел со знаком.

Команда  имеет 4 варианта: один для работы со словами и

3 для работы с длинными словами. При работе со  словами

32-битный  результат  состоит  из  16-битного  частного

(младшее слово результата) и 16-битного остатка  (старшее слово). Остаток имеет тот же знак, что и делимое.

При работе с длинными словами по первому варианту  Приемник и Источник являются длинными словами. Результат длинное частное, остаток отбрасывается.

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

При работе с длинными словами по третьему варианту Приемник  и  Источник  являются длинными словами.  Результат - длинное частное и длинный остаток.

При выполнении команды могут возникнуть 2 особых случая:

1. Деление на ноль инициировало TRAP.

2. До завершения команды было обнаружено  переполнение.

В этом случае переполнение отмечается в  коде  условия, а операнды не изменяются.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ * ¦ * ¦ 0 ¦

L---+---+---+---+---N       1, если частное отрицательно; иначе 0. При  переполнении и делении на 0 бит не определен.

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

V       1, если  при  делении  произошло  переполнение;

иначе 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----------------------¬

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

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

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

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

Поле исполнительного адреса определяет способ адресации

Источника. Допустимы только способы адресации данных:

-----------------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----------------+----+--------ЗАМЕЧАНИЕ: Если частное не может быть  представлено  в  формате

16-битного целого со знаком, происходит переполнение.

Формат команды (при работе с длинными словами):

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 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦  Мода       Регистр  ¦

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