- •Основы построения микропроцессорных систем
- •Основные определения и общие сведения
- •Типы информационного обмена
- •Параллельный обмен
- •Последовательный обмен
- •Протоколы обмена
- •1.3 Особенности применения цифровых микросхем
- •1.4 Структурные принципы микропроцессорных систем
- •Общая структура
- •Управление чтением и записью
- •Временные диаграммы чтения и записи
- •Подключение памяти и устройств ввода-вывода
- •Типы запоминающих устройств
- •Основные устройства микропроцессорной системы
- •Центральный процессор
- •Микропроцессор
- •Структура
- •Обработка команд
- •Временные диаграммы машинных циклов микропроцессора при чтении и записи
- •Система команд
- •Дешифратор адреса
- •Запоминающие устройства
- •Устройства ввода-вывода
- •Устройство звуковой сигнализации
- •Программируемый параллельный интерфейс
- •Универсальный синхронно-асинхронный приемопередатчик
- •Программируемый интервальный таймер
- •Программируемый контроллер приоритетных прерываний
- •Контроллер прямого доступа к памяти
- •Устройство индикации
- •Развитие архитектуры микропроцессорных систем
- •Технические требования
- •Сегментная модель памяти
- •Непрерывная модель памяти
- •Виртуальная адресация
- •Области оперативной памяти
- •Список литературы
- •Оглавление
- •1. Основы построения микропроцессорных систем 3
- •1. Основные устройства микропроцессорной системы 27
- •1. Развитие архитектуры микропроцессорных систем 76
Система команд
Каждая команда микропроцессора представляет собой двоичный код, однако при программировании обычно пользуются буквенно-цифровым обозначением команд, называемым мнемокодом. В целях систематизации программирования совокупность командных кодов классифицирована по следующим основным группам:
пересылки данных;
ввода-вывода информации;
арифметических и логических действий;
переходов к другим участкам программы и подпрограммам.
Детальное описание всех команд, входящих в ту или иную группу, приводится в справочных руководствах по программированию микропроцессоров. Ниже будут рассмотрены только некоторые команды, относящиеся к той или иной группе.
Команды пересылки реализуют обмен информацией между микропроцессором и памятью, осуществляя чтение или запись данных. Так по команде, имеющей мнемокод 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. Далее всякий раз выполнение основной программы будет начинаться с этой метки.