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, Rr
ANDI - 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 operandy
ADC - 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á registry
CPC - porovná registry s C
CPI - porovná registr s konstantou

Ostatní instrukce

NOP - no operation - prázdná instrukce
SLEEP - 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

Jméno:  
Zpráva:

Komentáře k článku

článek zatím nikdo nekomentoval