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

Микропроцессорные системы. Методическое пособие по выполнению лабораторных работ

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
880 Кб
Скачать

FMUL

Rd,Rr

дробное незнаковое

R1:R0<-(RdxRr)«1 (UU)

z,c

2 0)

 

 

умножение

 

 

 

FMULS

Rd,Rr

дробное умножение со

R1:R0<-(RdxRr)«1 (SS)

z,c

2 0)

 

 

знаком

 

 

 

FMULSU

Rd,Rr

дробное умножение

R1:R0<-(RdxRr)«1 (SU)

z,c

2 0)

знакового с

 

 

незнаковым

 

 

 

 

 

Branch Instructions

 

 

RJMP

к

перейти относительно

PC <- PC + к + 1

None

2

IJMP

 

перейти косвенно

PC(15:0)<-Z, PC(21:16)<-0

None

20)

EIJMP

 

расширенный косвенный

PC(15:0)<-Z, PC(21:16)<-

None

2 0)

 

 

переход к (Z)

EIND

 

 

JMP

к

перейти

PC<-k

None

3(1)

RCALL

к

вызвать подпрограмму

PC <- PC + к + 1

None

3/4 №

 

 

относительно

 

 

 

ICALL

 

вызвать подпрограмму

PC(15:0)<-Z, PC(21:16)<-0

None

3/4(1)(4

 

 

косвенно

 

 

)

CALL

к

выполнить длинный

PC<-k

None

4/5

 

 

вызов подпрограммы

 

 

(DW

RET

 

вернуться из

PC <- STACK

None

4/5 W

 

 

подпрограммы

 

 

 

RETI

 

вернуться из прерывания

PC <- STACK

I

4/5 W

CPSE

Rd,Rr

cравнить и пропустить

if (Rd = Rr) PC <- PC + 2 or

None

1 /2/3

 

 

если равно

3

 

 

CP

Rd,Rr

cравнить

Rd-Rr

Z,C,N,V,S

1

 

 

 

 

,H

 

CPC

Rd,Rr

cравнить с учетом

Rd - Rr - С

Z,C,N,V,S

1

 

 

переноса

 

,H

 

CPI

Rd,K

cравнить c константой

Rd-K

Z,C,N,V,S

1

 

 

 

 

,H

 

SBRC

Rr, b

пропустить если бит в

if (Rr(b)=0)PC<-PC + 2or3

None

1 /2/3

 

 

регистре очищен

 

 

 

SBRS

Rr, b

пропустить если бит в

if (Rr(b)=1)PC<-PC + 2or3

None

1 /2/3

 

 

регистре установлен

 

 

 

SBIC

A, b

пропустить если бит в

if(l/O(A,b)=0) PC <- PC + 2

None

1 /2/3

 

 

регистре I/O очищен

or 3

 

 

SBIS

A, b

пропустить если бит в

lf(l/O(A,b)=1) PC <- PC + 2

None

1 /2/3

 

 

регистре I/O установлен

or 3

 

 

BRBS

s, к

перейти если бит в

if (SREG(s) = 1) then PC <-

None

1/2

 

 

регистре статуса

PC+k+ 1

 

 

 

 

установлен

 

 

 

BRBC

s, к

перейти если бит в

if (SREG(s) = 0) then PC <-

None

1/2

 

 

регистре статуса очищен

PC+k + 1

 

 

BREQ

к

перейти если равно

if (Z=1)thenPC<-PC + k+1

None

1/2

BRNE

к

перейти если не равно

if (Z = 0) then PC <- PC + к

None

1/2

 

 

 

+ 1

 

 

BRCS

к

перейти если флаг

if (C=1)thenPC<-PC + k+1

None

1/2

 

 

переноса установлен

 

 

 

BRCC

к

перейти если флаг

if (C = 0) then PC <- PC + к

None

1 /2

 

 

переноса очищен

+ 1

 

 

BRSH

к

перейти если равно или

if (C = 0) then PC <- PC + к

None

1 /2

 

 

50

 

 

 

 

 

больше (без знака)

+ 1

 

 

BRLO

к

перейти если меньше (без

if (C = 1)thenPC<-PC + k+1

None

1/2

 

 

знака)

 

 

 

BRMI

к

перейти если минус

if (N = 1)thenPC<-PC + k+1

None

1 /2

BRPL

к

перейти если плюс

if (N = 0) then PC <- PC + к

None

1/2

 

 

 

+ 1

 

 

BRGE

к

перейти если больше или

if (N Ф V= 0) then PC <- PC

None

1 /2

 

 

равно (с учетом знака)

+ к + 1

 

 

BRLT

к

перейти если меньше чем

if (N Ф V= 1) then PC <- PC

None

1/2

 

 

(со знаком)

+ к + 1

 

 

BRHS

к

перейти если флаг

if (H = 1)thenPC<-PC + k+1

None

1/2

 

 

полупереноса установлен

 

 

 

BRHC

к

перейти если флаг

if (H = 0) then PC <- PC + к

None

1 /2

 

 

полупереноса очищен

+ 1

 

 

BRTS

к

перейти если флаг T

if (T=1)thenPC<-PC + k+1

None

1/2

 

 

установлен

 

 

 

BRTC

к

перейти если флаг T

if (T = 0) then PC <- PC + к

None

1/2

 

 

очищен

+ 1

 

 

BRVS

к

перейти если

if (V=1)thenPC<-PC + k+1

None

1/2

 

 

переполнение

 

 

 

 

 

установлено

 

 

 

BRVC

к

перейти если

if (V = 0) then PC <- PC + к

None

1 /2

 

 

переполнение очищено

+ 1

 

 

BRIE

к

перейти если глобальное

if(l = 1)thenPC<-PC + k+1

None

1/2

 

 

прерывание разрешено

 

 

 

BRID

к

перейти если глобальное

if (1 = 0) then PC <- PC + к

None

1/2

 

 

прерывание запрещено

+ 1

 

 

 

 

Data Transfer

Instructions

 

 

MOV

Rd, Rr

копировать регистр

Rd<-Rr

None

1

LDI

Rd, К

загрузить

Rd <-K

None

1

 

 

непосредственное

 

 

 

 

 

значение

 

 

 

LDS

Rd, к

загрузить

Rd <- (k)

None

P (1)(4)

 

 

непосредственно из СОЗУ

 

 

 

LD

Rd, X

загрузить косвенно из

Rd <- (X)

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

X

 

 

 

LD

Rd, X+

загрузить косвенно из

Rd <- (X), X <- X + 1

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

X

 

 

 

LD

Rd,-X

загрузить косвенно из

X <- X -1, Rd <- (X)

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

X

 

 

 

LD

Rd, Y

загрузить косвенно из

Rd <- (Y)

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Y

 

 

 

LD

Rd, Y+

загрузить косвенно из

Rd <- (Y), Y <- Y + 1

None

2 (2)(4)

 

 

51

 

 

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Y

 

 

 

LD

Rd,-Y

загрузить косвенно из

Y <- Y - 1, Rd <- (Y)

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Y

 

 

 

LDD

Rd,Y+q

загрузить косвенно из

Rd <- (Y + q)

None

 

 

 

СОЗУ в регистр с

 

 

О (1)(4)

 

 

использованием индекса

 

 

 

 

 

 

 

 

 

Y

 

 

 

LD

Rd, Z

загрузить косвенно из

Rd <- (Z)

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Z

 

 

 

LD

Rd, Z+

загрузить косвенно из

Rd <- (Z), Z <- Z+1

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Z

 

 

 

LD

Rd,-Z

загрузить косвенно из

Z <- Z -1, Rd <- (Z)

None

2 (2)(4)

 

 

СОЗУ в регистр с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Z

 

 

 

LDD

Rd, Z+q

загрузить косвенно из

Rd <- (Z + q)

None

 

 

 

СОЗУ в регистр с

 

 

P (1)(4)

 

 

использованием индекса

 

 

 

 

 

 

 

 

 

Z

 

 

 

STS

k, Rr

загрузить

(k) <- Rd

None

P (1)(4)

 

 

непосредственно в СОЗУ

 

 

 

 

 

 

 

ST

X, Rr

записать косвенно из

(X) <- Rr

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

использованием индекса

 

 

 

 

 

X

 

 

 

ST

X+, Rr

записать косвенно из

(X) <- Rr, X <- X + 1

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

использованием индекса

 

 

 

 

 

X с последующим

 

 

 

 

 

инкрементированием Х

 

 

 

ST

-X, Rr

записать косвенно из

X <- X - 1, (X) <- Rr

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

использованием индекса

 

 

 

 

 

X с предварительным

 

 

 

 

 

декрементированием Х

 

 

 

ST

Y, Rr

записать косвенно из

(Y) <- Rr

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Y

 

 

 

ST

Y+, Rr

записать косвенно из

(Y) <- Rr, Y <- Y + 1

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

использованием индекса

 

 

 

 

 

Y с последующим

 

 

 

 

 

52

 

 

 

 

 

инкрементированием Y

 

 

 

 

ST

-Y Rr

записать косвенно из

 

Y <- Y - 1, (Y) <- Rr

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

 

использованием индекса

 

 

 

 

 

 

Y с предварительным

 

 

 

 

 

 

декрементированием Y

 

 

 

 

STD

Y+q,Rr

записать косвенно из

 

(Y + q) <- Rr

None

 

 

 

регистра в СОЗУ с

 

 

 

 

 

 

использованием индекса

 

 

 

P (1)(4)

 

 

Y (Y: Неизменен, q:

 

 

 

 

 

 

смещение)

 

 

 

 

ST

Z, Rr

записать косвенно из

 

(Z) <- Rr

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

 

использованием индекса

 

 

 

 

 

 

Z

 

 

 

 

ST

Z+, Rr

записать косвенно из

 

(Z) <- Rr, Z <- Z + 1

None

2 (2)(4)

 

 

регистра в СОЗУ с

 

 

 

 

 

 

использованием индекса

 

 

 

 

 

 

Z с последующим

 

 

 

 

 

 

инкрементированием Z

 

 

 

 

ST

-Z, Rr

записать косвенно из

 

Z<-Z-1,(Z)<-Rr

None

 

 

 

регистра в СОЗУ с

 

 

 

 

 

 

использованием индекса

 

 

 

P (2)(4)

 

 

Z с предварительным

 

 

 

 

 

 

декрементированием Z

 

 

 

 

STD

Z+q,Rr

записать косвенно из

 

(Z + q) <- Rr

None

 

 

 

регистра в СОЗУ с

 

 

 

 

 

 

использованием индекса

 

 

 

2 (1)(4)

 

 

Z (Z: Неизменен, q:

 

 

 

 

 

 

смещение)

 

 

 

 

LPM

 

загрузить байт памяти

 

R0 <- (Z)

None

3(3)

 

 

программ

 

 

 

 

LPM

Rd, Z

загрузить байт памяти

 

Rd <- (Z)

None

3(3)

 

 

программ

 

 

 

 

LPM

Rd, Z+

загрузить байт памяти

 

Rd <- (Z), Z <- Z + 1

None

3(3)

программ

 

 

 

последующим

 

 

 

 

 

 

инкрементированием Z

 

 

 

 

ELPM

 

расширенная загрузка

 

R0 <- (RAMPZ:Z)

None

3<1>

 

 

памяти программ

 

 

 

 

ELPM

Rd, Z

расширенная загрузка

 

Rd <- (RAMPZ:Z)

None

3<1>

 

 

памяти программ

 

 

 

 

 

 

последующим

 

 

 

 

 

 

инкрементированием Z

 

 

 

 

 

 

MCU

Control Instructions

 

 

BREAK

 

точка останова

 

(See specific descr. for

None

1 <1>

 

 

 

 

BREAK)

 

 

NOP

 

выполнить холостую

 

 

None

1

 

 

команду

 

 

 

 

SLEEP

 

установить режим SLEEP

 

(see specific descr. for

None

1

 

 

 

 

Sleep)

 

 

WDR

 

cбросить сторожевой

 

(see specific descr. for

None

1

 

 

 

53

 

 

 

 

таймер

WDR)

 

 

SPM

 

запись памяти программ

(Z)<-R1:R0

None

.(1)

IN

Rd, A

загрузить данные из порта

Rd <- I/O(A)

None

1

 

 

I/O в регистр

 

 

 

OUT

A, Rr

записать данные из

I/O(A) <- Rr

None

1

 

 

регистра в порт I/O

 

 

 

PUSH

Rr

поместить регистр в стек

STACK <- Rr

None

2 0)

POP

Rd

записать регистр из стека

Rd <- STACK

None

2 0)

 

 

Bit and

Bit-test Instructions

 

 

LSL

Rd

логически сдвинуть влево

Rd(n+1 )<-Rd(n), Rd(0)<-

Z,C,N,V,

1

 

 

 

0,C<-Rd(7)

H

 

LSR

Rd

логически сдвинуть

Rd(n)<-Rd(n+1),Rd(7)<-

Z,C,N,V

1

 

 

вправо

0,C<-Rd(0)

 

 

ROL

Rd

cдвинуть влево через

Rd(0)<-C,Rd(n+1)<-

Z,C,N,V,

1

 

 

перенос

Rd(n),C<-Rd(7)

H

 

ROR

Rd

cдвинуть вправо через

Rd(7)<-C, Rd(n)<-Rd(n+1

Z,C,N,V

1

 

 

перенос

),C<-Rd(0)

 

 

ASR

Rd

арифметически сдвинуть

Rd(n)<-Rd(n+1), n=0..6

Z,C,N,V

1

 

 

вправо

 

 

 

SWAP

Rd

поменять нибблы местами

Rd(3..O) <-> Rd(7..4)

None

1

BSET

s

установить бит в регистре

SREG(s) <- 1

SREG(s)

1

 

 

статуса (SREG)

 

 

 

BCLR

s

очистить бит в регистре

SREG(s) <- 0

SREG(s)

1

 

 

статуса (SREG)

 

 

 

SBI

A, b

установить бит в регистр

I/O(A, b) <- 1

None

2

 

 

I/O

 

 

 

CBI

A, b

Очистить бит в регистре

I/O(A, b) <- 0

None

2

 

 

I/O

 

 

 

BST

Rr, b

переписать бит из

T <- Rr(b)

T

1

 

 

регистра во флаг T

 

 

 

 

 

регистра статуса (SREG)

 

 

 

BLD

Rd, b

загрузить содержимое T

Rd(b) <- T

None

1

 

 

флага регистра статуса

 

 

 

 

 

(SREG) в бит регистра

 

 

 

SEC

 

установить флаг переноса

C<-1

С

1

CLC

 

очистить флаг переноса в

C<-0

С

1

 

 

регистре статуса (SREG)

 

 

 

SEN

 

установить флаг

N<-1

N

1

 

 

отрицательного значения

 

 

 

CLN

 

очистить флаг

N<-0

N

1

 

 

отрицательного значения

 

 

 

 

 

в регистре статуса (SREG)

 

 

 

SEZ

 

установить флаг нулевого

Z<-1

Z

1

 

 

значения

 

 

 

CLZ

 

очистить флаг нулевого

Z<-0

z

1

 

 

значения

 

 

 

SEI

 

установить флаг

l<-1

I

1

 

 

глобального прерывания

 

 

 

CLI

 

очистить флаг

l<-0

I

1

 

 

глобального прерывания в

 

 

 

 

 

54

 

 

 

 

 

регистре статуса (SREG)

 

 

 

SES

 

установить флаг знака

S<-1

s

1

CLS

 

очистить флаг знака

S<-0

s

1

SEV

 

установить флаг

V<-1

V

1

 

 

переполнения

 

 

 

CLV

 

очистить флаг

V<-0

V

1

 

 

переполнения

 

 

 

SET

 

установить флаг T

T<-1

T

1

CLT

 

oчистить T флаг

T<-0

T

1

SEH

 

установить флаг

H<-1

H

1

 

 

полупереноса

 

 

 

CLH

 

oчистить флаг

H<-0

H

1

 

 

полупереноса в регистре

 

 

 

 

 

статуса (SREG)

 

 

 

55

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]