Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры.doc
Скачиваний:
12
Добавлен:
24.11.2019
Размер:
9.53 Mб
Скачать
      1. Система команд

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

  • пересылки данных;

  • ввода-вывода информации;

  • арифметических и логических действий;

  • переходов к другим участкам программы и подпрограммам.

Детальное описание всех команд, входящих в ту или иную группу, приводится в справочных руководствах по программированию микропроцессоров. Ниже будут рассмотрены только некоторые команды, относящиеся к той или иной группе.

Команды пересылки реализуют обмен информацией между микропроцессором и памятью, осуществляя чтение или запись данных. Так по команде, имеющей мнемокод 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.

В начале программного кода в регистр SP производится запись адреса вершины стека. В данном случае в стеке сохраняется значение регистра IP, записываемое туда при выполнении команды CALL TIME, изменяющей затем содержимое этого регистра для перехода к метке TIME, с которой начинается подпрограмма. В подпрограмме организован программный цикл, охватывающий команды DCX D, MOV A, D, ORA E и JNZ CYCLE, выполняющийся до тех пор, пока содержимое аккумулятора не станет равно нулю. При нулевом значении аккумулятора цикл закончится и выполнение подпрограммы продолжит команда RET, которая извлечет из стека прежнее значение IP, указывающее на команду, следующую после CALL TIME. Таким образом произойдет возврат в основную программу к команде JMP START, организующей программный цикл, начинающийся с метки START. Далее всякий раз выполнение основной программы будет начинаться с этой метки.