В микропроцессоре также имеются: указатель стека (фактически их два, но в каждый данный момент активен только один), программный счетчик PC (именуемый в МП 8086/8 «указатель команд») и регистр состояния SP. Последний содержит флаги (нуля, переноса, переполнения и др.), а также маску прерываний и биты режима.
Память и ввод-вывод. В отличие от МП 8086/8 в процессорах 68000 не предусмотрены отдельные сигналы магистрали ввода-вывода и в их системе команд отсутствуют команды ввода-вывода типа IN и OUT. Ввод-вывод осуществляется так же, как и обращение к памяти, с использованием адресов полной длины и стробирующих сигналов. Для подключения порта ввода-вывода вам следует декодировать адресные линии и сделать так, чтобы регистры ваших портов выглядели, как несуществующая память. Такой метод называется
Преимущество отображения ввода-вывода на пространство памяти заключается в том, что для операций над регистрами портов можно использовать все команды, предназначенные для работы с памятью. Специальные команды IN/OUT МП 8086/8 заменяет команда MOVE; кроме этого, непосредственно над содержимым портов можно выполнять операции арифметические (сложения, вычитания, циклического сдвига, сравнения, проверки), логические (И, ИЛИ), а также над битами (установка бит, проверка бит). Единственный недостаток отображения ввода-вывода на пространство памяти заключается в необходимости декодировать много адресных линий; практически здесь не возникает трудностей, поскольку при большом адресном пространстве и малом числе портов ввода-вывода нет необходимости декодировать полный адрес (примеры см. ниже).
В табл. 11.1 приведен полный набор команд МП 68000. Чтобы образовать правильный оператор (команду) языка ассемблера, следует указать операнды (с помощью одного из 12 режимов адресации) и тип данных (байтов, слово или длинное слово). На языке ассемблера фирмы Motorola оператор выглядит следующим образом:
Здесь ОПЕРАЦИЯ берется из табл. 11.1, размер есть В, W или L (байт, слово или длинное слово соответственно), а источник и приемник могут представлять регистры, непосредственные константы или ячейки памяти. Ниже приведено несколько примеров с указанием способов адресации.
Операция · Описание
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 Циклический сдвиг вправо с расширением
Scc1) Установить байт по условию
SWAP Обмен половин регистра
TAS Проверка и установка операнда
TST Проверка операнда и установка флагов
Всс1) Условный переход
BRA Безусловный переход (относительный)
BSR Переход на подпрограмму (относительный)
DBcc1) Проверка, декремент и переход
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)См. «Коды условий».