Instrukce pro AVR
Instrukce pro přesuny dat
Nejjednodušší instrukcí pro přesun dat je bezesporu instrukce MOV a to nejen na procesorech rodiny AVR. Tato instrukce přesune nedestruktivně obsah zdrojového registru na cílový registr.
MOV Rd, Rr
V předchozích lekcích jste mohli vidět instrukci LDI (load immediately). Tato instrukce nastaví registr na hodnotu uvedené konstanty
LDI Rd, konstanta
Tuto instrukci lze však použít pouze na registry R16 - R31.
Další instrukcí, kterou jste mohli už v předchozích dílech zahlédnou je instrukce LD (load). Slouží ke čtení paměti RAM, adresované ukazateli. Příklady jste mohli vidět v lekci Trocha teorie pro začátek.
Souvisí s ní i instrukce LDD, kde však je možné určit posunutí šesti bity. Pracuje však jen s ukazateli Y a Z:
LDD, Rd, Y + offset
Instrukce LDS se nevyužívá k adresování ukazatelů, ale adresa je určena přímo konstantou:
LDS Rd, adresa16bitu
Stejně se zapisují i instrukce pro zápis: ST, STD a STS
Pro práci s pamětí programu slouží instrukce LPM (load program memory), která do registru R0 přesune obsah paměti programu určený ukazatelem Z.
Pro zápisy na registry procesoru (na adrese vyšší než 31) musíme použít instrukci OUT, pro čtení IN.
Pro uložení do zásobníku (co to je zásobník viz minulý díl) použijeme instrukci PUSH s jediným parametrem určujícím ukládaný registr, pro čtení zase instrukci POP.
Bitové operace
Procesory AVR disponují instrukcemi i pro jednoduché bitové operace. S některými jsme se již seznámili. Jsou to instrukce SBI (set bit) a CBI (clear bit).Pro bitový posuv disponuje AVR instrukcemi LSL, LSR (logical shit left - right). Bit který je vytlačen je přesunut do carry, ale dalším posunem je ztracen, na rozdíl od instrukcí pro bitovou rotaci ROL, ROR (rotate left - right) kdy je bit uložený v carry vždy vrácen na protilehlý konec registru.
Malý přehled
SBI - nastaví bit
CBI - smaže bit
LSL - posun vlevo
LSR - posun vpravo
ROL - rotace vlevo
ROR - rotace vpravo
ASR - aritmetický posuv vpravo
SWAP - vymění dolní a horní nibble
BSET - nastaví příznak v registru SREG
BCLR - smaže příznak v SREG.
Další instrukce si můžete nastudovat v minule citovaném PDF souboru výrobce procesoru.
Logické operace
AND - logický součin AND Rd, RrANDI - logický součin s konstantou, přičemž Rd, je R16 - R32
OR - logický součet
ORI - logický součet s konstantou
EOR - exclusive OR (XOR)
COM - complement (doplněk)
SBR - nastaví bity v registru podle konstanty
CBR - nuluje bity podle konstanty
TST - nuluje bity podle nekladného čísla
CLR - smaže registr
SER - nastaví registr na FF
Aritmetické operace
ADD - sečte operandyADC - sečte operandy a přičte C (carry)
ADIW - přičte konstantu ke slovu Rd+1:Rd, d je z 24, 26, 28, 30
SUB - odečte operandy
SUBI - odečte od registru konstantu
SBIW - obdoba ADIW
SBC - odečte registry a C (carry)
SBCI - odečte od registru konstantu a C (carry)
INC - inkrementuje registr (+1)
DEC - dekrementuje registr (-1)
NEG - neguje registr
Instrukce pro porovnávání
CP - porovná registryCPC - porovná registry s C
CPI - porovná registr s konstantou
Ostatní instrukce
NOP - no operation - prázdná instrukceSLEEP - režim spánku
WDR - nuluje watchdog
Toto byl jenom takový stručný přehled instrukcí, v následujících lekcích se s nimi seznámíte prakticky. Jako ve všem i zde platí, že opakování je matka moudrosti, proto si myslím, že není třeba se instrukce učit nazpaměť, ale důležité je vědět, kde je najít...
Komentovat článek
Komentáře k článku
článek zatím nikdo nekomentoval

