1. Операции пересылки и непосредственной загрузки. При выполнении этого вида операций могут использоваться одно-, двух-, и трехбайтовые команды. Наиболее многочисленный класс операций – команды однобайтовые. Возможно использование семи регистров общего назначения, ячеек оперативной памяти, стеков. Производится пересылка или непосредственная загрузка одного или пары регистров.
· Операции пересылки. Производится пересылка данных из одного регистра в другой.
Пример: СßB - содержимое регистра В пересылается в регистр С. Мнемонически это записывается MOV C,B
В случае использования пар регистров HL ячейка оперативной памяти рассматривается как отдельный регистр общего назначения.
Пример: Dß[(HL)] º DßM – пересылка в регистр D содержимого пары регистров HL (M – ячейка оперативной памяти, адресом которой служит содержимое пары регистров HL)
· Непосредственная загрузка регистра.
Еß5D16 MVI E,5D
· Непосредственная загрузка пары регистров
DEß5D4F LXI D, 5D4F
2. Арифметические и логические операции. Все операции данного класса команд производятся исключительно через аккумулятор. Операции производятся как с данными, хранящимися в регистрах общего назначения, так и с данными, которые следуют в командах. Сложение 2-х байтовых чисел возможно только арифметически.
· Логическое сложение
+1011 АßAÚD ORA A,D
0111 AßAÚ<B2> ORI A,<B2>
Арифметическое сложение
+1011 AßA+D ADD A,D
0111 AßA+<B2> ADI A,<B2>
· Сложение по модулю два
X1
X2
Y
AßA"D XRA A,D
AßA"<B2> XRI A,<B2>
· Логическое умножение
Aß A Ù B ANA A,B
Aß А Ù<B2> ANI A, <B2>
AßА+D+TC+1011
0111
TC
1
3. Операции циклического сдвига
Циклические сдвиги возможны исключительно в аккумуляторе, при этом кодовая комбинация сдвигается либо влево, либо вправо
a) Сдвиг вправо без учета переноса
Мнемонически такая операция обозначается RRC.
Содержимое каждого разряда аккумулятора передается в соседний младший разряд (DißDi+1), содержимое младшего разряда передается в старший разряд (D7ßD0) и одновременно в триггер переноса (ТСßD0).
b) Сдвиг вправо с учетом переноса.
Мнемонически такая операция обозначается RAR.
Отличие от сдвига без переноса в том, что триггер переноса передает свое содержимое в старший разряд аккумулятора (D7ßТС) и принимает выданное из аккумулятора содержимое младшего разряда (ТСßD0).
c) Сдвиг влево без учета переноса.
Мнемонически такая операция обозначается RLC.
Содержимое каждого разряда аккумулятора передается в соседний старший разряд (Di+1ßDi), содержимое старшего разряда переносится в младший разряд (D0ßD7) и одновременно в триггер переноса (ТСßD7).
d) Сдвиг влево с учетом переноса.
Мнемонически такая операция обозначается RАL.
Отличие от сдвига без переноса состоит в том, что триггер переноса ТС вводится в замкнутый контур, в котором осуществляется сдвиг; триггер переноса передает свое содержимое в младший разряд аккумулятора (D0ßТС) и принимает выдвигаемое из аккумулятора содержимое старшего разряда (ТСßD7).
4. Положительное и отрицательное приращение регистра или пары регистров.
Увеличение (уменьшение) содержимого регистра необходимо для организации циклических операций и для обращения к ячейкам оперативной памяти (модификация адреса).
ВßВ+1 – положительное приращение регистра. Мнемонически это будет INP B.
СßС-1 – уменьшение содержимого регистра С. Мнемонически это будет DCP C.
Возможно положительное или отрицательное приращение содержимого пары регистров:
HLßHL+1 - INX H.
BCßBC+1 - INX B.
DEßDE-1 - DCX D.
5. Операции условных и безусловных переходов.
Условные переходы позволяют организовать ветвящиеся программы. Условные переходы выполняются по значению признаков, хранящихся в регистре признаков (Всего их 5 – TZ, TS, TC, TP, TV). Каждый из этих признаков может принимать два значения – 0 и 1, – следовательно, всего можно организовать 10 условных переходов. Кроме того, имеется возможность перейти в любую точку программы (Мi) с помощью операции безусловного перехода (команда JMP Мi). Таким образом, имеется 11 команд условных и безусловных переходов, причем команды эти – трехбайтные.
Примеры команд условных переходов:
По признаку TZ: JNZ Mi – если TZ=0;
JZ Mi – если TZ=1;
По признаку TС: JNС Mi – если TС=0;
JС Mi – если TС=1;
По признаку TS: JNS Mi – если TS=0;
JS Mi – если TS=1;
6. Команды ввода/вывода.
Ввод (вывод) сигналов в (из) микропроцессора осуществляется исключительно через аккумулятор с помощью двухбайтовых команд.
1-ый байт – код операции, 2-ой байт – номер устройства ввода/вывода (УВВ). Т.к. восьмиразрядная кодовая комбинация может содержать 256 состояний, то имеется возможность опрашивать 256 устройств ввода и вывода.
Пример команд ввода/вывода:
Ввод в аккумулятор сигнала с устройства ввода №5:
АßУВВ 5 - IN 5.
Вывод сигнала из микропроцессора через устройство вывода №2:
УВ 2 ß А - OUT 2.
7. Прочие операции.
В микропроцессоре можно производить еще множество операций, например:
Res – сброс;
HLT – остановка – вызывает прекращение выполнения программы и переход в состояние останова;
Условие задачи: Имеется три числа, хранящиеся в ОЗУ в соседних ячейках. Адрес первого числа 7F5D. Все числа кодированы прямым кодом (положительные). Необходимо первые два числа сложить, а третье вычесть из полученной суммы. Результат вывести через устройство вывода №1.
Пример 2: Программирование ветвящихся участков алгоритма.
Условие задачи: Имеется 2 массива, каждый из двух чисел. Адрес первого числа первого массива – 7F5D, адрес первого числа второго массива – 6F4E. Необходимо сложить элементы первого массива и в зависимости от результата переноса ТС произвести следующие операции:
ü Если ТС=0, то элементы второго массива сложить между собой и результат вывести на устройство вывода №1, а на устройство вывода №2 вывести значение FFHEX;
ü Если ТС=1, то из первого элемента второго массива вычесть второй, результат, как и в первом случае, вывести на устройство вывода №1, а на устройство вывода №5 вывести значение 00HEX;