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

¦A7¦A6¦A5¦A4¦A3¦A2¦A1¦A0¦D7¦D6¦D6¦D4¦D3¦D2¦D1¦D0¦

L--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--Для адресации  с  предекрементированием:  соответствие битов маски регистрам выглядит так:

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

¦D0¦D1¦D2¦D3¦D4¦D5¦D6¦D7¦A0¦A1¦A2¦A3¦A4¦A5¦A6¦A7¦

L--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--ЗАМЕЧАНИЕ:

При  пересылке  "регистр-память"  затрачивается  лишний цикл  шины на считывание элемента Источника, следующего за элементом, считанным в последний регистр группы.

MOVEP  Пересылка данных периферийного устройства   MOVEP

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

Синтаксис:      MOVEP  Dx,(d,Ay)

MOVEM  (d,Ay),Dx

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

Описание:

Команда  позволяет  пересылать  байты регистра данных в чередующиеся байты памяти, начиная с указанного адреса, с приращением адреса на 2, а также  выполнять  обратную операцию.  Первым  пересылается  старший байт регистра, последним - младший.  Адрес  памяти  задается  способом косвенной  адресации через адресный регистр с 16-битным смещением. Команда предназначена для работы с 8-битными периферийными устройствами на 16-битной шине. При  четном  адресе передача будет идти по старшей половине шины, при нечетном - по младшей. Для 8- и 32-битной  шины будут пересылаться лишние байты (чередующиеся с  байтами, обрабатываемыми командой).

Пример: пересылка при четном адресе. Размер - длинное слово.

Расположение байтов в регистре

31          24 23        16 15         8 7           0

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

¦    Старший   ¦ Средний-ст.¦ Средний-мл.¦   Младший   ¦

L--------------+------------+------------+-------------Расположение байтов в памяти (в порядке возрастания адресов)

15         8 7          0

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

¦  Старший   ¦            ¦

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

¦ Средний-ст.¦            ¦

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

¦ Средний-мл.¦            ¦

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

¦  Младший   ¦            ¦

L------------+------------Пример: пересылка при нечетном адресе. Размер - слово.

Расположение байтов в регистре

31          24 23        16 15         8 7           0

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

¦              ¦            ¦   Старший  ¦   Младший   ¦

L--------------+------------+------------+-------------Расположение байтов в памяти (в порядке возрастания адресов)

15         8 7          0

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

¦            ¦   Старший  ¦

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

¦            ¦   Младший  ¦

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

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

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

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

¦   ¦   ¦   ¦   ¦           ¦  операции ¦   ¦   ¦   ¦          ¦

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

¦                             Смещение                         ¦

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

Поле Регистра Dx задает регистр данных, в  который  или из которого осуществляется пересылка.

Поле Моды операции определяет направление  пересылки  и размер операндов:

100 - пересылка слова из памяти в регистр.

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

110 - пересылка слова из регистра в память.

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

Поле  Регистра  Ay  задает регистр адреса, используемый при косвенной адресации с 16-битным смещением.

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

MOVEQ        Пересылка непосредственных данных         MOVEQ

в диапазоне 1-8

-----------------------------------------------------------Операция:       Непосредственные данные  > Приемник

Синтаксис:      MOVEQ #<данные>,Dn

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

Описание:

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

Данные, содержащиеся в 8-битном поле операционного слова, при пересылке дополняются распространением знака до длинного слова.

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

X   N   Z   V   C

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

¦ - ¦ * ¦ * ¦ 0 ¦ 0 ¦

L---+---+---+---+---N       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-----------------------------¬

¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦  Регистр  ¦ 0 ¦          Данные             ¦

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

Поле Регистра задает загружаемый регистр данных.

Поле Данных содержит 8-битные данные, загружаемые в регистр с распространением знака.

MOVES  Пересылка между адресными пространствами      MOVES

(привилегированная команда)

---------------------------------------------------------Операция:       Если  режим супервизора, то    Rn  > Приемник [DFC] или

Источник [SFC]  > Rn

иначе TRAP

Синтаксис:      MOVES Rn,<иа>

MOVES <иа>,Rn

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

Описание:

Команда  позволяет  пересылать  байт, слово или длинное слово из регистра общего назначения по адресу в  адресном  пространстве,  определяемом  регистром модификации функционального кода приемника (DFC). Команда позволяет также пересылать байт, слово или длинное слово  из  адресного пространства, определяемого регистром модификации функционального кода источника (SFC), в регистр общего назначения.

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