Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КP схемотехника =МУ=.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆
  1. Состав ассемблерных команд.

Состав команд – это команды, которые исполняются центральным процессорным элементом микроконтроллера и не могут изменяться при его эксплуатации т.к. все они жёстко запрограммированы на стадии проектирования.

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

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

  1. Переход по условию, если «равно» (ветвление) – BREQ k;

  2. Абсолютный вызов подпрограммы – CALL K;

  3. Сброс содержимого РОН – CLR Rd;

  4. Сложение содержимого двух РОН с переносом – ADC Rd, Rr;

  5. Сложение содержимого двух РОН – ADD Rd, Rr;

  6. Перевод в дополнительный код содержимого РОН – NEG Rd;

  7. Декремент содержимого РОН – DEC Rd;

  8. Пересылка содержимого между двумя РОНами – MOV Rd, Rr;

  9. Косвенное чтение содержимого ячейки памяти ОЗУ в РОН – LD Rd, Z;

  10. Сохранение в стеке содержимого регистра – PUSH Rr;

  11. Возврат из подпрограммы обработки прерываний – RET I;

  12. Преобразование числа представленного кодом «два из пяти» в двоичное число кода 4-2-1, а также внесение преобразованного двоичного числа в РОН – FUN1 Rd, PORTB.

Примечание. Во всех примерах методических указаний соблюдается нумерация команд в соответствии со списочным составом.

На основании состава команд синтезируемого микроконтроллера, можно сформировать группы:

  • логических команд – сброс РОНа (3);

  • арифметических команд – сложение двух РОН с переносом (4), сложение двух РОН (5), перевод РОНа в дополнительный код (6), декремент РОНа (7);

  • команд передачи управления – переход по условию (состоянию флага) (1), абсолютный вызов подпрограммы (2), возврат из подпрограммы обработки прерываний (11);

  • команд пересылки данных – между двумя любыми РОНами (8), косвенное чтение данных в РОН из ячейки памяти ОЗУ (9), сохранение в стеке содержимого регистра (10);

  • уникальных команд – преобразования кода (12).

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

Использование состава команд позволяет оптимизировать управляющий блок центрального процессорного элемента при его схемотехнической реализации.

  1. Характеристика регистров микроконтроллера.

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

  • регистр счетчик команд (РСчК) – указывает на физический адрес ячейки памяти, где хранится исполняемая команда, следовательно, РСчК связан с областью памяти программ и его разрядность определяется количеством адресуемых ячеек памяти программ (ПЗУ);

  • регистр указатель стека (РУС) – указывает на физический адрес ячейки памяти, где временно дублируются данные любого из регистров, следовательно, РУС связан с областью памяти данных и его разрядность определяется количеством адресуемых ячеек оперативной памяти для хранения данных (ОЗУ);

  • регистр флагов (РФ) – содержит признаки выполнения операции, следовательно, его разрядность определяется количеством использующихся флагов (I, T, H, S, V, N, Z, C, ошибка кода);

  • регистр общего назначения (РОН) – содержит произвольные данные, следовательно, его разрядность определяется разрядностью памяти данных либо техническим заданием;

  • дополнительный регистр (ДР) – дублирует данные регистра на время выполнения ассемблерной команды исполнительным устройством, следовательно, его разрядность должна быть равной или превышать разрядность копируемого регистра, при этом дополнительный регистр недоступен программисту (по необходимости, может быть несколько дополнительных регистров различной разрядности);

  • специальный регистр (СР) – содержит данные о состояниях внутренних узлов и/или устройств микроконтроллера, следовательно, его разрядность должна обеспечивать функционирование этих узлов и/или устройств (рекомендуется разрядность специальных регистров приравнивать разрядности РОНов, по необходимости, может быть несколько специальных регистров).

Схемотехническая реализация регистров микроконтроллера основывается на их разрядности, разрядность задаётся объемом памяти устройств, которыми они управляют (РСчК и РУС) либо исполняемыми функциями (прочие регистры).

В соответствии с приведенным выше ТЗ, разрядная сетка регистров синтезируемого микроконтроллера приведена в табл. 3.

Таблица 3.

Количество двоичных разрядов регистров микроконтроллера.

Название регистра

РСчК

РУС

РОНы

РФ

ДР1

ДР2

СР1

СР2

Количество разрядов

16

10

16

Не менее 8

16

8

16

16

Примечание. ДР1 – дублирует данные любого из регистров, ДР2 –только РФ, ДР3 – сдвоенного РОНа, функции специальных регистров будут определены ниже.

Кодирование ассемблерных команд возможно только при единой структуре формата для всех команд синтезируемого микроконтроллера.

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

Структурно, в общем случае, код ассемблерной команды, состоит из двух частей:

  • операционной – основной, всегда присутствующей в коде команды и отображающей код операции (КОп), при этом КОп в неявной форме задает вид исполняемой команды (арифметическая; безусловный переход; логическая; сдвига, прочие и т.д.);

  • адресной – дополняющей операционную и содержащей либо характеристики расположения операндов, до и после исполнения команды (их адреса или имена), либо характеристику адреса следующей команды (константу, указывающую на переход).

И операционная, и адресная части ассемблерной команды состоят из нескольких полей, количество которых определяется характеристиками микроконтроллера.

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

Структура кода ассемблерной команды с разметкой номеров разрядов (бит) определяющих границы отдельных полей команды называется форматом команды, при этом однородные команды обладают идентичным форматом. Такая организация формата команд называется вертикальным микропрограммированием, и получила наибольшее распространение. Одно из достоинств вертикального микропрограммирования – возможность создания кодов различного формата, как операционной, так и адресной частей, при этом, не задавая явно ни вид операции, ни операнды, участвующие в ней.

Количество разрядов операционной части формата команд определяется, в общем случае, количеством кодов команд и при этом может содержать один или более вариантов расширенного кодирования операций, где совместно с КОп используется дополнительный код операции (ДКОп).

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

В зависимости от соотношения разрядности кода команды, количества РОНов, глубины переходов по условию, разрядности памяти программ формат команды может содержать как одно слово, так и два, и три, и более слов.

Используя структуру кода вертикального микропрограммирования можно создать следующие форматы ассемблерных команд:

  • безадресные – содержащие только КОп – используются для выполнения операций, где однозначно указана последовательность действий, пример приведен на рис. 2,а;

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

  • одноадресные – содержащие КОп и характеристику одного операнда – используются для выполнения операций, где выполняется действие над указанным операндом и тот же операнд изменяется в результате выполненного действия, пример приведен на рис. 3;

  • двухадресные – содержащие КОп и характеристику двух операндов – используются для выполнения операций, где выполняется совместное действие над двумя указанными операндами, причем результат выполненного действия помещается в операнд приемник, пример приведен на рис. 4;

  • т рехадресные – содержащие КОп и характеристику трех операндов – используются для выполнения операций, где выполняется совместное действие над тремя указанными операндами, причем результат выполненного действия помещается в операнд приемник;

№ слова

Биты формата безадресной ассемблерной команды.

6

5

4

3

2

1

0

1

ДКОп

КОп

№ слова

Биты формата безадресной ассемблерной команды.

6

5

4

3

2

1

0

1

ДКОп

КОп

2

Константа перехода

№ слова

Биты формата безадресной ассемблерной команды.

6

5

4

3

2

1

0

1

Rd

КОп

№ слова

Биты формата безадресной ассемблерной команды.

6

5

4

3

2

1

0

1

Rr

КОп

2

Rd

резерв

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

Безадресные и одноадресные команды, как правило, состоят из одного слова, независимо от разрядностей формата команды и операндов.

Наиболее рационально использовать для двухадресных команд формат кода состоящего из одного слова, что достигается ограничениями на использование РОНов или ограничением их количества.

Формат трехадресной команды аналогичен формату двухадресной, причем для трехадресной команды отсутствует резерв (см. рис. 4).

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

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