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

Синтаксис:      BFFFO <иа> {смещение:длина},Dn

Атрибуты:       Размер не задается

Описание:

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

Поле определяется смещением и длиной.  Смещение  задает начальный бит поля, а длина - количество бит поля.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ * ¦ 0 ¦ 0 ¦

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

Z       1, если все биты поля равны 0; иначе 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----------------------¬

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

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

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

¦ 0 ¦Регистр Dn ¦СМ ¦     Смещение      ¦ДЛ ¦     Длина        ¦

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

Поле Регистра Dn определяет регистр-Приемник.

Поле СМ определяет способ задания смещения:

0 - смещение задается в поле Смещения.

1 - биты [8:6] слова расширения задают регистр данных, содержащий смещение; биты [10:9] равны 0.

Поле  Смещение задает смещение в зависимости от поля СМ

следующим образом:

Если  СМ = 0,  поле Смещения содержит непосредственный операнд в диапазоне  0-31,  задающий  соответствующую величину смещения.

Если СМ = 1,  поле Смещения определяет регистр данных, содержащий смещение в диапазоне [ -(2**31); 2**31-1 ]

Поле ДЛ определяет способ задания длины:

0 - длина битового поля задается непосредственно в команде в поле Длины.

1 - биты [2:0] слова расширения задают регистр данных, содержащий длину; биты [4:3] равны 0.

Поле Длина задает длину в зависимости от поля ДЛ:

Если ДЛ = 0, в поле Длины содержится  непосредственный операнд в диапазоне 0,1,...31, задающий значение  длины, равное соответственно 32,1,...31.

Если ДЛ = 1, поле Длины определяет регистр данных, содержащий  величину, которая будучи взята по модулю 32, принимает значение 0,1,...31 и  задает  соответственно значение длины, равное 32,1,...31.

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

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

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

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

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

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

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

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

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

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

¦      (An)+     ¦ -  ¦   -    ¦¦                ¦    ¦        ¦

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

¦     -(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----------------+----+--------BFINS             Запись в битовое поле            BFINS

-------------------------------------------------------Операция:       Dn  > <битовое поле> В Приемнике

Синтаксис:      BFINS Dn,<иа> {смещение:длина}

Атрибуты:       Размер не задается

Описание:

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

Поле определяется смещением и длиной.  Смещение  задает начальный бит поля, а длина - количество бит поля.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ * ¦ 0 ¦ 0 ¦

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

Z       1, если все биты поля равны 0; иначе 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----------------------¬

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

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

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

¦ 0 ¦Регистр Dn ¦СМ ¦     Смещение      ¦ДЛ ¦     Длина        ¦

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

Поле Регистра Dn определяет регистр-Приемник.

Поле СМ определяет способ задания смещения:

0 - смещение задается в поле Смещения.

1 - биты [8:6] слова расширения задают регистр данных, содержащий смещение; биты [10:9] равны 0.

Поле  Смещение задает смещение в зависимости от поля СМ

следующим образом:

Если  СМ = 0,  поле Смещения содержит непосредственный операнд в диапазоне  0-31,  задающий  соответствующую величину смещения.