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

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

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

¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦         Номер бита           ¦

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----------------+----+--------(*) - только длинный операнд; в остальных случаях операнды только байтовые.

Поле Номера бита задает номер обрабатываемого бита.

BSR          Переход на подпрограмму                  BSR

--------------------------------------------------------Операция:       SP - 4  > PC; PC  > (SP); PC + d  > PC

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

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

Описание:

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

равняется  адресу  команды  плюс 2. Если поле 8-битного смещения в команде равно 0, используется 16-битное смещение из слова, следующего за командой.  Если  поле  8битного  смещения в команде равно $FF, используется 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-----------------------------¬

¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦     8-битное  смещение      ¦

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

¦     16-битное  смещение,  если 8-битное  смещение = $00     ¦

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

¦     32-битное  смещение,  если 8-битное  смещение = $FF     ¦

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

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

16-битное смещение - обеспечивает смещение, не представимое  в 8 битах. Используется в случае, если 8-битное смещение = $00.

32-битное смещение - обеспечивает смещение, не представимое в 16 битах. Используется в случае, если 8-битное смещение = $FF.

ЗАМЕЧАНИЕ:

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

BTST            Проверка бита                        BTST

--------------------------------------------------------Операция:       ~(<номер бита> В Приемнике)  > Z

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

BTST #<данные>,<иа>

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

Описание:

Указанный бит в Приемнике проверяется и  его  состояние используется для формирования кода условия Z. Если Приемником является регистр данных, нумерация битов ведется по модулю 32, что обеспечивает доступ ко всем  битам регистра. Если Приемником является байт памяти, он считывается и проверяется, при этом используется нумерация битов по модулю 8. Во всех случаях бит  номер  0  соответствует младшему биту Приемника. Номер бита может задаваться двумя различными способами:

1. Непосредственно  -  номер  бита содержится во втором слове команды.

2. В регистре - номер бита содержится в  регистре  данных, заданном в команде.

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

X   N   Z   V   C

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

¦ - ¦ - ¦ * ¦ - ¦ - ¦

L---+---+---+---+---N       не изменяется

Z       1, если проверенный бит равен 0; иначе 0

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

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

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

L---+---+---+---+-----------+---+---+---+-----------+----------Поля команды   (при номере бита, динамически задаваемом  в  регистре):