Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
409
Добавлен:
06.01.2022
Размер:
33.47 Mб
Скачать

21.3. Набор команд

В этом разделе приведен набор команд микропроцессора МС 6800. Он может выполнять 72 различные операции, большинство из которых можно использовать с различными операндами. Всего с учетом разнообразных способов адресации получается набор из 197 инструкций.

21.3.1. ОПЕРАЦИИ ЗАПИСИ

В табл. 21.3 перечислены операции, обеспечивающие обмен данными между различными регистрами. Здесь использованы следующие обозначения:

A-содержимое аккумулятора А;

В-содержимое аккумулятора В;

[М]-содержимое ячейки памяти с адресом М;

Х-содержимое индексного регистра;

Хн-старший байт содержимого индексного регистра;

ХL-младший байт содержимого индексного регистра;

С-бит, передаваемый в регистр признаков.

21.3.2. АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ

В табл. 21.4 приведены команды, реализующие арифметические и логические (булевы) операции. Логические операции выполняются независимо над каждым битом слова данных и выдаются в соответствующий разряд результата. Рассмотрим, например, операцию

Набор команд для выполнения арифметических операций в обычных микропроцессорах очень ограничен. Он включает команды сложения, вычитания и перевода в дополнительный код. Сложение можно выполнять как в двоично-десятичном коде, так и с использованием команды десятичной коррекции DAA (Decimal Adjust). В последнем случае после окончания операции сложения выполняется коррекция, рассмотренная в разд. 19.5.4. Более сложные арифметические операции составляют в программах пользователя из указанных основных операций. Только в микропроцессорах новых типов предусмотрены команды умножения и деления.

В качестве примера составим программу сложения двух 16-разрядных чисел. Первое слагаемое должно быть записано в ячейки памяти 0001 и 0002, причем старший байт-в ячейке 0001, а младший-в ячейке 0002. Второе слагаемое записывается в ячейки 0003 и 0004. Результат необходимо записать в ячейки 0005 и 0006.

На первом шаге осуществляется сложение младших байтов двоичных чисел, т.е. содержимого ячеек 0002 и 0004. Так как не нужно учитывать перенос, используется команда ADD A. Результат записывается в ячейку 0006. На втором шаге производится сложение старших байтов с помощью команды ADC А. В этом случае необходимо учитывать возможный перенос, полученный в результате предыдущей операции сложения. Он считывается из регистра признаков ALU, Результат запоминается в ячейке 0005. Составленная программа приведена в табл. 21.5.

Эта программа способна также производить сложение двух 4-разрядных двоично-десятичных чисел. Для этой цели обе команды отсутствия операций NOP заменяются командами десятичной коррекции DAA.

21.3.3. КОМАНДЫ ПЕРЕХОДА. РЕГИСТР ПРИЗНАКОВ

Важным преимуществом микропроцессора является возможность выполнения разнообразных логических переходов в программе. Для этого проверяется содержимое различных разрядов регистра признаков (Condition Code Register). Регистр признаков имеет 8 разрядов. Два старших разряда (шестой и седьмой) содержат константу, равную 1. Остальные признаки располагаются следующим образом:

ОБОЗНАЧЕНИЯ:

С-признак переноса (Carry);

V-признак переполнения при операциях с числами в дополнительном двоичном коде (Overflow);

Z-признак нуля (Zero);

N- признак знака минус при получении дополнительного двоичного кода отрицательного числа (Negative);

I- признак прерывания (Interrupt);

H-дополнительный перенос из третьего разряда (Hatf Carry).

При выполнении операций обращения к памяти или при вычислениях отдельные признаки устанавливаются либо в единичное, либо в нулевое состояние. Если, например, число загружается в аккумулятор, причем седьмой разряд числа равен единице, то признак N устанавливается в 1, так как число в дополнительном коде интерпретируется как отрицательное. Если при сложении или вычитании известно условие переполнения для дополнительного двоичного кода, описанного в разд. 19.5.6, то появляется признак переполнения V. Признак нуля устанавливается в том случае, если в операнде содержимое всех разрядов от 0 до 7 равно нулю.

В ряде операций результат выдается в виде признаков состояния. Если, например, необходимо определить, что число в регистре А больше, чем число в регистре В, то с помощью команды вычитания SBA можно найти разность А — В и оценить признак знака N. Если этот признак равен 1, то А < В. При этом результат вычитания записывается в регистр А. Если результат вычитания не имеет значения, то вместо команды вычитания SBA целесообразнее применить команду сравнения СВА. Это дает возможность установить признак знака без запоминания значения разности. После окончания операции сравнения операнды остаются по-прежнему в регистрах А и В.

Все команды, -при которых не запоминается никакого результата, кроме признака, перечислены в табл. 21.6.