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