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
instrukce | mnemo | strojový kód | popis | |
---|---|---|---|---|
bin | hex | |||
and | AND Rd,Rr | 0010 00rd dddd rrrr | 2000 | Logical AND |
sbr | SBR Rd,K | 0110 KKKK dddd KKKK | 6000 | Set Bits in Register |
andi | ANDI Rd,K | 0111 KKKK dddd KKKK | 7000 | Logical AND with Immediate |
lds | LDS Rd,k | 1001 000d dddd 0000 kkkk kkkk kkkk kkkk | 90000000 | Load Direct from Data Space |
lpm | LPM Rd,Z | 1001 000d dddd 0100 | 9004 | Load Program Memory |
lpm | LPM Rd,Z+ | 1001 000d dddd 0101 | 9005 | Load Program Memory |
break | BREAK | 1001 0101 1001 1000 | 9598 | Break |
lpm | LPM | 1001 0101 1100 1000 | 95c8 | Load Program Memory |
adiw | ADIW Rd+1:Rd,K | 1001 0110 KKdd KKKK | 9600 | Add Immediate to Word |
cbi | CBI A,b | 1001 1000 AAAA Abbb | 9800 | Clear Bit in I/O Register |
sbic | SBIC A,b | 1001 1001 AAAA Abbb | 9900 | Skip if Bit in I/O Register Cleared |
sbi | SBI A,b | 1001 1010 AAAA Abbb | 9a00 | Set Bit in I/O Register |
sbis | SBIS A,b | 1001 1011 AAAA Abbb | 9b00 | Skip if Bit in I/O Register is Set |
lds | LDS Rd,k | 1010 0kkk dddd kkkk | a000 | Load Direct from Data Space |
bst | BST Rd,b | 1111 101d dddd 0bbb | fa00 | Bit Store from Bit in Register to T Flag in SREG |
sbrc | SBRC Rr,b | 1111 110r rrrr 0bbb | fc00 | Skip if Bit in Register is Cleared |
sbrs | SBRS Rr,b | 1111 111r rrrr 0bbb | fe00 | Skip 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
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).Rd
adresujeme libovolný horních 16-ti registrů procesoru.Rr
adresujeme libovolný z registrů procesoru.Rd
adresujeme libovolný z registrů procesoru.