- •Введение
- •Устройство и принцип работы микропроцессорного контроллера
- •Основные понятия и определения
- •Форматы данных
- •Команда
- •Код операции
- •Способы указания адреса
- •Система команд
- •3.1. Обозначения в описаниях команд
- •3.2. Команды перемещения данных
- •Команды арифметических операций
- •Команды логических операций
- •Команды операций над битами
- •Команды передачи управления
- •Работа над заданием
- •Как работать с учебным микроконтроллером ук52–эм02
- •Общие требования и рекомендации к выполнению практики и оформлению отчета
Основные понятия и определения
Для того, чтобы разработать и выполнить программу с помощью микроконтроллера, необходимо знать ответы на следующие вопросы:
в каком виде могут быть представлены данные для обработки?
что такое команда, и какие сведения она в себя включает?
где хранятся данные, и как указывается их месторасположение?
как пишутся команды, и в каком виде вводятся в память МК?
какие операции может выполнять МК?
Форматы данных
Любое цифровое вычислительное устройство может оперировать с информацией представленной только в двоичном виде. При этом важную роль имеет разрядность данных – формат, который не может быть произвольным.
АЛУ может оперировать четырьмя типами форматов данных:
1 бит (1 разряд) – для представления булевских переменных;
4 бит (4 разряда) – для представления двоично-десятичных чисел;
1 байт (8 разрядов) – для представления чисел и адресов в двоичном виде;
16 бит (16 разрядов) – для представления адресов в двоичном виде.
Команда
Для выполнения преобразований над данными (операндами) микроконтроллер должен «знать»:
какое преобразование (операцию) он должен выполнить;
какие исходные данные (операнды) участвуют в операции.
Вся информация, поступающая в микроконтроллер через устройства ввода, так и программа, которая ее обрабатывает, хранится в разных частях памяти ОЗУ и ПЗУ. Для передачи данных (операндов) в АЛУ для обработки требуется указать место расположения операнда в памяти – его адрес. Поэтому структура любой команды содержит два поля: поле кода операции (КОП) и поле операнда или его адреса (или операндов, если их два) (рис.2).
Рис.2. Структура команды микроконтроллера:
а) с двумя операндами; б) с одним операндом
Если содержание поля кода операции строго определено для конкретной команды, то содержание поля операнда может иметь различные представления. Здесь может быть представлен собственно операнд в его числовой форме либо указание места расположения (адрес) операнда в памяти. Он может храниться в одном из регистров, в памяти данных ОЗУ, в памяти программ ПЗУ, а следовательно, иметь различные способы представления (указания адреса).
Код операции
Код операции команды определяет набор действий, которые должен выполнить ЦП для преобразования операнда (операндов). Он представляется в виде 8-разрядного двоичного кода. Например: 00100101В – код операции сложения двух операндов. В таком виде в составе команды он записывается в ПЗУ микроконтроллера. Полная система команд содержит 255 кодов операций. Запомнить 255 двоичных кодов и применять их при разработке программы достаточно сложно. Можно сократить число цифр кода, представив его в шестнадцатеричном виде. Тот же код будет выглядеть как 25Н. В любом случае использование кодов операции в виде цифр является сложным и неблагодарным занятием.
Разработка программы значительно упрощается, если использовать язык программирования АССЕМБЛЕР. В этом языке для упрощения процедуры записи, проверки и чтения программ используется мнемоническое или символическое кодирование для обозначения кода операции. При этом каждая машинная команда, реально используемая как машинный двоичный код, обозначается трех- или четырехбуквенным мнемоническим символом. В основе этих символов лежит описание выполняемой операции на английском языке в виде абревиатуры (либо сокращенное слово, либо начальные буквы словосочетания) от полной записи наименования команды на английском языке. Основное достоинство мнемокодов заключается в том, что такие символы легко запоминаются и легко воспринимаются, так как символическое имя команды напоминает смысловое содержание соответствующей операции, например:
MOV – сокращение от Move (перемещение);
INC – сокращение от Increment (увеличение на единицу);
ADD – сокращение от Addition (добавление);
SUBB – сокращение от Substraction with Borrow (вычитание c займом);
MUL – сокращение от Multiply (умножение) и другие операции.
В процессе компиляции исходный текст программы на языке АССЕМВЛЕРА, обычно выполняемой автоматически с помощью ПК, преобразуется в двоичный машинный код, который «понимает» ЦП.
Адрес
Адресом называется указание месторасположения элемента данных (операнда) в памяти микроконтроллера. Память микроконтроллера включает в себя помимо ОЗУ и ПЗУ ряд специализированных отдельных ячеек памяти – регистров. Они предназначены для обслуживания АЛУ. На рис. 3 показана упрощенная структура памяти МК.
А – аккумулятор, восьмиразрядный регистр, предназначенный для приема хранения результата, полученного при выполнении арифметико-логических операций или операций пересылки.
В – восьмиразрядный регистр как дополнение аккумулятора при выполнении операций умножения и деления. Для других операций он может рассматриваться как дополнительный сверхоперативный регистр.
PSW – восьмиразрядный регистр состояния АЛУ при выполнении программы. Для хранения данных программы он не предназначен. Состоит из отдельных бит, значения которых определяют состояние АЛУ, например переполнение аккумулятора.
DPTR – 16-разрядный регистр (указатель адреса) для косвенной адресации при
Рис. 3. Упрощенная структура памяти МК
обращении к памяти программ. Может быть использован как два независимых 8-разрядных регистра DPH и DPL для хранения данных программы.
R0-R7 – 8 восьмиразрядных регистров общего назначения. Предназначены для хранения оперативных данных программы. Команды, использующие для операндов эти регистры, имеют минимальное время выполнения, а сами команды занимают в памяти минимальное место.
ОЗУ содержит 128 8-разрядных ячеек памяти, каждая из которых имеет собственный номер – адрес, от 00Н до 7FH (в шестнадцатеричном коде).
ПЗУ имеет 2048 (2К) ячеек, с адресами от 0000Н до 07FFH.
Адрес ячейки, в которой находится требуемый операнд, записывается в поле операнда команды при программировании в шестнадцатеричном коде.
Формат адреса для ОЗУ – 1 байт, для ПЗУ – 2 байта.
Рассмотренные выше регистры также имеют свои собственные 8-разрядные адреса, однако, особенность программирования на АССЕМБЛЕРЕ, позволяет использовать для регистров символические имена (адреса). В поле адреса команды, если используется регистр, записывается его обозначение А, PSW, R0-R7 и т.д.
Для работы с булевскими (битовыми) операндами используется часть памяти ОЗУ с адресами 20Н – 2FH, которая представляет собой так называемую битовую область ОЗУ. В ней имеется возможность при помощи специальных битовых команд адресоваться к каждому отдельному разряду ячеек памяти. Битовое пространство имеет объем 128 бит с адресами 00Н до 7FH и занимает 16 ячеек памяти. Адрес прямоадресуемых битов может быть записан либо в виде (Адрес Байта).(Разряд), например выражение 21.3Н означает третий разряд ячейки памяти с адресом 21H, либо в виде абсолютного битового адреса - 0ВН. Соответствие этих двух способов адресации можно определить по табл. 1.