Menu
Команды языка ассемблер
Набор команд AT90S2313
Мнемоника Операнды Описание Действие Флаги Цкл
АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ КОМАНДЫ
ADD Rd, Rr Сложить два регистра Rd ADC Rd, Rr Сложить с переносом Rd ADIW Rdl,K Сложить слово с конст Rdh,l SUB Rd, Rr Вычесть два регистра Rd SUBI Rd, K Вычесть константу Rd SBIW Rdl,K Вычесть слово с конст Rdh,l SBC Rd, Rr Вычесть с переносом Rd SBCI Rd, K Вычесть с переносом Rd AND Rd, Rr Логическое И Rd ANDI Rd, K Логическое И Rd OR Rd, Rr Логическое ИЛИ Rd ORI Rd, K Логическое ИЛИ Rd EOR Rd, Rr Исключающее ИЛИ Rd COM Rd Дополнение до 1 Rd<$FF - Rd Z,C,N,V 1
NEG Rd Дополнение до 2 Rd<$00 - Rd Z,C,N,V,H 1
SBR Rd,K Установ. бит(ы) в рег. Rd CBR Rd,K Сброс. бит(ы) в рег. Rd INC Rd Увеличить на 1 Rd DEC Rd Уменьшить на 1 Rd TST Rd Проверить на 0 или 1 Rd CLR Rd Очистить регистр Rd SER Rd Установить регистр Rd<$FF None 1
КОМАНДЫ ВЕТВЛЕНИЯ
RJMP k Относительный переход PC LJMP Переход по адресу (Z) PC RCALL k Относ. вызов подпрогр. PC ICALL Вызов подпр по адр (Z) PC RET Выход из подпрограммы PC RETI Выход из прерывания PC CPSE Rd,Rr Сравнить, пропуск
если равно if(Rd=Rr)
PC CP Rd,Rr Сравнить Rd-Rr Z,N,V,C,H 1
CPC Rd,Rr Сравнить с переносом Rd-Rr-C Z,N,V,C,H 1
CPI Rd,K Сравнить с константой Rd-K Z,N,V,C,H 1
SBRC Rr,b Пропуск если бит в регистре сброшен if(Rr(b)=0) PC SBRS Rr,b Пропуск если бит в регистре установлен if(Rr(b)=1) PC SBIC P, b Пропуск если бит в рег ввода/выв. сброшен if(P(b)=0) PC SBIS P, b Пропуск если бит в рег ввода/выв. установлен if(P(b)=1) PC BRBS s, k Переход если установл. флаг s if(SREG(s)=1) PC BRBC s, k Переход если сброшен флаг s if(SREG(s)=0) PC BREQ k Переход если равно if(Z=1) PC BRNE k Переход если неравно if(Z=0) PC BRCS k Переход если установл. перенос if(C=1)
PC BRCC k Переход если сброшен перенос if(C=0) PC BRSH k Переход если равно или больше if(C=0) PC BRLO k Переход если меньше if(C=1) PC BRMI k Переход если минус if(N=1) PC BRPL k Переход если плюс if(N=0) PC BRGE k Переход если больше или равно, со знаком if(N XOR V=0) PC BRLT k Переход если меньше нуля, со знаком if(N XOR V=1) PC BRHS k Переход если установл. флаг H if (H=1) PC BRHC k Переход если сброшен флаг H if (H=0) PC BRTS k Переход если установл. флаг T if (H=1) PC BRTC k Переход если сброшен флаг T if (H=0) PC BRVS k Переход если установлен флаг V (переполнение) if (H=1) PC BRVC k Переход если сброшен флаг V if (H=0) PC BRIE k Переход если разрешены прерывания if(I=1) PC BRID k Переход если запрещены прерывания if(I=1) PC КОМАНДЫ ПЕРЕСЫЛКИ
MOV Rd,Rr Пересылка между рег. Rd LDI Rd,K Загрузить константу Rd LD Rd,X Загрузить регистр непосредственно Rd<(X) None 2
LD Rd,X+ Загрузить регистр непоср. c пост инкрем. Rd<(X),X LD Rd,-X Загрузить регистр непоср. с предв.декрем. X LD Rd,Y Загрузить регистр непосредственно Rd<(Y) None 2
LD Rd,Y+ Загрузить регистр непоср. c пост инкрем. Rd<(Y),Y LD Rd,-Y Загрузить регистр непоср. с предв.декрем. Y LDD Rd,Y+q Загрузить регистр непоср. со смещением Rd<(Y+q) None 2
LD Rd,Z Загрузить регистр непосредственно Rd<(Z) None 2
LD Rd,Z+ Загрузить регистр непоср. c пост инкрем. Rd<(Z),Z LD Rd,-Z Загрузить регистр непоср. с предв.декрем. Z LDD Rd,Z+q Загрузить регистр непоср. со смещением Rd<(Z+q) None 2
LDS Rd,k Загрузить из ОЗУ Rd<(k) None 3
ST X,Rr Записать регистр непосредственно (X) ST X+,Rr Записать регистр непоср.c пост инкр. (X) ST -X,Rr Записать регистр непоср.c пред.декрем. X ST Y,Rr Записать регистр непосредственно (Y) ST Y+,Rr Записать регистр непоср.c пост инкр. (Y) ST -Y,Rr Записать регистр непоср.c пред.декрем. Y STD Y+q,Rr Запис.рег.непоср.со смещением (Y+q) ST Z,Rr Записать регистр непосредственно (Z) ST Z+,Rr Записать регистр непоср.c пост инкр. (Z) ST -Z,Rr Записать регистр непоср.c пред.декрем. Z STD Y+q,Rr Запис.рег.непоср.со
смещением (Y+q) STS k,Rr Записать в ОЗУ (k) LPM Загр.из памяти прогр. R0<(Z) None 3
IN Rd, P Ввод из порта Rd

OUT P, Rr Вывод в порт P PUSH Rr Записать в стек STACK POP Rr Прочитать из стека Rr КОМАНДЫ РАБОТЫ С БИТАМИ
SBI P,b Установить бит в рег. ввода/вывода I/O(P,b)<1 None 2
CBI P,b Сбросить бит в рег. ввода/вывода I/O(P,b)<0 None 2
LSL Rd Логический сдвиг влево Rd(n+1) LSR Rd Логич.сдвиг вправо Rd(n) ROL Rd сдвиг влево через C Rd(0) ROR Rd сдвиг вправо через C Rd(7) ASR Rd Арифметический сдвиг вправо Rd(n) SWAP Rd Обмен нибблов (тетрад) Rd(3-0) BSET s Установить флаг SREG(s)<1 SREG(s) 1
BCLR s Сбросить флаг SREG(s)<0 SREG(s) 1
BST Rr,b Запомнить бит в T T BLD Rd, b Прочитать бит из T Rd(b) SEC Установить перенос C<1 C 1
CLC Сбросить перенос C<0 C 1
SEN Установить флаг N N<1 N 1
CLN Сбросить флаг N N<0 N 1
SEZ Установить флаг Z Z<1 Z 1
CLZ Сбросить флаг Z Z<0 Z 1
SEI Разрешить прерывания I<1 I 1
CLI Запретить прерывания I<0 I 1
SES Установить флаг S S<1 S 1
CLS Сбросить флаг S S<0 S 1
SEV Установить флаг V V<1 V 1
CLV Сбросить флаг V V<0 V 1
SET Установить флаг T T<1 T 1
CLT Сбросить флаг T T<0 T 1
SEH Установить флаг H H<1 H 1
CLH Сбросить флаг H H<0 H 1
NOP Нет операции None 1
SLEEP Останов None 3
WDR Сброс сторожевого таймера None 1

Команды ветвления позволяют разветвлять ход выполнения программы за счет анализа флагов статусного регистра, которые изменяются после выполнения арифметической команды вычитания (с целью сравнения, например, текущего значения счетчика и его предельного значения). Если после выполнения арифметической операции изменяется содержимое флага, контролируемое в данной команде ветвления, то после выполнения команды ветвления содержимое программного счетчика может принимать двоякое значение: 1) либо оно на единицу больше, чем содержимое РС при выполнении предыдущей программы ( т.е. условие не выполняется); 2) либо содержимое РС изменяется на константу, являющуюся операндом команды ветвления ( условие выполняется).

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