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

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

¦   (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----------------+----+--------UNLK        Связь при возврате                     UNLK

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

Синтаксис:      UNLK An

Атрибуты:       Размер не используется

Описание:

Значение указанного  адресного  регистра  помещается  в указатель  стека.  Затем  в  адресный регистр с вершины стека загружается длинное слово.

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

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

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

¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 1 ¦ 1 ¦ Регистр ¦

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

Поле Регистра определяет адресный регистр.

UNPK                   Распаковка                 UNPK

-----------------------------------------------------Операция:       Источник (упакованное двоично-десятичное)

+ поправка

> Приемник (распакованное двоично-десятичное)

Синтаксис:      UNPK -(Ax),-(Ay),#<поправка>

UNPK Dx,Dy,#<поправка>

Атрибуты:       Размер не используется

Описание:

При распаковке две двоично-десятичные  цифры  байта-Источника разъединяются и помещаются в младшие  полубайты двух байтов Приемника.  Старшие  полубайты  заполняются нулями.  Затем  Приемник преобразуются путем добавления

<поправки>. Коды условия не меняются.

Если оба операнда находятся  в  регистрах  данных,  регистр-Источник распаковывается, прибавляется <поправка>

из слова расширения и результат  помещается в  регистр-Приемник. Старшее слово Приемника не меняется.

Источник Dx

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

¦ U ¦ U ¦ U ¦ U ¦ U ¦ U ¦ U ¦ U ¦ a ¦ b ¦ c ¦ d ¦ e ¦ f ¦ g ¦ h¦

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

¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ a ¦ b ¦ c ¦ d ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ e ¦ f ¦ g ¦ h¦

L---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--и складывается с поправкой:

---------------------------------------------------------------¬

¦                 16 - битное слово расширения                 ¦

L--------------------------------------------------------------Результат помещается в Приемник Dy:

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

¦ V ¦ V ¦ V ¦ V ¦a' ¦b' ¦c' ¦d' ¦ W ¦ W ¦ W ¦ W ¦e' ¦f' ¦g' ¦h'¦

L---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--Если используется способ адресации операндов с  предекрементированием, две двоично-десятичные цифры байта Источника  разъединяются и помещаются в младшие полубайты двух байтов промежуточного результата. Старшие полубайты заполняются нулями. Затем добавляется <поправка>  из слова  расширения.  Полученные  два байта помещаются по адресу Приемника. Коды условия не меняются.

Источник

7   6   5   4   3   2   1   0

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

¦ a ¦ b ¦ c ¦ d ¦ e ¦ f ¦ g ¦ h ¦

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

(Ax) -->¦                               ¦

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

¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ a ¦ b ¦ c ¦ d ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ e ¦ f ¦ g ¦ h¦

L---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--и складывается с поправкой:

---------------------------------------------------------------¬

¦                 16 - битное слово расширения                 ¦

L--------------------------------------------------------------помещается в Приемник:

7   6   5   4   3   2   1   0

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

¦ V ¦ V ¦ V ¦ V ¦ a'¦ b'¦ c'¦ d'¦

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

¦ W ¦ W ¦ W ¦ W ¦ e'¦ f'¦ g'¦ h'¦

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

(Ay) -->¦                               ¦

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

¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦Регистр Ry ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦R/M¦Регистр Rx¦

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

¦                         Поправка                             ¦

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

Поле Регистра Ry  определяет регистр Приемника:

Если R/M=0, то регистр данных Dy

Если  R/M=1, то регистр адреса Ay для адресации с предекрементированием.

Поле R/M определяет способ адресации операндов:

0 - операция над регистрами данных

1 - операция над памятью.

Поле Регистра Rx  определяет регистр Источника:

Если R/M=0, то регистр данных Dx

Если  R/M=1, то регистр адреса Ax для адресации с предекрементированием.

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