Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТЧЁТ!!!!!!.doc
Скачиваний:
5
Добавлен:
29.09.2019
Размер:
1.3 Mб
Скачать

1.2. Система команд.

Для того чтобы МК выполнял преобразования над данными не ему необходимо «знать»:

  1. Какое преобразование он должен выполнить.

  2. Какие исходные данные участвуют в операции.

Вся информация, которая поступает в микроконтроллер через устройства ввода, так и программа, которая ее обрабатывает, хранится в разных частях памяти ОЗУ и ПЗУ. Для передачи данных (операндов) в АЛУ для обработки требуется указать место расположения операнда в памяти – его адрес. Поэтому структура любой команды содержит два поля: поле кода операции (КОП) и поле операнда или его адреса (или операндов, если их два) (рис.2).

Рис.2. Структура команды микроконтроллера:

а) с двумя операндами; б) с одним операндом

Если содержание поля кода операции строго определено для конкретной команды, то содержание поля операнда может иметь различные представления. Здесь может быть представлен собственно операнд в его числовой форме либо указание места расположения (адрес) операнда в памяти. Он может храниться в одном из регистров, в памяти данных ОЗУ, в памяти программ ПЗУ, а следовательно, иметь различные способы представления (указания адреса).

Код операции команды определяет набор действий, которые должен выполнить ЦП для преобразования операнда (операндов). Он представляется в виде 8-разрядного двоичного кода. Например: 00100101В – код операции сложения двух операндов. В таком виде в составе команды он записывается в ПЗУ микроконтроллера. Полная система команд содержит 255 кодов операций.

Разработка программы значительно упрощается, если использовать язык программирования АССЕМБЛЕР. В этом языке для упрощения процедуры записи, проверки и чтения программ используется мнемоническое или символическое кодирование для обозначения кода операции. При этом каждая машинная команда, реально используемая как машинный двоичный код, обозначается трех- или четырехбуквенным мнемоническим символом. В основе этих символов лежит описание выполняемой операции на английском языке в виде аббревиатуры (либо сокращенное слово) от полной записи наименования команды на английском языке.

Адресом называется указание месторасположения элемента данных (операнда) в памяти микроконтроллера. Память микроконтроллера включает в

себя помимо ОЗУ и ПЗУ ряд специализированных отдельных ячеек памяти – регистров. Они предназначены для обслуживания АЛУ.

1.2.1.Способы указания адреса.

Способом адресации операнда называют его различные формы представления в структуре программы.

Адресация зависит от 2-х факторов:

  1. Способа представления адреса.

А). Непосредственная адресация – адрес как таковой отсутствует. Поле операнда непосредственно содержит данные, с которыми работает команда. Перед полем операнда (в большинстве случаев) ставится префикс #.

Б). Прямая адресация - префикса перед операндом нет. В поле операнда содержится адрес ячейки памяти, которая содержит данные. Эта адресация используется для внутренней памяти данных.

В). Косвенная адресация. В этом случае в команде указывается один из регистров общего назначения, который содержит фактический адрес размещения операнда в памяти. Перед операндом ставится префикс @.

  1. Полноты представления адреса.

А). Полная – адрес операнда указывается как число соответствующее адресу.

Б). Регистровая – адрес операнда представляет собой 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.