+----------------+----+--------++----------------+----+--------+
¦ (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----------------+----+--------LINK Связь и резервирование места в стеке LINK
-----------------------------------------------------------Операция: SP - 4 > SP; An > (SP);
SP > An; SP + d > SP
Синтаксис: LINK 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 ¦ 0 ¦ Регистр ¦
+---+---+---+---+---+---+---+---+---+---+---+---+---+---------+
¦ Смещение в формате слова ¦
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---------¬
¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ Регистр ¦
+---+---+---+---+---+---+---+---+---+---+---+---+---+---------+
¦ Смещение в формате длинного слова (старшее слово) ¦
+-------------------------------------------------------------+
¦ Смещение в формате длинного слова (младшее слово) ¦
L-------------------------------------------------------------Поля команды:
Поле Регистра задает адресный регистр, через который организуется связь.
Поле смещения определяет целое число в двоично-дополнительном коде, добавляемое к указателю стека.
ЗАМЕЧАНИЕ:
Команды LINK и UNLK могут быть использованы для организации и связи областей локальных данных и параметров при вложенных вызовах подпрограмм.
LSL , LSR Логический сдвиг LSL , LSR
---------------------------------------------------------Операция: Приемник сдвигается_на <количество_позиций> >
> Приемник
Синтаксис: LSd Dx,Dy
LSd #<данные>,Dy
LSd <иа>
где d - направление, R или L
Атрибуты: Размер=(Байт,Слово,Длинное слово)
Описание:
Биты Приемника сдвигаются в указанном направлении (L влево, R - вправо). Бит переноса (код условия С) устанавливается равным последнему вытесненному при сдвиге биту операнда. При сдвиге регистра данных <количество_позиций> задается одним из двух способов:
1. Непосредственно в команде, в диапазоне 1 - 8.
2. В регистре данных (содержимое регистра берется по модулю 64).
Размер операндов - байт, слово и длинное слово. Содержимое памяти может быть сдвинуто только на 1 бит; при этом размером операнда может быть только слово.
В случае команды LSL операнд сдвигается влево на <количество_позиций>. Вытесняемые старшие биты попадают одновременно в биты переноса и расширения (С и Х) кода условия, младшие биты заполняются нулями.
------¬ -------------¬ ------¬
¦ C <--T--+ Операнд <------+ 0 ¦
L------ ¦ L------------- L-----LSL: ¦
------¬ ¦
¦ X <--L-----В случае команды LSR операнд сдвигается вправо на <количество_позиций>. Вытесняемые младшие биты попадают одновременно в биты С и Х кода условия, старшие биты заполняются нулями.
-------¬ -------------¬ ------¬
LSR: ¦ 0 +-----> Операнд +--T---> C ¦
L------- L------------- ¦ L-----¦
¦ ------¬
L---> X ¦
L-----Коды условия:
X N Z V C
----T---T---T---T---¬
¦ * ¦ * ¦ * ¦ 0 ¦ * ¦
L---+---+---+---+---N 1, если результат отрицательный; иначе 0.
Z 1, если результат равен нулю; иначе 0.
V всегда 0.
C равен последнему вытесненному биту операнда. При
<количестве_позиций>=0 равен 0.
Х равен последнему вытесненному биту операнда. При
<количестве_позиций>=0 не изменяется.
Формат команды (для сдвига регистра):
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 ¦ 1 ¦ Регистр ¦
¦ ¦ ¦ ¦ ¦ство_позиц ¦ ¦ ¦ ¦ ¦ ¦ ¦
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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.