лабы / MPS_4
.pdfСписок команд для МП архитектуры AVR
Все микропроцессорные системы «общаются» на машинном коде, который представляет из себя набор логических нулей и единиц. Однако данный вид «общения» не удобен для человека. Таким образом появился так называемый мнемокод. Чаще всего данный код представляют на языке ассемблера (автокод). Ассемблер это язык программирования низкого уровня, основное отличие его от машинного кода заключается в том, что он более удобен для человека. Список арифметических и логических команд на языке ассемблер представлен в таблице 1.
мнемокод |
форма записи |
|
описание |
регистр |
действия |
|
статусов |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Арифметические и логические операции |
|
||
|
|
|
|
|
|
ADD |
ADD R15, 16 |
|
Ариф. Сумма регистров |
Z,C,N,V,S,H |
R15=R15+R16 |
|
без «С» |
||||
|
|
|
|
|
|
|
|
|
|
|
|
ADC |
ADС R15, 16 |
|
Ариф. Сумма регистров |
Z,C,N,V,S,H |
R15=R15+R16+С |
|
с «С» |
||||
|
|
|
|
|
|
|
|
|
|
|
|
ADIW |
ADIW R15, $ |
|
Ариф. Сумма регистра и |
Z,C,N,V,S |
R15=R15+$ |
|
константы |
||||
|
|
|
|
|
|
|
|
|
|
|
|
SUB |
SUB R15, |
|
Ариф. Вычитание |
Z,C,N,V,S,H |
R15=R15-R16 |
R16 |
|
регистров без «С» |
|||
|
|
|
|
||
|
|
|
|
|
|
SUBI |
SUB R15, $ |
|
Ариф. Вычитание |
Z,C,N,V,S,H |
R15=R15-$ |
|
регистра и константы |
||||
|
|
|
|
|
|
|
|
|
|
|
|
SBC |
SBC R15, |
|
Ариф. Вычитание |
Z,C,N,V,S,H |
R15=R15-R16-C |
R16 |
|
регистров с «С» |
|||
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Ариф. Вычитание |
|
|
SBCI |
SBCI R15, $ |
|
регистра и константы с |
Z,C,N,V,S,H |
R15=R15-$-C |
|
|
|
«С» |
|
|
|
|
|
|
|
|
|
|
|
Ариф. Вычитание |
|
|
SBIW |
SBIW R15, $ |
|
регистра и константы со |
Z,C,N,V,S |
R15+1:R15=R15+1:R15+$ |
|
|
|
смешение |
|
|
|
|
|
|
|
|
AND |
AND R15, |
|
Лог. произведение |
Z,N,V,S |
R15=R15/\R16 |
R16 |
|
регистров |
|||
|
|
|
|
||
|
|
|
|
|
|
ANDI |
ANDI R16, $ |
|
Лог. произведение |
Z,N,V,S |
R15=R16/\$ |
|
регистра и константы |
||||
|
|
|
|
|
|
|
|
|
|
|
|
OR |
OR R15, R16 |
|
Лог. Сумма регистров |
Z,N,V,S |
R15=R15\/R16 |
|
|
|
|
|
|
ORI |
ORI R2, $ |
|
Лог. Сумма регистра и |
Z,N,V,S |
R2=R2\/$ |
|
константы |
||||
|
|
|
|
|
|
|
|
|
|
|
|
EOR |
EOR R12, |
|
Искл. Или регистров |
Z,N,V,S |
R12=R12+\/R22 |
R22 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
COM |
COM R1 |
|
обратное |
Z,C,N,V,S |
R1=FF-R1 |
|
инвертирование |
||||
|
|
|
|
|
|
|
|
|
|
|
|
NEG |
NEG R10 |
|
Инвертор регистра |
Z,C,N,V,S,H |
R10=00-R10 |
|
|
|
|
|
|
SBR |
SBR R15, $ |
|
Установка бита |
Z,N,V,S |
R15=R15+(R15*$*1) |
|
|
|
|
|
|
CBR |
CBR R15, $ |
Очистка бита |
Z,N,V,S |
R15=R15+(R15*$*0) |
|
|
|
|
|
|
|
INC |
INC R10 |
Инкремент регистра |
Z,N,V,S |
R10=R10+1 |
|
|
|
|
|
|
|
DEC |
DEC R30 |
Декрмент регистра |
Z,N,V,S |
R30=R30-1 |
|
|
|
|
|
|
|
TST |
TST R24 |
Проверка на 0 (или |
Z,N,V,S |
R24=R24*R24 |
|
отриц) |
|||||
|
|
|
|
||
|
|
|
|
|
|
CLR |
CLR R23 |
Очистка регистра |
Z,N,V,S |
R23=R23+\/R23 |
|
|
|
|
|
|
|
SER |
SER R15 |
Установка регистра |
нет |
R15=FF |
|
|
|
|
|
|
|
MUL |
MUL R15, |
Ариф. Произведение |
Z,C, |
R1:R0=R15*18 |
|
R18 |
регистров без знака |
||||
|
|
|
|||
|
|
|
|
|
|
MULS |
MULS R15, |
Ариф. Произведение |
Z,C, |
R1:R0=R15*18 |
|
R18 |
регистров со знаком |
||||
|
|
|
|||
|
|
|
|
|
|
|
MULSU R15, |
Ариф. Произведение |
|
|
|
MULSU |
регистров без знака и со |
Z,C, |
R1:R0=R15*18 |
||
R18 |
|||||
|
знаком |
|
|
||
|
|
|
|
||
|
|
|
|
|
|
FMUL |
FMUL R15, |
Ариф. Произведение |
Z,C, |
R1:R0=R15*18<<1 |
|
R18 |
регистров без знака |
||||
|
|
|
|||
|
|
|
|
|
|
FMULS |
FMULS R15, |
Ариф. Произведение |
Z,C, |
R1:R0=R15*18<<1 |
|
R18 |
регистров со знаком |
||||
|
|
|
|||
|
|
|
|
|
|
|
FMULSU |
Ариф. Произведение |
|
|
|
FMULSU |
регистров без знака и со |
Z,C, |
R1:R0=R15*18<<1 |
||
R15, R18 |
|||||
|
знаком |
|
|
||
|
|
|
|
||
|
|
|
|
|
|
|
|
Шифровка или |
|
|
|
DES |
$(1 или 0) |
расшифровка регистра |
нет |
Зависит от вида МК |
|
|
|
(1 шиф. 0 расшиф) |
|
|
|
|
|
|
|
|
Рассмотрим детальный пример нескольких команд.
ADD R10, R15
Представим, что в R10 записано в двоичном коде число равное 10 (0000 1010). В регистре R15 содержится число 8 (0000 1000). При выполнении сложения получим число 18 (0001 0010), после чего произойдет перезапись регистра R10. Таким образом после выполнения операции сложения происходит перезапись регистра R10. После чего происходит 6 проверок результата операции. После каждой успешной проверки, в регистре признака прогисходит установка лог. 1 в соответствующей ячейки.
Рассмотрим машинной код данной операции. 0000 11(Ar)(Ad) dddd rrrr.
Где 0000 – код операции
11(Ar)(Ad) – метка регистров
dddd – адрес хранения регистра R10
rrrr – адрес хранения регистра R15
OR R10, R6
Представим, что в R10 записано в двоичном коде число равное 10 (0000 0010). В регистре R6 содержится число 8 (0000 1010). При выполнении логического сложения получим число 10 (0000 1010) так как 3й бит уже установлен в состоянии лог 1. После чего произойдет перезапись регистра R10. Таким образом после выполнения лог. операции сложения происходит перезапись регистра R10. После чего происходит 3 проверок результата операции. После каждой успешной проверки, в регистре признака происходит установка лог. 1 в соответствующей ячейки.
Рассмотрим машинной код данной операции. 0010 10(Ar)(Ad) dddd rrrr.
Где 0010 – код операции
10(Ar)(Ad) – метка регистров
dddd – адрес хранения регистра R10
rrrr – адрес хранения регистра R15
Рассмотрим список команд переходов таблица 2.
Мнемокод |
комментарий |
|
|
|
|
RJMP |
Переход на сегмент |
|
|
|
|
IJMP |
Переход на директорию |
|
|
|
|
EIJMP |
Переход на директорию (внешнею) |
|
|
|
|
JMP |
Переход |
|
|
|
|
RCALL |
Вызов подпрограммы из сегмента |
|
|
|
|
ICALL |
Вызов подпрограммы из директории |
|
|
|
|
CALL |
Вызов подпрограммы |
|
|
|
|
RET |
Возврат |
|
|
|
|
RETI |
Возврат из сегмента |
|
|
|
|
SBRC |
Пропустить команду если бит 0 |
|
|
|
|
SBRS |
Пропустить команду если бит 1 |
|
|
|
|
SBIC |
Пропустить команду если бит |
0 |
|
(проверка регистра ввода вывода) |
|
|
|
|
SBIS |
Пропустить команду если бит |
1 |
|
(проверка регистра ввода вывода |
|
|
|
|
BRBS |
Переход если есть признаки |
|
|
|
|
BRBC |
Переход если нет признаков |
|
|
BREQ |
Переход если Z=1 |
|
|
BRNE |
Переход если Z=0 |
|
|
BRCS |
Переход если C=1 |
|
|
BRCC |
Переход если C=0 |
|
|
BRSH |
Переход если C+V=0 |
|
|
BRLO |
Переход если C+V=1 |
|
|
BRMI |
Переход если N=1 |
|
|
BRPL |
Переход если N=0 |
|
|
BRGE |
Переход если N+V=0 |
|
|
BRLT |
Переход если N+V=1 |
|
|
BRHS |
Переход если H=1 |
|
|
BRHC |
Переход если H=0 |
|
|
BRTS |
Переход если T=1 |
|
|
BRTC |
Переход если T=0 |
|
|
BRVS |
Переход если V=1 |
|
|
BRVC |
Переход если V=0 |
|
|
BRIE |
Переход если I=1 |
|
|
BRID |
Переход если I=0 |
|
|