Сборка лекции, страница 3
Описание файла
Документ из архива "Сборка лекции", который расположен в категории "". Всё это находится в предмете "электроника" из , которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "электроника и микропроцессорная техника" в общих файлах.
Онлайн просмотр документа "Сборка лекции"
Текст 3 страницы из документа "Сборка лекции"
У МК разных типов семейства AVR система команд содержит от 89 до 130 команд.
Базовая система содержит 118 команд со своими мнемокодами (символьный псевдоним 16-разрядной команды), которые используются при написании программ на языке AVR ассемблера.
Базовая система команд содержит:
- 33 команды регистровых операций, при выполнении которых используются только регистры ОН;
- 26 команд с обращением по адресу в ОЗУ;
- 2 команды с обращением к регистрам ввода вывода;
- 1 команда с обращением к ПЗУ команд;
- 22 команды операций с битами в разрядах регистров общего назначения и регистров ввода-вывода;
- 34 команды управления ходом программы.
Rd, Rr – регистры общего назначения (регистр-приёмник, регистр-источник);
(Rd), (Rr) – содержимое регистров Rd и Rr соответственно;
Rd.b – разряд (b = 0-7) регистра;
$, 0x - указатель шестнадцатеричного кода;
k – адрес из адресного пространства ОЗУ;
K – байт данных (8 бит)
X,Y,Z – пары регистров общего назначения X (R26,R27), Y (R28,R29), Z (R30, R31)
Команды регистровых операций.
В эту группу входят команды передачи данных, а также команды арифметических и логических операций. Большинство команд группы имеют 16-разрядный формат («слово») и выполняются за один такт.
Команда MOV - пересылает содержимое регистра-источника в регистр-приемник, при этом содержимое регистра-источника и регистра состояния не меняются.
Используется прямой способ адресации. Под способами адресации понимают способы, используемые для указания источников и приемников операндов. В формате команды указаны 5-разрядные адреса регистра-источника и регистра-приемника.
MOV Rd,Rr - копирование содержимого регистра источника Rr в регистр приемник Rd.
16-разрядный код (6 старших разрядов ответственны за код операции, а 10 – определяют конкретные регистры, которые участвуют в выполнении данной операции):
Регистр состояния:
Арифметические операции – сложение ADD и вычитание SUB – могут выполняться с числами без знака и со знаком в дополнительном двоичном коде. Кроме того, предусмотрены команды сложения ADC и вычитания SBS с учетом переноса.
ADD Rd,Rr - сложение без учёта переноса содержимого регистра Rr и регистра Rd. Результат – в регистр Rd.
16-разрядный код (6 старших разрядов ответственны за код операции, а 10 – определяют конкретные регистры, которые участвуют в выполнении данной операции):
Регистр состояния:
В систему команд некоторых МК включены команды умножения целых чисел без знака MUL и со знаком MULS.
К этой группе команд относятся логические операции И AND, ИЛИ OR, исключающее ИЛИ FOR, сдвиговые операции влево (LSL, ROL) и вправо (LSR, ROR), команды сравнения в результате выполнения которых формируются только признаки регистра состояния CP.
Команды увеличения и уменьшения содержимого регистров на 1 (INC, DEC).
Команды установки в 0 или 1 состояние всех разрядов регистра (CLR, SER).
Команды, в которых одним из операндов является константа K (LDI, SUBI, SBCI, ANDI, ORI, SBR, CBR), могут использовать только регистры из второй половины регистрового файла (R16-R31).
К этой же группе относятся команды сложения и вычитания содержимого пары регистров и константы, с размещением результата в этой паре (ADIW и SBIW) . В качестве регистровых пар используются 8 старших регистров ОН.
При выполнении арифметических операций контроллер работает с числами, а при выполнении логических – с битами чисел.
При выполнении операций с многобайтовыми операндами целесообразно использовать ADC.
- бит (признак) регистра состояния не меняется при выполнении операции
+ бит (признак) регистра состояния меняется при выполнении операции
0 - регистр состояния устанавливается в 0
1 - регистр состояния устанавливается в 1
Регистр r30 – один из пары регистров Z.
d – адрес регистра, в которую записывают константу.
d – два регистра, в которых находятся исходные данные
К – число, с которым складываю исходные данные
Команды операций с ОЗУ.
В эту группу входят команды обмена между РОН и регистрами, входящими в единое адресное пространство ОЗУ. Команды с аббревиатурой LDS и STS (LDS – Load Direct from SRAM, STS – Store Direct to SRAM).
Осуществляют копирование содержимого ЯП ОЗУ в РОН и обратно. Команды имеют формат 2 слова, выполняются за 3 цикла, адрес ЯП задается во втором слове формата команды. Т.о. в этих командах используется прямой способ адресации.
В остальных командах этой группы используется косвенный способ адресации, который отличается тем, что адрес ЯП хранится в парах регистров X,Y,Z.
Для того чтобы записать число в оперативную память необходимо выполнить 2 операции:
-
Записать данные в РОН.
-
Скопировать данные из РОН в оперативную память с помощью команды STS.
LDS- Load Direct from SRAM
Вопрос: Скопировать содержание старшей ячейки оперативной памяти с помощью данной команды в регистр R2. Какой адрес необходимо указать во втором слове этой команды, если объем ОП 512 байт?
Ответ: $025F (см. таблицу лекции 3 «Адресное пространство ОЗУ (512 байт)») .
Команды, использующие косвенный способ адресации:
Команда LD осуществляет загрузку содержимого ЯП ОЗУ в РОН. Формат команды – слово. Адрес регистра указан в формате команды, адрес ЯП в парахXYZ. Предусмотрены команды, которые увеличивают содержимое пары регистров после пересылки данных и команды, в которых до обмена данными содержимое пары регистров уменьшается на 1.
Команда ST осуществляют обмен между РОН и ЯП ОЗУ.
Команды LDD и STD осуществляют обмен с ЯП, адрес которой определяется как сумма содержимого пары регистров и числа, указанного в формате команды
LD - Load Indirect from SRAM to Register using Index X
Формат команды уменьшается в 2 раза по сравнению с прямым способом адресации.
ST- Store Indirect from Register to SRAM using Index X
Команды, позволяющие использовать стековую область памяти:
В командах (POP, PUSH) обмена РОН с ЯП из стека используется регистр указатель стека. Регистр УС при запуске обнуляется и для нормальной работы МК в него необходимо занести начальный адрес.
Возможное использование: При организации условных переходов, при выполнении прерываний в основную программу необходимо скопировать текущее состояние…
В качестве вершины стека используется старший адрес.
PUSH - Push Register on Stack
POP - Pop Register from Stack
Команды обращения к регистрам ввода/вывода.
Команды осуществляют обмен между РОН и HDD (IN, OUT). Адрес (номер) РВВ – (0-63 или $0 - $3F).
OUT - Store Register to I/O port
Адреса (номера) регистра УС SPL – 3D, SPH – 3E (для МК 512 байт)
;Инициализация указателя стека (обязательно выполняется в начале программы)
ldi r25, $5F ; Записать в регистр (16-31) младший байт адреса
; вершины стека
out $3d, r25 ; Переслать его в регистр УС
ldi r25, $02 ; Записать старший байт адреса
out $3e, r25 ; Переслать его в регистр УС
При записи мнемокода команды вместо конкретного регистра может использоваться его символическое имя. Имена регистров определены в дополнительных файлах для каждого МК, в котором помимо этого определены регистры указатели XL, XH… ZL, ZH и старший адрес ОЗУ.
.include “8535def.inc” ;Подключить файл описаний имен РВВ
ldi r25, LOW(RAMEND)
out spl, r25
ldi r25, HIGH(RAMEND)
out sph, r25
Указатель стека занимает в адресном пространстве регистров ввода/вывода 2 регистра. Их адреса: $3d, $3e.
IN - Load an I/O Port to Register
Команды обмена с ПЗУ программ.
Команды осуществляют обмен между половиной ЯП ПЗУП и регистром R0. адрес ЯП определенным образом формируется в Z-паре. Мнемокод команды LPM (Load Program Memory). Время выполнения 3 цикла.
ПЗУ данных.
В системе команд нет команд обмена с ПЗУ данных. Для выполнения такого обмена необходимо выполнить последовательность операций с использованием регистров из адресного пространства РВВ. Время выполнения операции обмена составляет от 2.5 до 4 мкс.
Команды операций с битами.
Команды BLD, BST выполняют пересылку (копирование) байта между разрядом регистра ОН и разрядом Т регистра состояния.
Команды CBI, SBI устанавливают в требуемое состояние (0 или1) указанный разряд РВВ, а команды BCLR и BSET производят те же действия над разрядами регистра состояния.
В систему команд включены команды, по которым устанавливаются разряды регистра состояния.
BLD - Bit Load from the T Flag in SREG to a bit in Register