В машинном коде команда занимает один, два или три байта в зависимости от типа адресации.
Команды выполняются за один, два или четыре (умножение и деление) машинных цикла.
Запись команд в машинных кодах для человека неудобна. Кроме того, машинные команды, отличающиеся младшими битами или вторым байтом, выполняют одинаковые действия над разными ячейками памяти. Поэтому для записи команд микропроцессоров была придумана система мнемонических обозначений. В записи команды микропроцессора сначала ставится мнемоническое обозначение кода операции, затем указывается ячейка памяти — приемник результата выполнения операции и, наконец, источник данных для выполнения операции. Например, в команде
Е535 MOV A, 35h
символы MOV обозначают операцию копирования, второй операнд
Мнемоническое обозначение кода операции отделяется от операндов одним или несколькими символами пробела пли табуляции, а операнды отделяются друг от друга запятыми. При этом между операндами допустимо использование символов пробела или табуляции, которые могут потребоваться для более наглядной записи команды.
Если операция требует для выполнения двух источников и одного приемника результата операции (например, команда сложения ADD или вычитания SUBB), то первый операнд является одновременно и источником и приемником результата операции. Например, в команде
2535 ADD A, 35h
символы ADD обозначают операцию сложения двух чисел, данные будут взяты из ячейки памяти с шестнадцатеричным адресом 35 и аккумулятора, а результат будет помещен в аккумулятор вместо старого значения этого регистра.
В табл. П1 приведены мнемонические обозначения машинных команд, влияющих на значения флагов регистра слова состояния программы PSW, а в табл. П2 приведены обозначения и символы, используемые при описании команд микроконтроллеров семейства MCS-51.
Команды микроконтроллера условно можно разбить на пять групп:
— арифметические команды;
— логические команды с байтовыми переменными;
— команды передачи данных;
— команды битового процессора;
— команды ветвления программ и передачи управления ОЭВМ.
Арифметические команды
В наборе команд микроконтроллера имеются следующие арифметические операции:
— сложение — ADD;
— сложение с учетом флага переноса — ADDCC;
— вычитание с заемом из флага переноса — SUBB;
— инкрементирование (увеличение на 1) — INC;
— декрементирование (уменьшение на 1) — DEC;
— десятичная коррекция — DA;
— умножение — MUL;
— деление — DIV.
Действия производятся над целыми беззнаковыми 8-разрядными числами. Арифметические операции в рассматриваемой системе команд могут быть выполнены только над содержимым регистра-аккумулятора.
При операции умножения содержимое аккумулятора
В случае выполнения операции деления целое от деления помещается в аккумулятор
Логические команды с байтовыми переменными
Система команд рассматриваемого микроконтроллера позволяет реализовать следующие логические операции:
— логическое «И» — ANL;
— логическое «ИЛИ» — ORL;
— исключающее «ИЛИ» — XRL.
Логические операции могут выполняться только над аккумулятором или над портами ввода-вывода.
Существуют логические операции, которые выполняются только на аккумуляторе:
— сброс всех восьми разрядов
— инвертирование всех восьми разрядов
— циклический сдвиг влево и вправо без учета флага переноса — RL
— циклический сдвиг влево и вправо с учетом флага переноса — RLC
— обмен местами старшей и младшей тетрад внутри аккумулятора — SWAP
Команды пересылки данных
Как было рассмотрено ранее, арифметические и логические команды могут быть выполнены только над содержимым регистра-аккумулятора, поэтому исключительное значение в системе команд приобретают команды пересылки данных. С помощью этих команд можно скопировать содержимое любой ячейки памяти в регистр-аккумулятор или наоборот скопировать содержимое аккумулятора в любую ячейку памяти.
Так как в микроконтроллере присутствуют три независимых области памяти, то для обращения к ним введены различные команды:
— копирование данных во внутреннем ОЗУ — MOV;
— обмен данными аккумулятора с внутренним ОЗУ — XCH, XCHO;
— копирование из внешней памяти данных — MOVX;
— копирование данных из памяти программ — MOVC.
Рассмотрим несколько примеров использования команд пересылки данных.