40.5. Instrukční sada

ADIW - Add Immediate to Word
AND - Logical AND
ANDI - Logical AND with Immediate
BREAK - Break
BST - Bit Store from Bit in Register to T Flag in SREG
CBI - Clear Bit in I/O Register
LDS - Load Direct from Data Space
LPM - Load Program Memory
RET - návrat z podprogramu
SBI - Set Bit in I/O Register
SBIC - Skip if Bit in I/O Register Cleared
SBIS - Skip if Bit in I/O Register is Set
SBR - Set Bits in Register
SBRC - Skip if Bit in Register is Cleared
SBRS - Skip if Bit in Register is Set

Přehled instrukcí a popis vybraných instrukcí. Tento přehled je velmi neúplný a obsahuje jen instrukce které jsem z nějakého důvodu potřeboval blíže popsat. Pokud chcete úplný popis všech instrukcí, najdete jej na webu Atmelu.

Tento přehled instrukcí není rozhodně kompletní ani se jím nesnaží být. Popisuji zde opravdu jen některé instrukce.

Při úvahách jak mám instrukce popsat jsem zůstal u toho, že první popis instrukce je v angličtině. Je tak přímo vidět proč se instrukce jmenuje jak se jmenuje, protože její název je skratka z anglické věty která ji popisuje. Dále pak popisuji instrukci česky. Bohuže v DocBook který používám, nelze k jedné instrukci mít dva popisky. Odpadá tak možnost použít současně původní anglický popis a hned veldle něj český popis.

colname="name" colwidth="0.8in", colname="mnemo" colwidth="0.8in", colname="bin" colwidth="1.7in", colname="hex" colwidth="0.4in", colname="desc" colwidth="*"

Tabulka 40.29. Operační kódy instrukcí AVR řazené podle operačního kódu

instrukcemnemostrojový kódpopis
binhex 
andAND Rd,Rr0010 00rd dddd rrrr2000Logical AND
sbrSBR Rd,K0110 KKKK dddd KKKK6000Set Bits in Register
andiANDI Rd,K0111 KKKK dddd KKKK7000Logical AND with Immediate
ldsLDS Rd,k1001 000d dddd 0000 kkkk kkkk kkkk kkkk90000000Load Direct from Data Space
lpmLPM Rd,Z1001 000d dddd 01009004Load Program Memory
lpmLPM Rd,Z+1001 000d dddd 01019005Load Program Memory
breakBREAK1001 0101 1001 10009598Break
lpmLPM1001 0101 1100 100095c8Load Program Memory
adiwADIW Rd+1:Rd,K1001 0110 KKdd KKKK9600Add Immediate to Word
cbiCBI A,b1001 1000 AAAA Abbb9800Clear Bit in I/O Register
sbicSBIC A,b1001 1001 AAAA Abbb9900Skip if Bit in I/O Register Cleared
sbiSBI A,b1001 1010 AAAA Abbb9a00Set Bit in I/O Register
sbisSBIS A,b1001 1011 AAAA Abbb9b00Skip if Bit in I/O Register is Set
ldsLDS Rd,k1010 0kkk dddd kkkka000Load Direct from Data Space
bstBST Rd,b1111 101d dddd 0bbbfa00Bit Store from Bit in Register to T Flag in SREG
sbrcSBRC Rr,b1111 110r rrrr 0bbbfc00Skip if Bit in Register is Cleared
sbrsSBRS Rr,b1111 111r rrrr 0bbbfe00Skip if Bit in Register is Set

Instrukční slovo má několik různých tvarů a sestává z řady polí. Tato se opakují na různých instrukcích. Proto je popisuji zde na společném místě abych je zbytečně nevypisoval u každé instrukce.

Parametry instrukcí

port
Číslo (adresa) I/O registru. Protože port může nabývat hodnot od 0 do 31, můžeme jím adresovat jen prvních 32 portů jenž se nacházejí v RAM na adresách 0x20 až 0x3F (32 až 63 dekadicky).
bit
číslo bitu v I/O registru
Rd
Registr. Jeden z registrů R16 až R31. Parametrem Rd adresujeme libovolný horních 16-ti registrů procesoru.
Rr
Registr. Jeden z registrů R0 až R31. Parametrem Rr adresujeme libovolný z registrů procesoru.
Rs
Registr. Jeden z registrů R0 až R31. Parametrem Rd adresujeme libovolný z registrů procesoru.
K
Osmibitová konstanta která je přímo součástí instrukce.
Licence Creative Commons
Elektronika a počítače, jejímž autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .