Реферат: Ответы к Экзамену по Микропроцессорным Системам (микроконтроллеры микрокопроцессоры)
Система команд микроконтроллера содержит 130 команд, условно разделенных на четыре группы:
команды пересылки данных (data transfer instructions), 0 арифметические и логические команды (arithmetic and logic instructions), ° команды работы с битами (bit and bit-test instructions), ° команды ветвления (branch instructions).
При описании системы команд использованы следующие обозначения:
Rd - регистр-приемник результата (0 < d < 31),
Rd* - регистр-приемник результата с номером более 16 (16 < d < 31),
Rr-регистр-источник (0 < г < 31),
Rdl: регистры R24, R26, R28, R30 (для инструкций ADIW и SBIW),
Р- адрес регистра ввода/вывода, Р*- адрес побитно адресуемого регистра ввода/вывода ($00-$1F)
К - символьная или численная константа (8 бит)
к - адресная константа
b - номер бита в регистре (3 бита)
0 s - номер бита в регистре статуса (3 бита)
0 X, Y, Z - регистры косвенной адресации (X=R27:R26, Y=R29:R28; Z=R31 :R30 Команды пересылки
Команды пересылки осуществляют перемещение данных между ячейками памяти и регистрами процессорного ядра. Один из операндов, участвующих в инструкции, является источником данных, второй - приемником. При пересылке из источника в приемник копия данных всегда остается в источнике. Таким образом, все команды пересылки практически осуществляют копирование данных.
Одним из операндов в любой команде пересылки обычно является регистр общего назначения процессорного ядра. Вторым может быть любой регистр или ячейка памяти.
Инструкции, как правило, не влияют на флаги в регистре состояния процессорного ядра.
В системе команд микроконтроллеров AVR предусмотрено 34 инструкции, осуществляющие пересылку данных. В инструкциях используются все, за исключением битовых, способы адресации данных; одним из операндов в любой инструкции является регистр общего назначения. Инструкция Idi (toad immediate), использующая непосредственную адресацию, может быть использована только в старшей половине файла регистров общего назначения (R16....R31), остальные команды работают с любым из регистров файла. Инструкцию spm (store program memory), осуществляющую запись когда в память программ, можно использовать только в Boot Program Section памяти программ;
Время выполнения инструкций, работающих с регистрами, равно 1 такту. Инструкции, обращающиеся к ячейкам памяти данных, выполняются за 2 такта, а 'вращающиеся к ячейкам памяти программ - за 3 такта.
Арифметические и логические команды
В группу арифметических команд входит команды выполняющие сложение, вычитание, декремент и инкремент данных, логическое умножение логическое сложение, операцию ИСКЛЮЧАЮЩЕЕ ИЛИ, инверсию переменной. Обычно к этои группе относят также инструкции сравнения данных. В микроконтроллере Aтmegа 163реализованы также функции арифметического умножения целых чисел и дробных чисел, без знака и со знако3м
Все инструкции этой группы, как правило, приводят к изменению состояния флагов регистра состояния в соответствии с резулыа1ами, выполняемой операции.
В микроконтроллерах с архитектурой AVR предусмотрено довольно много (31) инструкций, выполняющих арифметические и логические преобразования данных. Инструкции используют исключительно прямую регистровую или непосредственную адресацию данных. Операнды хранятся в регистрах общего назначения, в один из них (регистр-приемник) всегда направляется и результат вычислений.
В результате выполнения инструкций изменяются флаги регистра SREG (Status Register), а флаг переноса С (Сапу), кроме того, непосредственно участвует в выполнении ряда операций.
Арифметические команды сложения и вычитания выполняют сложение и вычитание одно- и двухбайтных операндов. Команды adc (add with сапу two registers) и sbc (subtract with carry two registers) используют при вычислениях флаг переноса С.
Инструкции логического умножения (and) и логического сложения (or) , ИСКЛЮЧАЮЩЕЕ ИЛИ (вот) преобразуют только однобайтные данные.
Инструкция дополнения до единицы com (one's complement), фактически выполняет операцию инверсии, а инструкция дополнения до двух neg (two's complement) - меняет знак числа
Инструкции установки (set) позволяют установить как отдельные, так и все биты выбранного регистра в единичное состояние, а команды очистки (dear) - в нулевое.
Инструкции инкремента регистра inc (increment) и декремента регистра dec (decrement) используют прямую адресацию одного выбранного регистра.
Тест на нуль или минус tst (test for zero or minus) фактически не меняет содержимого регистра, но устанавливает соответствующие флаги при равенстве операнда нулю или при его отрицательном значении.
Команды сравнения (compare) также не меняют содержиМ°го РегистР°в' а оценивают разность операндов и устанавливают соответствующие Флаги в регистре состояния.