11.02. Система команд и способы адресации
В табл. 11.1 приведен полный набор команд МП 68000. Чтобы образовать правильный оператор (команду) языка ассемблера, следует указать операнды (с помощью одного из 12 режимов адресации) и тип данных (байтов, слово или длинное слово). На языке ассемблера фирмы Motorola оператор выглядит следующим образом:
ОПЕРАЦИЯ. размер источник, приемник
Здесь ОПЕРАЦИЯ берется из табл. 11.1, размер есть В, W или L (байт, слово или длинное слово соответственно), а источник и приемник могут представлять регистры, непосредственные константы или ячейки памяти. Ниже приведено несколько примеров с указанием способов адресации.
Таблица 11.1. Набор команд МП 68000/8
Операция · Описание
Арифметические
ABCDСложение упакованных двоично-десятичных чисел
ADDСложение
ASLАрифметический сдвиг влево
ASRАрифметический сдвиг вправо
CLRОчистка операнда
DIVSДеление (знаковое)
DIVUДеление (беззнаковое)
EXTРасширение знака
LSLЛогический сдвиг влево
LSRЛогический сдвиг вправо
MOVEПересылка
MULSУмножение (знаковое)
MULUУмножение (беззнаковое)
NBCDОтрицание упакованного двоично-десятичного числа
NEGОтрицание
SBCDВычитание упакованного двоично-десятичного числа
SUB Вычитание
Логические
ANDЛогическое И
BCHGПроверка и изменение бита
BCLRПроверка и очистка бита
BSETПроверка и установка бита
BTSTПроверка бита
CHKПроверка регистра на границы
CMPСравнение
EORИсключающее ИЛИ
EXGОбмен регистров
NOTПобитовое дополнение
ORЛогическое ИЛИ
RESETВозбуждение линии RESET
ROL Циклический сдвиг влево без расширения
RORЦиклический сдвиг вправо без расширения
ROXLЦиклический сдвиг влево с расширением
ROXRЦиклический сдвиг вправо с расширением
Scc 1)Установить байт по условию
SWAPОбмен половин регистра
TASПроверка и установка операнда
TSTПроверка операнда и установка флагов
Управления
Всс 1)Условный переход
BRAБезусловный переход (относительный)
BSRПереход на подпрограмму (относительный)
DBcc 1)Проверка, декремент и переход
JMPБезусловный переход (7 режимов)
JSRПереход на подпрограмму (7 режимов)
LEAЗагрузка эффективного адреса
LINKПодсоединение стека
NOPХолостая команда
PEAЗагрузка в стек эффективного адреса
RTEВозврат из исключения
RTRВозврат, восстановление кодов условий
RTSВозврат из подпрограммы
STOPОстанов
TRAPЛовушка (векторизованное исключение)
TRAPVЛовушка по переполнению
UNLK Отсоединение стека
Коды условий ("сс")
ССПеренос сброшен
CSПеренос установлен
EQРавенство нулю
FНикогда не истина 2)
GEБольше или равно нулю
GTБольше нуля
HIВыше
LEМеньше или равно нулю
LSНиже или равно
LTМеньше нуля
MIМинус
NEНе равно нулю
PLПлюс
TВсегда истина 2)
VCПереполнение сброшено
VSПереполнение установлено
____
1) См. «Коды условий».
2) Не используется в командах Вcс; вместо « ВТ» используйте BRA.
MOVE.W (непосредственная,
# $FFFF,D0 регистровая)
MOVE.B (А0), (А1) (косвенная, косвенная)
ADD.L D5, (А2) + (прямая, косвенная с постинкрементом)
BTST.B #2$C0000 (непосредственная, абсолютная длинная)
В первом примере устанавливаются в 1 все 16 бит регистра D0 (символ «$» обозначает «шестнадцатиричное», а «#» указывает на «непосредственную» константу); вторая команда копирует байт из ячейки памяти, адрес которой находится в А0, в ячейку памяти, адрес которой находится в А1; третья прибавляет 32-разрядное знаковое целое к 4-байтовому («длинному») целому, которое начинается в памяти с байта, адресуемого через А2, после чего содержимое А2 увеличивается на 4; последняя команда проверяет бит 2 в ячейке памяти С0000Н, устанавливая соответствующим образом флаг нуля Z (для последующей команды условного перехода). Заметьте, что операнды cледуют в порядке — источник, приемник, что противоположно нотации МП 8086.
Читать дальше