Каждая команда микропроцессора представляет собой двоичный код, однако при программировании обычно пользуются буквенно-цифровым обозначением команд, называемым мнемокодом. В целях систематизации программирования совокупность командных кодов классифицирована по следующим основным группам:
пересылки данных;
ввода-вывода информации;
арифметических и логических действий;
переходов к другим участкам программы и подпрограммам.
Детальное описание всех команд, входящих в ту или иную группу, приводится в справочных руководствах по программированию микропроцессоров. Ниже будут рассмотрены только некоторые команды, относящиеся к той или иной группе.
Команды пересылки реализуют обмен информацией между микропроцессором и памятью, осуществляя чтение или запись данных. Так по команде, имеющей мнемокод MVI А, Х, микропроцессор выполнит чтение байта Х из ячейки памяти в аккумулятор. Ячейка, где хранится байт Х, является следующей после той, в которой записан код операции данной команды. При ее выполнении текущий адрес в регистре IP получит приращение на число байтов командного кода — таким образом программа будет продолжена с команды, следующей за MVI А, Х. Командные коды MOV A, M и MOV M, А обеспечат соответственно чтение и запись содержимого аккумулятора в ячейку, адрес которой хранится в регистрах H, L. При завершении этих команд содержимое IP будет указывать на очередную команду также, как и при выполнении MVI А, Х. Считывание командного кода, а также процессы чтения и записи данных синхронизируются сигналами и .
Команды ввода-вывода отличаются от команд пересылки тем, что осуществляют информационное взаимодействие микропроцессора с ячейками УВВ, называемых портами. В мнемокодах этих команд указывают адрес ячейки, называемый номером порта, с которой производят обмен. Например по команде OUT F8 содержимое аккумулятора будет записано в ячейку с адресом 00F8h, а по команде IN F8 микропроцессор считает данные из этой ячейки в аккумулятор. В этом случае синхронизация считывания кодов команд осуществляется сигналом , а чтение и запись данных — и .
Арифметические и логические команды производят одноименные действия с данными. Например при выполнении команды ADD С произойдет арифметическое сложение содержимого аккумулятора и регистра С, а результат суммы снова будет помещен в аккумулятор. Команда ОRA D реализует логическую функцию поразрядного ИЛИ данных в аккумуляторе и регистре D, результат выполнения которой также будет записан в аккумулятор.
Команды перехода путем изменения адресной информации в регистре IP осуществляют:
организацию циклического выполнения одной или нескольких команд программы;
переход от основной программы к подпрограмме и возврат из нее снова в основную программу.
В мнемокодах этих команд указывают адреса переходов к участкам программы, называемые метками. Ниже приведена программа, содержащая циклы и подпрограмму, назначением которых является поочередный вывод байта из регистра B в порты с номерами F8 и F9.
Программа 2.1
МЕТКА
| МНЕМОКОД
| КОММЕНТАРИЙ
|
| LXI SP, 0900
| Начало программы.
Запись в регистр SP адреса вершины стека 0900h.
|
| MVI B, 63
| Запись в регистр В числа 63h.
|
| MVI C, 01
| Запись в регистр С числа 01h.
| START:
| MOV A, C
| Начало цикла START.
Запись в аккумулятор содержимого регистра С.
|
| OUT F8
| Вывод содержимого аккумулятора в порт с адресом 00F8h.
|
| RLC
| Циклический сдвиг содержимого аккумулятора влево (удвоение результата).
|
| MOV C, A
| Запись содержимого аккумулятора в регистр С.
|
| MOV A, B
| Запись в аккумулятор содержимого регистра В.
|
| OUT F9
| Вывод в порт с адресом 00F9h значения в аккумуляторе.
|
| CALL TIME
| Вызов подпрограммы TIME.
|
| JMP START
| Переход к началу цикла.
Конец цикла START.
Конец программы.
|
Подпрограмма 2.1
МЕТКА
| МНЕМОКОД
| КОММЕНТАРИЙ
| TIME:
| LXI D, AFF0
| Начало подпрограммы TIME. Запись числа AFF0h в регистровую пару DE.
| CYCLE:
| DCX D
| Начало цикла CYCLE. Уменьшение содержимого регистра D на 1 (декремент).
|
| MOV A, D
| Запись в аккумулятор содержимого регистра D.
|
| ORA E
| Поразрядное логическое ИЛИ аккумулятора и регистра Е. Результат помещается обратно в аккумулятор.
|
| JNZ CYCLE
| Если результат в аккумуляторе не равен 0 (значение результата определяется по флагу Z регистра F), то перейти к началу цикла CYCLE, в противном случае перейти к следующей команде.
Конец цикла CYCLE.
|
| RET
| Возврат в основную программу.
Конец подпрограммы TIME.
|
|