У слушателей иногда возникает необходимость в повторном просмотре видеоурока по какой-то определенной команде или функции. К сожалению, по названию видеоурока не всегда удается определить какие команды в нем рассматриваются. Поэтому я принял решение создать небольшую справочную таблицу с различными командами и выражениями ассемблера, по которой легко можно определить в каком видеоуроке что рассматривается.
Мнемоника |
Описание |
Видеоурок |
CBR Rd, K |
Сброс разряда(ов) РОН (K = 0…255) |
17. Новые команды ассемблера (Project_4) |
SBR Rd, K |
Установка разряда(ов) РОН (K = 0…255) |
|
CBI P, b |
Сброс разряда РВВ(b = 0…7) |
|
SBI P, b |
Установка разряда РВВ(b = 0…7) |
|
BCLR s |
Сброс флага(s = 0…7) |
19. Регистр статуса (Project_5) |
BSET s |
Установкафлага (s = 0…7) |
|
BLD Rd, b |
Загрузка разряда РОН из флага T (SREG) |
|
BST Rr, b |
Запись разряда РОН в флаг T(SREG) |
|
CLC |
Сброс флага переноса |
|
SEC |
Установка флага переноса |
|
CLN |
Сброс флага отрицательного числа |
|
SEN |
Установка флага отрицательного числа |
|
CLZ |
Сброс флага нуля |
|
SEZ |
Установка флага нуля |
|
CLI |
Общий запрет прерываний |
|
SEI |
Общее разрешение прерываний |
|
CLS |
Сброс флага знака |
|
SES |
Установка флага знака |
|
CLV |
Сброс флага переполнения дополнительного кода |
|
SEV |
Установка флага переполнения дополнительн. кода |
|
CLT |
Сброс пользовательского флага T |
|
SET |
Установка пользовательского флага T |
|
CLH |
Сброс флага половинного переноса |
|
SEH |
Установка флага половинного переноса |
Группа команд сравнения
Мнемоника |
Описание |
Видеоурок |
CP Rd, Rr |
Сравнение двух РОН |
22. Команды сравнения (Project_8) |
CPC Rd, Rr |
Сравнение РОН с учетом переноса |
|
CPI Rd, K |
Сравнение РОН с константой |
Группа команд логических операций
Мнемоника |
Описание |
Видеоурок |
AND Rd, Rr |
«Логическое И» двух РОН |
17. Новые команды ассемблера (Project_4) |
ANDI Rd, K |
«Логическое И» РОН и константы |
|
EOR Rd, Rr |
«Исключающее ИЛИ» двух РОН |
|
OR Rd, Rr |
«Логическое ИЛИ» двух РОН |
|
ORI Rd, K |
«Логическое ИЛИ» РОН и константы |
|
COM Rd |
Перевод в обратный код (инверсия разрядов) |
|
NEG Rd |
Перевод в дополнительный код |
|
CLR Rd |
Сброс всех разрядов РОН |
|
SER Rd |
Установка всех разрядов РОН |
|
TST Rd |
Проверка РОН на отрицательное (нулевое) значение |
19. Регистр статуса (Project_5) |
Группа команд арифметических операций
Мнемоника |
Описание |
Видеоурок |
ADD Rd, Rr |
Сложение двух РОН |
19. Регистр статуса (Project_5) |
ADC Rd, Rr |
Сложение двух РОН с переносом |
|
ADIW Rd, K |
Сложение регистровой пары с константой (K=0…63) |
21. Парные регистры (Paired_Registers) |
SUB Rd, Rr |
Вычитание двух РОН |
27. Практика использования отрицательных чисел (Negative_Numbers) |
SUBI Rd, K |
Вычитание константы из РОН |
|
SBC Rd, Rr |
Вычитание двух РОН с заемом |
|
SBCI Rd, K |
Вычитание константы из РОН с заемом |
|
SBIW Rd, K |
Вычитание константы из регистровой пары (K=0…63) |
21. Парные регистры (Paired_Registers) |
DEC Rd |
Декремент РОН |
17. Новые команды ассемблера (Project_4) |
INC Rd |
Инкремент РОН |
Группа команд операций сдвига
Мнемоника |
Описание |
Видеоурок |
ASR Rd |
Арифметический сдвиг вправо |
20. Команды операций сдвига (Paired_Registers) |
LSL Rd |
Логический сдвиг влево |
|
LSR Rd |
Логический сдвиг вправо |
|
ROL Rd |
Сдвиг влево через перенос |
|
ROR Rd |
Сдвиг вправо через перенос |
|
SWAP Rd |
Обмен местами тетрад |
Группа команд безусловной передачи управления
Мнемоника |
Описание |
Видеоурок |
RJMP A |
Относительный безусловный переход (A = – 2048…2047) | 07 Трансляция программы 31. Чтение байт из памяти программ (Read_from_Program)
24. Команды безусловного перехода |
IJMP |
Косвенный безусловный переход | 24. Команды безусловного перехода |
JMP A |
Абсолютный безусловный переход (A = 0…4Mb) | |
RCALL A |
Относительный вызов подпрограммы (A = – 2048…2047) | 29. Стековая память и подпрограммы (Project_12) |
ICALL |
Косвенный вызов подпрограммы | 30. Ошибки при работе со стековой памятью |
CALL A |
Абсолютный вызов подпрограммы (A = 0…4Mb) | 29. Стековая память и подпрограммы (Project_12) |
RET |
Возврат из подпрограммы | 29. Стековая память и подпрограммы (Project_12) |
RETI |
Возврат из подпрограммы обработки прерываний | 37.1 Понятие прерываний микроконтроллера |
Группа команд пересылки данных
Мнемоника |
Описание |
Видеоурок |
MOV Rd, Rr |
Пересылка между РОН |
31. Чтение байт из памяти программ (Read_from_Program) |
MOVW Rd, Rr |
Пересылка между парами регистров |
21. Парные регистры (Paired_Registers) |
LDI Rd, K |
Загрузка константы в РОН |
06 Первый проект |
LD Rd, X |
Косвенное чтение |
28. Запись и чтение памяти данных (Project_11) |
LD Rd, X+ |
Косвенное чтение с постикрементом |
|
LD Rd, –X |
Косвенное чтение с преддекрементом |
|
LD Rd, Y |
Косвенное чтение |
|
LD Rd, Y+ |
Косвенное чтение с постикрементом |
|
LD Rd, –Y |
Косвенное чтение с преддекрементом |
|
LDD Rd, Y+q |
Косвенное относительное чтение (q = 0…63) |
|
LD Rd, Z |
Косвенное чтение |
|
LD Rd, Z+ |
Косвенное чтение с постикрементом |
|
LD Rd, –Z |
Косвенное чтение с преддекрементом |
|
LDD Rd, Z+q |
Косвенное относительное чтение (q = 0…63) |
|
LDS Rd, A |
Непосредственное чтение из ОЗУ |
|
ST X, Rr |
Косвенная запись |
|
ST X+, Rr |
Косвенная запись с постикрементом |
|
ST –X, Rr |
Косвенная запись с преддекрементом |
|
ST Y, Rr |
Косвенная запись |
|
ST Y+, Rr |
Косвенная запись с постикрементом |
|
ST –Y, Rr |
Косвенная запись с преддекрементом |
|
STD Y+q, Rr |
Косвенная относительная запись (q = 0…63) |
|
ST Z, Rr |
Косвенная запись |
|
ST Z+, Rr |
Косвенная запись с постикрементом |
|
ST –Z, Rr |
Косвенная запись с преддекрементом |
|
STD Z+q, Rr |
Косвенная относительная запись (q = 0…63) |
|
STS A, Rr |
Непосредственная запись в ОЗУ |
|
LPM |
Загрузка данных из памяти программ |
31. Чтение байт из памяти программ (Read_from_Program) |
LPM Rd, Z |
Загрузка данных из памяти программ |
|
LPM Rd, Z+ |
Загрузка данных из памяти программ и постикрементом Z |
|
IN Rd, P |
Пересылка из РВВ в РОН |
16. Чтение из портов микроконтроллера |
OUT P, Rr |
Пересылка из РОН в РВВ |
07. Трансляция программы |
PUSH Rr |
Сохранение байта в стеке |
29. Стековая память и подпрограммы (Project_12) |
POP Rd |
Извлечение байта из стека |
Группа команд передачи управления по условию
Мнемоника |
Описание |
Видеоурок |
CPSE Rd, Rr |
Сравнение и пропуск следующей команды при равенстве |
23. Команды передачи управления по условию (Project_9)
|
SBRC Rr, b |
Пропуск следующей команды, если разряд РОН сброшен (b = 0…7) |
|
SBRS Rr, b |
Пропуск следующей команды, если разряд РОН установлен (b = 0…7) |
|
SBIC P, b |
Пропуск следующей команды, если разряд РВВ сброшен (b = 0…7) |
|
SBIS P, b |
Пропуск следующей команды, если разряд РВВ установлен (b = 0…7) |
Группа команд передачи управления по условию
Мнемоника |
Описание |
Видеоурок |
BRBC s, A |
Переход, если флаг s регистра SREG сброшен |
23. Команды передачи управления по условию (Project_9) |
BRBS s, A |
Переход, если флаг s регистра SREG установлен |
|
BRCS A |
Переход по переносу |
25. Команды условного перехода |
BRCC A |
Переход, если нет переноса |
|
BREQ A |
Переход по условию «равно» |
|
BRNE A |
Переход по условию «неравно» |
|
BRSH A |
Переход по условию «больше или равно» |
23. Команды передачи управления по условию (Project_9) |
BRLO A |
Переход по условию «меньше» |
|
BRMI A |
Переход по условию «отрицательное значение» |
|
BRPL A |
Переход по условию «положительное значение» |
|
BRGE A |
Переход по условию «больше или равно» (со знаком) |
|
BRLT A |
Переход по условию «меньше» (со знаком) |
|
BRHS A |
Переход по половинному переносу |
|
BRHC A |
Переход, если нет половинного переноса |
|
BRTS A |
Переход, если флаг T установлен |
|
BRTC A |
Переход, если флаг T сброшен |
|
BRVS A |
Переход по переполнению дополнительного кода |
|
BRVC A |
Переход, если нет переполнения дополнительного кода |
|
BRID A |
Переход, если прерывания запрещены |
|
BRIE A |
Переход, если прерывания разрешены |
Группа команд управления системой
Мнемоника |
Описание |
Видеоурок |
NOP |
Нет операции |
17. Новые команды ассемблера (Project_4) |
WDR |
Сброс сторожевого таймера |
40. Сторожевой таймер |
Директивы Ассемблера
Директива |
Описание |
Видеоурок |
.equ |
Задать константу |
16. Чтение из портов микроконтроллера |
.def |
Назначить регистру имя |
|
.include |
Подключить файл |
32. Макроопределения ассемблера, подключение внешних файлов, команды условного ассемблирования |
.org |
Установить положение в сегменте |
28. Запись и чтение памяти данных (Project_11) |
.db |
Определить байт константу во FLASH или EEPROM |
31. Чтение байт из памяти программ |
.dw |
Определить 16-битное слово во FLASH или EEPROM |
|
.byte |
Задать имя одному или нескольким байтам в памяти данных |
28. Запись и чтение памяти данных (Project_11) |
.cseg |
Выбор сегмента памяти программ (FLASH-памяти) |
|
.dseg |
Выбор сегмента памяти данных (SRAM) |
|
.eseg |
Выбор сегмента памяти EEPROM |
38.1 Основные сведения о EEPROM– памяти (EEPROM) |
.macro |
Начало макроса |
32. Макроопределения ассемблера, подключение внешних файлов, команды условного ассемблирования (Macros_and_Lib) |
.endm |
Конец макроса |
Выражения ассемблера
Выражения ассемблера делятся на операнды, операции и функции
Операнды
Операнд |
Описание |
Видеоурок |
метки |
Представляют собой числа, равные адресу в программной памяти. |
31. Чтение байт из памяти программ |
PC |
ProgramCounter – число, равное текущему состоянию программного счетчика. |
24. Команды безусловного перехода |
“string” |
Строка с текстом. Текст записывается в двойных кавычках. В программную память записывается в виде кодов ASCII. |
31. Чтение байт из памяти программ |
‘A’ |
Символ в одинарных кавычках. В программную память записывается в виде кодов ASCII. |
Функции
Функции |
Описание |
Видеоурок |
Low(x) |
Возвращает младший байт числа x |
18. Выражения языка ассемблера |
High(x) |
Возвращает старший байт числа x |
|
Byte1 (x) |
Возвращает первый байт числа x |
|
Byte2 (x) |
Возвращает второй байт числа x |
|
Byte3 (x) |
Возвращает третий байт числа x |
|
Byte4 (x) |
Возвращает четвертый байт числа x |
|
Exp2 (x) |
Возвращает 2x |
|
Log2 (x) |
Возвращает целую часть Log2 (x) |
Операции
Операции |
Описание |
Видеоурок |
~ |
Поразрядное инвертирование (НЕ) |
18. Выражения языка ассемблера |
& |
Поразрядное умножение (И) |
|
| |
Поразрядное сложение (ИЛИ) |
|
^ |
Поразрядноеисключающее ИЛИ |
|
+, — , *, / |
Сложение, вычитание, умножение, деление. |
|
>> |
Сдвиг на один разряд вправо |
|
<< |
Сдвиг на один разряд влево |
|
<, <=, >, >= |
Меньше, меньше или равно, больше, больше или равно. |
|
==, != |
Равно, неравно |
|
! |
Возвращает 1, если выражение равно нулю и 0, если выражение не равно нулю. |
Если найдутся какие-нибудь несоответствия или замечания, то обязательно пишите в комментариях.