• Nie Znaleziono Wyników

 Wykad 1,2,3,4 - Instrukcje AVR / tryby adresowania

N/A
N/A
Protected

Academic year: 2021

Share " Wykad 1,2,3,4 - Instrukcje AVR / tryby adresowania"

Copied!
145
0
0

Pełen tekst

(1)

Podstawy

Techniki Mikroprocesorowej

Instrukcje, tryby adresowania

dr inż. Piotr Markowski

(2)

Lista instrukcji

ATmega8535

(3)

Lista instrukcji ATmega8535

(1) Arytmetyczne i logiczne

(4)

Lista instrukcji ATmega8535

Oznaczenia

Rd, Rr – rejestr uniwersalny

X, Y, Z – rejestry uniwersalne 16-bitowe

P – rejestr specjalny

K – stała (dane)

k – stała (adres)

(5)
(6)

Lista instrukcji ATmega8535

(2) Skoku/warunkowe

(7)

Lista instrukcji ATmega8535

(3) Transferu danych

(8)

Lista instrukcji ATmega8535

(4) Na bitach

(9)

Lista instrukcji ATmega8535

(5) Specjalne

(10)
(11)
(12)

OUT – Store Register to I/O Location

(13)

IN - Load an I/O Location to Register

(14)

Program 1

(15)
(16)
(17)
(18)
(19)

ROL – Rotate Left trough Carry

ROR – Rotate Right trough Carry

(20)
(21)
(22)

Wysyłanie na stos / pobieranie ze stosu

Rd

(RAMEND)

(23)

PUSH – Push Register on Stack

POP – Pop Register from Stack

(24)

1. Instrukcje skoku i warunkowe

(25)
(26)
(27)
(28)

BRTS – Branch if the T Flag is Set

BRTC – Branch if the T Flag is Cleared

(29)

BRHS – Branch if Half Carry Flag is Set

BRHC – Branch if Half Carry Flag is Cleared

(30)

BRGE – Branch if Greater or Equal (Signed)

BRLT – Branch if Less Than (Signed)

(31)

BRVS – Branch if Overflow Set

BRVC – Branch if Overflow Cleared

(32)

BRPL – Branch if Plus

BRMI – Branch if Minus

(33)

BREQ – Branch if Equal

BRNE – Branch if Not Equal

(34)

BRSH – Branch if Same or Higher (Unsigned)

BRLO – Branch if Lower (Unsigned)

(35)

BRSH – Branch if Same or Higher (Unsigned)

BRLO – Branch if Lower (Unsigned)

BRSH = BRCC (Branch if Carry Clear)

BRLO = BRCS (Branch if Carry Set)

(36)

BRBS – Branch if Bit in SREG is Set

BRBC – Branch if Bit in SREG is Cleared

(37)
(38)

Porównywanie rejestrów – CP Rd,Rr

CP

R0, R31 ;

BRxx

tam

; jeżeli

RJMP

tutaj ; jeżeli

Rd Rr

BRGE

*

Rd Rr

BRLT

*

BRSH

**

BRLO

**

BRCC

**

BRCS

**

Rd Rr

BREQ

*

Rd Rr

BRNE

*

(39)

Przykład

Pętla opóźniająca

BRNE

(40)

1 + 255·(1+2) = 766 cykli ≈ 0,8 ms

Pętla opóźniająca

1

1

2(1)

BRNE – skocz do „OP” jeśli flaga Z = 0

Z = 1  0000 0001 -> 0000 0000

R20 R20

(41)

1. Instrukcje skoku i warunkowe

1.2. Instrukcje warunkowe

(pominięcia)

(42)
(43)
(44)

SBRS – Skip if Bit in Register is Set

SBRC – Skip if Bit in Register is Cleared

(45)

SBIS – Skip if Bit in I/O Register is Set

SBIC – Skip if Bit in I/O Register is Cleared

(46)

Przykład

Zmiana kierunku obrotu

SBRS/SBRC

(47)

Zmiana kierunku obrotu

(48)

1. Instrukcje skoku i warunkowe

(49)
(50)
(51)
(52)
(53)
(54)
(55)
(56)

2. Instrukcje arytmetyczne

i logiczne

(57)
(58)
(59)
(60)

OR – Logical OR

(61)
(62)
(63)
(64)
(65)
(66)
(67)

2. Instrukcje arytmetyczne

i logiczne

(68)
(69)

ADD –

Add without Carry

(70)

ADC –

Add with Carry

(71)

ADIW – Add Immediate to Word

(72)
(73)
(74)
(75)
(76)

MULS – Multiply Signed

0111 1111 - 127

0111 1110 - 126

...

0000 0001 -

1

0000 0000 -

0

1111 1111 -

-1

1111 1110 -

-2

...

1000 0001 - -127

1000 0000 - -128

(77)
(78)

Mnożenie

MUL:

1000 0110 1100 1110

R1 R0

MULS:

0000 0111 1100 1110

R1 R0

MULSU:

1111 0101 1100 1110

R1 R0

(79)
(80)

Mnożenie ułamków

Zapis liczby zmiennoprzecinkowej:

2

0

+ 2

-1

+ 2

-2

+ 2

-3

+ 2

-4

+ 2

-5

+ ...

1000 0000 =

1100 0000 =

0110 0000 =

1111 1111 = 1.9921875

x

=

FMUL:

(81)
(82)

Ułamki ze znakiem

0111 1111 = 0.9921875

...

0000 0001 = 0.0078125

0000 0000 = 0

1111 1111 = -0.0078125

0000 0000

+ 1

...

1000 000 = -1

(83)
(84)
(85)
(86)
(87)

3. Instrukcje bitowe

i rejestru SREG

(88)
(89)

SBR – Set Bits in Register

CBR – Clear Bits in Register

(90)

SBI – Set Bit in I/O Register

CBI – Clear Bit in I/O Register

(91)
(92)

LSL – Logical Shift Left

LSR – Logical Shift Right

(93)

ROL – Rotate Left trough Carry

ROR – Rotate Right trough Carry

ADC

1001 1100

1001 1100

0011 1000

C=0

C=1

+

(94)
(95)
(96)

3. Instrukcje bitowe

i rejestru SREG

(97)
(98)

Instrukcje CL..

CLI

CLT

CLH

CLS

CLV

CLN

CLZ

CLC

« 0

« 0

« 0

« 0

« 0

« 0

« 0

« 0

I

T

H

S

V

N

Z

C

Clear flag

(99)

Instrukcje SE..

SEI

SET

SEH

SES

SEV

SEN

SEZ

« 1

« 1

« 1

« 1

« 1

« 1

« 1

I

T

H

S

V

N

Z

Set flag

(100)

BSET – Bit Set in SREG

BCLR – Bit Clear in SREG

(101)

BLD – Bit Load from T Flag to Register

BST – Bit Store from Register to T Flag

(102)

4. Tryby adresowania,

(103)
(104)

Tryby adresowania – mapy pamięci

Pamięć programu

0

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

511 (607) (RAMEND)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

45 / 86

2 / 86

2 / 86

9 / 86

2 / 86

26 / 89

(105)

4.1. Tryby adresowania:

(106)

Rejestry uniwersalne bezpośrednio

Pamięć programu

0

4095

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

511 (607) (RAMEND)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

INC

R16

CLR

R17

ROL

R18

SWAP

R19

ADD

R20,R21

OR

R22,R23

MUL

R24,R24

CP

R25,R26

MOV

R27,R28

LDI

R29,123

(107)

Tryby adresowania –

(108)
(109)

4.2. Tryby adresowania:

(110)

Tryby adresowania –

(111)

Tryby adresowania –

rejestry specjalne bezpośrednio

Pamięć programu

0

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

SBI

GICR,6

CBI

ADMUX,4

SEI

IN

R16,PINA

OUT

DDRB,R18

(112)

4.3. Tryby adresowania:

pamięć danych

(113)

Tryby adresowania – pamięć danych

Pamięć programu

0

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

(114)

Tryby adresowania – pamięć danych

11010001

Pam. danych

0111 001001 010111

Kod

op.

Arg. 1

(9)

Arg. 2

(adres)

0111 001001 010111

Kod

op.

Arg. 1

(9)

Arg. 2

(23)

(115)

4.3.1. Tryby adresowania:

(116)

Tryby adresowania –

(117)
(118)

Tryby adresowania – pamięć danych

Pamięć programu

0

4095

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

511 (607) (RAMEND)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

(119)

LDS – Load Direct from Data Space

STS – Store Direct to Data Space

(120)

4.3.2. Tryby adresowania:

(121)

Tryby adresowania –

pamięć danych pośrednio

(122)

Tryby adresowania –

pamięć danych pośrednio

Pamięć programu

0

4095

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

511 (607) (RAMEND)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

(123)

Tryby adresowania –

pamięć danych pośrednio (LD, ST)

LDI

R31,$02

;rejestr

LDI

R30,$5F

;rejestr

;pod adresem $025F jest

LDI

Yh,$00

;rejestr

LDI

Yl,$3a

;rejestr

(124)

Tryby adresowania –

pamięć danych pośrednio (LDD, STD)

LDD

R16, Y+25

//do R16 bajt

(125)

Tryby adresowania –

pamięć danych pośrednio (XCH)

(126)

4.3.3. Tryby adresowania:

pamięć danych: stos

(127)

Tryby adresowania –

pamięć danych: stos

Pamięć programu

0

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

(128)

Wysyłanie na stos / pobieranie ze stosu

Rd

(RAMEND)

SP

PUSH

R20

;wyrzuca R20

POP

R5

;wczytuje do R5

(129)

4.4. Tryby adresowania:

pamięć programu

(130)

Tryby adresowania – pamięć programu

Pamięć programu

0

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

511 (607) (RAMEND)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

(131)
(132)

LPM – Load Program Memory

SPM – Store Program Memory

LPM

//do R0

LPM

R16, Z

//do R16

LPM

R17,Z+

//do R17

SPM

//do pary

//ładuje 16

(133)

4.5. Adresowanie kodu programu

(134)

Tryby adresowania – mapy pamięci

Pamięć programu

0

4095

32 rejestry

uniwersalne

64 rejestry

specjalne

SRAM

512 B

Pamięć danych

0

0 (32)

0 (96)

31

63 (95)

511 (607) (RAMEND)

FLASH EEPROM

8 kB

(4096 x 16 bitów)

rejestr

Program Counter

(licznik programu)

(135)

Adresowanie skoków względne

RJMP, RCALL, BRxx

(136)

Adresowanie skoków pośrednie

IJMP, ICALL

IJMP

//skocz do

ICALL

//skocz

LDI

R31,$2a

LDI

R30,$c2

(137)

Adresowanie skoków bezpośrednie

JMP

2547

//skocz do

(138)

5. Instrukcje specjalne

(kontrolne MCU)

(139)
(140)
(141)
(142)
(143)
(144)
(145)

Przykładowe zagadnienia sprawdzające

1. Zapisz liczbę

147

w 8-bitowym kodzie: binarnym, U2, szesnastkowym.

2. Wskaż błąd w zapisie instrukcji

LDI

: LDI R16,R17.

W jakich kodach liczbowych należy zapisać

R16, R17

dla instrukcji MULS R16,R17?

(opanowanie wiedzy na temat wybranych instrukcji: LDI, OUT/IN, ROL/ROR, MULS, EOR,

MOV, BRNE, RJMP/IJMP/RCALL, RET/RETI, SBRS/SBRC/SBIS/SBIC, PUSH/POP, SEI/CLI).

3. Zapisz liczbę

-1,75

w 8-bitowym kodzie zmiennoprzecinkowym.

4. Adresowanie bezpośrednie vs. pośrednie – wyjaśnij różnicę.

5. Jakich rodzajów pamięci dotyczy pojęcie adresowania?

Cytaty

Powiązane dokumenty

For the group D(4) find the set of generators containing possibly least elements.. Is this

[r]

We present a stability theorem of Ulam–Hyers type for K-convex set-valued functions, and prove that a set-valued function is K-convex if and only if it is K-midconvex

Berndtsson-Lempert Proof 2 can be improved to obtain the Ohsawa- Takegoshi extension theorem with optimal constant (one has to use Berndtsson’s positivity of direct

Using similar methods one can obtain a slightly more general result, the extension theorem with negligible weight and optimal

[r]

So, the following theorem extends the Krengel–Lin decomposition which is discussed in [KL] only for compact groups..

The minimum total cover problem was first shown to be NP-hard in general graphs by Majumdar [10], where he also gives a linear-time algorithm for trees.. Hedetniemi