Группа команд, которые может выполнять данный МП, называется его составом команд. Состав команд МП может содержать как малое число (восемь), так и большое число (200) основных команд. Составы команд не являются нормализованными. Это неудобство связано как с индивидуальным подходом к разработке, так и с различиями архитектуры и назначений МП.
Имеется много способов классификации команд одного состава. В этой главе согласно нормативам, предложенным научным обществом инженеров-электронщиков, мы изучим следующие команды: арифметические, логические, передачи данных, вызова подпрограмм, возврата из подпрограмм, прочие.
Элементарный МП будет представлен следующим составом арифметических команд: сложение, вычитание, инкрементирование, сравнение, отрицание.
Некоторые конкретные МП могут обладать другими арифметическими командами, такими, как сложение с переносом, вычитание с заемом, умножение и деление.
Элементарный МП наделяется следующими логическими командами: И, ИЛИ, ИЛИ ИСКЛЮЧАЮЩЕЕ, НЕ (отрицание), сдвиг вправо, сдвиг влево.
Некоторые МП, кроме того, наделены такими логическими командами, как арифметический сдвиг вправо, циклические сдвиги вправо и влево, циклические сдвиги вправо и влево с переносом и тестирование.
Наш же элементарный процессор всегда наделяется командами передачи данных: загрузки, размещения, перемещения, ввода, вывода.
Более сложный состав будет содержать команды обмена, сброса и инициализации. Что касается команд ветвления, они следующие: безусловный переход; переход, если нуль; переход, если не нуль; переход, если равенство; переход, если неравенство; переход, если положительно; переход, если отрицательно. Другие команды условных переходов, имеющиеся в некоторых микропроцессорах, могут зависеть от таких условий, как: больше или меньше, сдвиг или нет, переполнение или нет. Команды ветвления являются командами принятия решений.
Элементарный микропроцессор будет наделен командой вызова подпрограммы (обычно CALL—вызов), чтобы программа могла перейти к специальной группе команд, которые решают поставленную задачу. Все МП обладают командой безусловного вызова, а некоторые наделены командой условного вызова, например, CALL, если нуль; CALL, если не нуль; CALL, если положительно или не положительно, и т. д.
В конце выполнения подпрограммы МП должен иметь возможность возврата в точку отправления из начальной программы. Эта операция выполняется командой возврата. Эта команда обычно безусловна, но некоторые МП снабжены и условным возвратом.
Наконец, прочими командами элементарного МП будут: нет операции, поместить в стек, выйти из стека, ожидание, останов.
Возможны и другие команды: прерывания активизации или сброса, останова, десятичной коррекции.
Пользователи микропроцессорных систем встречаются с многочисленными способами выражения одних и тех же команд. Из этого множества приведем команду сложения двух чисел для микропроцессора Motorola 6800. Имя команды является активной формой глагола и называется операцией. В табл. 6.1 выполняемой операцией является сложение.
Таблица 6.1
Операция
Мнемоника
КОП
Символика (все обозначения регистров являются их содержимым)
Сложить
ADD A
8ВН
А+М®А
Пользователи работают часто с сокращенными формами выражения операции, которые являются обычно мнемоническими. В табл. 6.1 мнемоникой сложения является ADD А (отметим, что мнемоники всегда записываются большими буквами). Регистр команд и схема декодирования понимают только язык нулей и единиц. Код операции (КОП) является шестнадцатеричным представлением 8-разрядного двоичного кода, который заставляет МП выполнить эту команду. В табл. 6.1 КОП для МП Motorola 6800 для ADD А будет 8ВН (1000 10112). В колонке символики в табл. 6.1 показывается, что содержимое памяти (М) складывается с содержимым аккумулятором (А) в МП, стрелка указывает, что результат помещается в аккумулятор А.
На рис. 6.4 приведен пример использования команды сложения ADD А.
Рис. 6.4. Блок-схема команды сложения
Содержимое (А) аккумулятора (0001 11102) складывается с содержимым (М) памяти (0000 11112), сумма (0010 11012) помещается в аккумулятор (справа). Заметим, что содержимое ячейки памяти не изменилось, тогда как содержимое аккумулятора стало другим.