Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2023 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Instrukcje AVR

A

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

ADC – Add with Carry – Dodawanie z przeniesieniem

Opis

Dodaje dwa rejestry oraz zawartość znacznika C (ang. Carry – przeniesienie) i umieszcza wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd + Rr + C        

Składnia

 

Argumenty

 

Licznik rozkazów

ADC Rd,Rr   0 ≤ d ≤ 31, 0 ≤ r ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

0001
11rd
dddd
rrrr

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X
H: Rd3•Rr3+Rr3•R3+R3•Rd3
Ustawiany, jeśli było przeniesienie z bitu 3; w przeciwnym razie zerowany
S: N obrazek V
Dla testów liczb ze znakiem w kodzie U2
V: Rd7•Rr7•R7+Rd7Rr7•R7
Ustawiane, jeśli operacja doprowadza do przepełnienia U2; w przeciwnym razie zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi 0x00; w przeciwnym razie zerowany
C: Rd7•Rr7+Rr7•R7+R7•Rd7
Ustawiany, jeśli wystąpiło przeniesienie poza najstarszy bit wyniku; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

          ; Dodaj R1:R0 do R3:R2
add r2,r0 ; Dodaj młodsze bajty
adc r3,r1 ; Dodaj z przeniesieniem starsze bajty

Liczba słów: 1 (2 bajty)

Cykle: 1

Na początek:  podrozdziału   strony 

ADD – Add without Carry – Dodawanie bez przeniesienia

Opis

Dodaje dwa rejestry bez znacznika C (ang. Carry – przeniesienie) i umieszcza wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd + Rr        

Składnia

 

Argumenty

 

Licznik rozkazów

ADD Rd,Rr   0 ≤ d ≤ 31, 0 ≤ r ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

0000
11rd
dddd
rrrr

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X
H: Rd3•Rr3+Rr3•R3+R3•Rd3
Ustawiany, jeśli było przeniesienie z bitu 3; w przeciwnym razie zerowany
S: N obrazek V
Dla testów liczb ze znakiem w kodzie U2
V: Rd7•Rr7•R7+Rd7Rr7•R7
Ustawiane, jeśli operacja doprowadza do przepełnienia U2; w przeciwnym razie zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi 0x00; w przeciwnym razie zerowany
C: Rd7•Rr7+Rr7•R7+R7•Rd7
Ustawiany, jeśli wystąpiło przeniesienie poza najstarszy bit wyniku; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

          ; Dodaj R1:R0 do R3:R2
add r2,r0 ; Dodaj młodsze bajty
adc r3,r1 ; Dodaj z przeniesieniem starsze bajty

Liczba słów: 1 (2 bajty)

Cykle: 1

Na początek:  podrozdziału   strony 

ADIW – Add Immediate to Word – Dodawanie stałej do słowa

Opis

Dodaje wartość stałą (0 - 63) do pary rejestrów i wynik dodawania umieszcza w tej parze rejestrów. Instrukcja ta operuje na czterech górnych parach rejestrów i nadaje się dobrze do operacji na wskaźnikach.

Instrukcja ADIW nie jest dostępna na wszystkich mikrokontrolerach AVR. Sprawdź to w liście rozkazów określonego modelu.

Działanie

                 
Rd+1:Rd ← Rd+1:Rd + K

Składnia

 

Argumenty

 

Licznik rozkazów

Rd+1:Rd ← Rd+1:Rd + K   d obrazek {24,26,28,30}, 0 ≤ K ≤ 63   PC ← PC + 1

16-bitowy kod instrukcji

1001
0110
KKdd
KKKK

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X
S: N obrazek V
Dla testów liczb ze znakiem w kodzie U2
V: Rdh7•R15
Ustawiany, jeśli w wyniku operacji wystąpił nadmiar U2; inaczej zerowany.
N: R15
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi 0x0000; w przeciwnym razie zerowany
C: R15•Rdh7
Ustawiany, jeśli wystąpiło przeniesienie poza najstarszy bit wyniku; w przeciwnym razie zerowany

Wynik R jest równy Rdh:Rdl po operacji (Rdh7-Rdh0 = R15-R8, Rdl7-Rdl0=R7-R0).

Przykładowy kod:

adiw r25:24,1 ; Dodaj 1 do r25:r24
adiw ZH:ZL,63 ; Dodaj 63 do wskaźnika Z(r31:r30) 

Liczba słów: 1 (2 bajty)

Cykle: 2

Na początek:  podrozdziału   strony 

AND – Logical AND – Koniunkcja logiczna

Opis

Wykonuje logiczną operację koniunkcji (iloczynu logicznego) pomiędzy bitami rejestru Rd a odpowiadającymi im bitami rejestru Rr umieszczając wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd•Rr

Składnia

 

Argumenty

 

Licznik rozkazów

AND Rd,Rr   0 ≤ d ≤ 31, 0 ≤ r ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

0010
00rd
dddd
rrrr

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X 0 X X
S: N obrazek V
Dla testów liczb ze znakiem w kodzie U2
V: 0
Zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi 0x00; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

and r2,r3  ; Bitowa koniunkcja pomiędzy r2 i r3, wynik w r2
ldi r16,1  ; Ustaw maskę bitową 0000 0001 w r16
and r2,r16 ; Wyizoluj bit 0 w r2

Liczba słów: 1 (2 bajty)

Cykle: 2

Na początek:  podrozdziału   strony 

ANDI – Logical AND with Immediate – Koniunkcja logiczna ze stałą

Opis

Wykonuje logiczną operację koniunkcji (iloczynu logicznego) pomiędzy bitami rejestru Rd a odpowiadającymi im bitami stałej umieszczając wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd•K

Składnia

 

Argumenty

 

Licznik rozkazów

ANDI Rd,K   16 ≤ d ≤ 31, 0 ≤ K ≤ 255   PC ← PC + 1

16-bitowy kod instrukcji

0111
KKKK
dddd
KKKK

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X
S: N obrazek V
Dla testów liczb ze znakiem w kodzie U2
V: 0
Zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi 0x00; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

andi r17,0x0F ; wyzeruj górne 4 bity rejestru  r17
andi r18,0x10 ; Izoluj bit 4 w r18
andi r19,0xAA ; Wyzeruj nieparzyste bity w r19

Liczba słów: 1 (2 bajty)

Cykle: 2

Na początek:  podrozdziału   strony 

ASR – Arithmetic Shift Right – Arytmetyczne przesunięcie w prawo

Opis

Przesuwa wszystkie bity w rejestrze Rd o jedną pozycję w prawo. Bit 7 jest utrzymywany w stanie niezmienionym (konieczne dla ujemnych liczb U2). Bit 0 jest ładowany do znacznika przeniesienia C rejestru stanu SREG. Operacja to w efekcie dzieli arytmetycznie argument przez 2 nie zmieniając jego znaku. Znacznik przeniesienia może być używany do zaokrąglania wyniku.

Działanie

                 
obrazek

Składnia

 

Argumenty

 

Licznik rozkazów

ASR Rd   0 ≤ d ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

1001
010d
dddd
0101

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X
S: N obrazek V
Dla testów liczb ze znakiem w kodzie U2
V: N obrazek C, (dla N i C po wykonaniu przesunięcia)
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi 0x00; w przeciwnym razie zerowany
C: Rd0
Ustawiany, jeśli przed przesunięciem najmłodszy bit Rd miał stan 1; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

ldi r16,0x10 ; Załaduj dziesiętnie 16 do r16
asr r16     ; r16=r16 / 2
ldi r17,0xFC ; Załaduj -4 do r17
asr r17     ; r17=r17/2

Liczba słów: 1 (2 bajty)

Cykle: 1

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2023 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.