В микропроцессоре также имеются: указатель стека (фактически их два, но в каждый данный момент активен только один), программный счетчик 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
Возбуждение линии RESETROL
Циклический сдвиг влево без расширения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)
См. «Коды условий».