- •Введение.
- •1. Архитектура и система команд однокристального микроконтроллера i8051.
- •Принцип работы однокристального микроконтроллера i8051.
- •1.2. Система команд.
- •1.2.1.Способы указания адреса.
- •1.2.2. Группы команд.
- •2.Архитектура и программное обеспечение учебное контроллера мк 52 – эм02.
- •2.1. Команды «монитора».
- •Выполнение задания.
- •3.1. Условие задачи.
- •3.2.Разработка алгоритма.
- •3.3. Текст программы на языке Ассемблер.
- •3.4. Отладка.
1.2. Система команд.
Для того чтобы МК выполнял преобразования над данными не ему необходимо «знать»:
Какое преобразование он должен выполнить.
Какие исходные данные участвуют в операции.
Вся информация, которая поступает в микроконтроллер через устройства ввода, так и программа, которая ее обрабатывает, хранится в разных частях памяти ОЗУ и ПЗУ. Для передачи данных (операндов) в АЛУ для обработки требуется указать место расположения операнда в памяти – его адрес. Поэтому структура любой команды содержит два поля: поле кода операции (КОП) и поле операнда или его адреса (или операндов, если их два) (рис.2).
Рис.2. Структура команды микроконтроллера:
а) с двумя операндами; б) с одним операндом
Если содержание поля кода операции строго определено для конкретной команды, то содержание поля операнда может иметь различные представления. Здесь может быть представлен собственно операнд в его числовой форме либо указание места расположения (адрес) операнда в памяти. Он может храниться в одном из регистров, в памяти данных ОЗУ, в памяти программ ПЗУ, а следовательно, иметь различные способы представления (указания адреса).
Код операции команды определяет набор действий, которые должен выполнить ЦП для преобразования операнда (операндов). Он представляется в виде 8-разрядного двоичного кода. Например: 00100101В – код операции сложения двух операндов. В таком виде в составе команды он записывается в ПЗУ микроконтроллера. Полная система команд содержит 255 кодов операций.
Разработка программы значительно упрощается, если использовать язык программирования АССЕМБЛЕР. В этом языке для упрощения процедуры записи, проверки и чтения программ используется мнемоническое или символическое кодирование для обозначения кода операции. При этом каждая машинная команда, реально используемая как машинный двоичный код, обозначается трех- или четырехбуквенным мнемоническим символом. В основе этих символов лежит описание выполняемой операции на английском языке в виде аббревиатуры (либо сокращенное слово) от полной записи наименования команды на английском языке.
Адресом называется указание месторасположения элемента данных (операнда) в памяти микроконтроллера. Память микроконтроллера включает в
себя помимо ОЗУ и ПЗУ ряд специализированных отдельных ячеек памяти – регистров. Они предназначены для обслуживания АЛУ.
1.2.1.Способы указания адреса.
Способом адресации операнда называют его различные формы представления в структуре программы.
Адресация зависит от 2-х факторов:
Способа представления адреса.
А). Непосредственная адресация – адрес как таковой отсутствует. Поле операнда непосредственно содержит данные, с которыми работает команда. Перед полем операнда (в большинстве случаев) ставится префикс #.
Б). Прямая адресация - префикса перед операндом нет. В поле операнда содержится адрес ячейки памяти, которая содержит данные. Эта адресация используется для внутренней памяти данных.
В). Косвенная адресация. В этом случае в команде указывается один из регистров общего назначения, который содержит фактический адрес размещения операнда в памяти. Перед операндом ставится префикс @.
Полноты представления адреса.
А). Полная – адрес операнда указывается как число соответствующее адресу.
Б). Регистровая – адрес операнда представляет собой 3-х битовый номер регистра.
В). Неявная – адрес не указывается, но подразумевается на уровне аппаратного выполнения кода операции. Это касается только особых регистров.
В зависимости от сочетания варианта представления адреса и полноты его указания существуют способы адресации.
1. Непосредственная полная адресация - когда в поле операнда представлен непосредственно элемент данных, т.е. число над которым выполняется операция, например: команда записи в аккумулятор непосредственного операнда - MOV A, #d (MOV A, #01H), двухбайтовая команда, в которой второй байт представляет непосредственный операнд #d (число 01H).
2. Прямая полная адресация – в поле операнда указывается адрес расположения операнда в памяти, например команда записи в аккумулятор содержимого ячейки памяти данных с прямым адресом - MOV A, ad (MOV A, 21Н), в которой второй байт представляет прямой адрес ad в памяти данных (адрес 21Н).
3. Прямая регистровая адресация – в поле кода операции указывается трехбитный номер регистра rrr = 000÷1112, где расположен операнд. Поле адреса для данного операнда совмещено вместе с кодом операции в одном байте, например: команда инкремента рабочего регистра - INC Rn (00001rrr). Таким образом, изменяя номер регистра rrr, мы можем обращаться к любому из восьми рабочих регистров выбранного банка.
4. Косвенная регистровая адресация - в поле кода операции указывается однобитный номер регистра i = 0÷12, в котором предварительно записан адрес расположения операнда в памяти, т.е. регистр выполняет роль указателя на фактический адрес. Поле адреса для данного операнда совмещено вместе с кодом операции в одном байте, например: команда инкремента ячейки памяти
данных адрес которой находится в регистре Ri - INC @Ri (0000011i). Таким образом, изменяя номер регистра i, мы можем использовать регистры R0 и R1 в качестве указателей данных при косвенной адресации.
5. Прямая неявная адресация - код операции команды неявным образом определяет регистр (обычно это аккумулятор А), где находится операнд, например однобайтовая команда инверсии аккумулятора - CPL A.
6. Косвенная неявная адресация - код операции неявным образом определяет регистр (обычно это регистр DPTR, либо сумма (А+ DPTR)), который содержит фактический адрес, например команда относительного косвенного перехода – JMP @A+DPTR.