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

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

¦ 1 ¦ 1 ¦ 1 ¦ 0 ¦Рег/количе-¦L/R¦Размер ¦i/r¦ 0 ¦ 0 ¦ Регистр ¦

¦   ¦   ¦   ¦   ¦ство_позиц ¦   ¦       ¦   ¦   ¦   ¦         ¦

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

Поле  Рег/количество_позиц определяет <количество_позиций> или регистр, содержащий значение <количества_позиций>:

Если  i/r=0, то количество_позиций явно указано в данном поле. Значения 0,1,2,...7  представляют  величину сдвига 8,1,2,...7 соответственно.

Если  i/r=1,  количество_позиций содержится в регистре данных, указанном в данном  поле.  Значение  регистра берется по модулю 64.

Поле L/R определяет направление сдвига:

0 - сдвиг вправо.

1 - сдвиг влево.

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

00 - байт.

01 - слово.

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

Поле i/r Если i/r = 0, количество_позиций задано  непосредственно в команде.

Если i/r = 1, количество_позиций задано в регистре.

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

Формат команды для сдвига памяти:

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

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

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

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

Поле L/R определяет направление сдвига:

0 - сдвиг вправо.

1 - сдвиг влево.

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

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

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

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

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

¦       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----------------+----+--------Bcc                   Условный переход                  Bcc

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

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

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

Описание:

Если указанное условие истинно, то выполнение программы продолжается с адреса (РС) + смещение. Смещение  представляет собой относительное расстояние в байтах, представленное в двоично-дополнительном коде, при этом текущее  значение  РС равняется адресу команды плюс 2. Если поле 8-битного смещения в команде равно 0, используется

16-битное смещение из слова,  следующего  за  командой.

Если  поле  8-битного смещения в команде равно $FF, используется 32-битное смещение из длинного слова, следующего за командой.

"cc" определяет условие перехода:

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

¦cc ¦     Название условия    ¦Код ¦    Определение    ¦

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

¦CC ¦ Carry Clear             ¦0100¦       ~C          ¦

¦   ¦   переноса не было      ¦    ¦                   ¦

¦CS ¦ Carry Set               ¦0101¦        C          ¦

¦   ¦   был перенос           ¦    ¦                   ¦

¦EQ ¦ EQual                   ¦0111¦        Z          ¦

¦   ¦   равно                 ¦    ¦                   ¦

¦GE ¦ Greater or Equal        ¦1100¦ (N & V)v(~N &~V)  ¦

¦   ¦   больше или равно      ¦    ¦                   ¦

¦GT ¦ Greater                 ¦1110¦(N&V&~Z)v(~N&~V&~Z)¦

¦   ¦   больше                ¦    ¦                   ¦

¦HI ¦ HIgh                    ¦0010¦     ~C & ~Z       ¦

¦   ¦   выше                  ¦    ¦                   ¦

¦LE ¦ Less or Equal           ¦1111¦Z v (N&~V) v (~N&V)¦

¦   ¦   меньше или равно      ¦    ¦                   ¦

¦LS ¦ Low or Same             ¦0011¦      C v Z        ¦

¦   ¦   не выше               ¦    ¦                   ¦

¦LT ¦ Less                    ¦1101¦(N & ~V) v (~N & V)¦

¦   ¦   меньше                ¦    ¦                   ¦

¦MI ¦ MInus                   ¦1011¦        N          ¦

¦   ¦   минус                 ¦    ¦                   ¦

¦NE ¦ Not Equal               ¦0110¦       ~Z          ¦

¦   ¦   не равно              ¦    ¦                   ¦

¦PL ¦ PLus                    ¦1010¦       ~N          ¦

¦   ¦   плюс                  ¦    ¦                   ¦

¦VC ¦ oVerflow Clear          ¦1000¦       ~V          ¦

¦   ¦   переполнения не было  ¦    ¦                   ¦

¦VS ¦ oVerflow Set            ¦1001¦        V          ¦

¦   ¦   было переполнение     ¦    ¦                   ¦

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

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