Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / MPS_4

.pdf
Скачиваний:
53
Добавлен:
18.04.2022
Размер:
145.86 Кб
Скачать

Список команд для МП архитектуры 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

 

 

Соседние файлы в папке лабы