1*a9fa9459Szrj@c Copyright (C) 2006-2016 Free Software Foundation, Inc.
2*a9fa9459Szrj@c This is part of the GAS manual.
3*a9fa9459Szrj@c For copying conditions, see the file as.texinfo.
4*a9fa9459Szrj
5*a9fa9459Szrj@ifset GENERIC
6*a9fa9459Szrj@page
7*a9fa9459Szrj@node AVR-Dependent
8*a9fa9459Szrj@chapter AVR Dependent Features
9*a9fa9459Szrj@end ifset
10*a9fa9459Szrj
11*a9fa9459Szrj@ifclear GENERIC
12*a9fa9459Szrj@node Machine Dependencies
13*a9fa9459Szrj@chapter AVR Dependent Features
14*a9fa9459Szrj@end ifclear
15*a9fa9459Szrj
16*a9fa9459Szrj@cindex AVR support
17*a9fa9459Szrj@menu
18*a9fa9459Szrj* AVR Options::              Options
19*a9fa9459Szrj* AVR Syntax::               Syntax
20*a9fa9459Szrj* AVR Opcodes::              Opcodes
21*a9fa9459Szrj@end menu
22*a9fa9459Szrj
23*a9fa9459Szrj@node AVR Options
24*a9fa9459Szrj@section Options
25*a9fa9459Szrj@cindex AVR options (none)
26*a9fa9459Szrj@cindex options for AVR (none)
27*a9fa9459Szrj
28*a9fa9459Szrj@table @code
29*a9fa9459Szrj
30*a9fa9459Szrj@cindex @code{-mmcu=} command line option, AVR
31*a9fa9459Szrj@item -mmcu=@var{mcu}
32*a9fa9459SzrjSpecify ATMEL AVR instruction set or MCU type.
33*a9fa9459Szrj
34*a9fa9459SzrjInstruction set avr1 is for the minimal AVR core, not supported by the C
35*a9fa9459Szrjcompiler, only for assembler programs (MCU types: at90s1200,
36*a9fa9459Szrjattiny11, attiny12, attiny15, attiny28).
37*a9fa9459Szrj
38*a9fa9459SzrjInstruction set avr2 (default) is for the classic AVR core with up to
39*a9fa9459Szrj8K program memory space (MCU types: at90s2313, at90s2323, at90s2333, at90s2343,
40*a9fa9459Szrjattiny22, attiny26, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534,
41*a9fa9459Szrjat90s8535).
42*a9fa9459Szrj
43*a9fa9459SzrjInstruction set avr25 is for the classic AVR core with up to 8K program memory
44*a9fa9459Szrjspace plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
45*a9fa9459Szrjattiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
46*a9fa9459Szrjattiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
47*a9fa9459Szrjattiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
48*a9fa9459Szrjattiny828, at86rf401, ata6289, ata5272).
49*a9fa9459Szrj
50*a9fa9459SzrjInstruction set avr3 is for the classic AVR core with up to 128K program
51*a9fa9459Szrjmemory space (MCU types: at43usb355, at76c711).
52*a9fa9459Szrj
53*a9fa9459SzrjInstruction set avr31 is for the classic AVR core with exactly 128K program
54*a9fa9459Szrjmemory space (MCU types: atmega103, at43usb320).
55*a9fa9459Szrj
56*a9fa9459SzrjInstruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
57*a9fa9459Szrjinstructions (MCU types: attiny167, attiny1634, at90usb82, at90usb162,
58*a9fa9459Szrjatmega8u2, atmega16u2, atmega32u2, ata5505).
59*a9fa9459Szrj
60*a9fa9459SzrjInstruction set avr4 is for the enhanced AVR core with up to 8K program
61*a9fa9459Szrjmemory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8,
62*a9fa9459Szrjatmega8a, atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535,
63*a9fa9459Szrjatmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81,
64*a9fa9459Szrjata6285, ata6286).
65*a9fa9459Szrj
66*a9fa9459SzrjInstruction set avr5 is for the enhanced AVR core with up to 128K program
67*a9fa9459Szrjmemory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
68*a9fa9459Szrjatmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a,
69*a9fa9459Szrjatmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa,
70*a9fa9459Szrjatmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega323, atmega324a,
71*a9fa9459Szrjatmega324p, atmega324pa, atmega325, atmega325a, atmega32, atmega32a, atmega323,
72*a9fa9459Szrjatmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
73*a9fa9459Szrjatmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
74*a9fa9459Szrjatmega328, atmega328p, atmega329, atmega329a, atmega329p, atmega329pa,
75*a9fa9459Szrjatmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a,
76*a9fa9459Szrjatmega64rfr2, atmega644rfr2, atmega640, atmega644, atmega644a, atmega644p,
77*a9fa9459Szrjatmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
78*a9fa9459Szrjatmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
79*a9fa9459Szrjatmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb,
80*a9fa9459Szrjatmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161,
81*a9fa9459Szrjat90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
82*a9fa9459Szrjatmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
83*a9fa9459Szrjat90scr100, ata5790, ata5795).
84*a9fa9459Szrj
85*a9fa9459SzrjInstruction set avr51 is for the enhanced AVR core with exactly 128K
86*a9fa9459Szrjprogram memory space (MCU types: atmega128, atmega128a, atmega1280,
87*a9fa9459Szrjatmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
88*a9fa9459Szrjatmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000).
89*a9fa9459Szrj
90*a9fa9459SzrjInstruction set avr6 is for the enhanced AVR core with a 3-byte PC
91*a9fa9459Szrj(MCU types: atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
92*a9fa9459Szrj
93*a9fa9459SzrjInstruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K
94*a9fa9459Szrjprogram memory space and less than 64K data space (MCU types:
95*a9fa9459Szrjatxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega16x1,
96*a9fa9459Szrjatxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, atxmega16e5,
97*a9fa9459Szrjatxmega8e5, atxmega32e5, atxmega32x1).
98*a9fa9459Szrj
99*a9fa9459SzrjInstruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K
100*a9fa9459Szrjprogram memory space and greater than 64K data space (MCU types:
101*a9fa9459Szrjnone).
102*a9fa9459Szrj
103*a9fa9459SzrjInstruction set avrxmega4 is for the XMEGA AVR core with up to 64K
104*a9fa9459Szrjprogram memory space and less than 64K data space (MCU types:
105*a9fa9459Szrjatxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3,
106*a9fa9459Szrjatxmega64c3, atxmega64d3, atxmega64d4).
107*a9fa9459Szrj
108*a9fa9459SzrjInstruction set avrxmega5 is for the XMEGA AVR core with up to 64K
109*a9fa9459Szrjprogram memory space and greater than 64K data space (MCU types:
110*a9fa9459Szrjatxmega64a1, atxmega64a1u).
111*a9fa9459Szrj
112*a9fa9459SzrjInstruction set avrxmega6 is for the XMEGA AVR core with larger than
113*a9fa9459Szrj64K program memory space and less than 64K data space (MCU types:
114*a9fa9459Szrjatxmega128a3, atxmega128a3u, atxmega128c3, atxmega128d3, atxmega128d4,
115*a9fa9459Szrjatxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192c3,
116*a9fa9459Szrjatxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b,
117*a9fa9459Szrjatxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3,
118*a9fa9459Szrjatxmega256d3).
119*a9fa9459Szrj
120*a9fa9459SzrjInstruction set avrxmega7 is for the XMEGA AVR core with larger than
121*a9fa9459Szrj64K program memory space and greater than 64K data space (MCU types:
122*a9fa9459Szrjatxmega128a1, atxmega128a1u, atxmega128a4u).
123*a9fa9459Szrj
124*a9fa9459SzrjInstruction set avrtiny is for the ATtiny4/5/9/10/20/40
125*a9fa9459Szrjmicrocontrollers.
126*a9fa9459Szrj
127*a9fa9459Szrj@cindex @code{-mall-opcodes} command line option, AVR
128*a9fa9459Szrj@item -mall-opcodes
129*a9fa9459SzrjAccept all AVR opcodes, even if not supported by @code{-mmcu}.
130*a9fa9459Szrj
131*a9fa9459Szrj@cindex @code{-mno-skip-bug} command line option, AVR
132*a9fa9459Szrj@item -mno-skip-bug
133*a9fa9459SzrjThis option disable warnings for skipping two-word instructions.
134*a9fa9459Szrj
135*a9fa9459Szrj@cindex @code{-mno-wrap} command line option, AVR
136*a9fa9459Szrj@item -mno-wrap
137*a9fa9459SzrjThis option reject @code{rjmp/rcall} instructions with 8K wrap-around.
138*a9fa9459Szrj
139*a9fa9459Szrj@cindex @code{-mrmw} command line option, AVR
140*a9fa9459Szrj@item -mrmw
141*a9fa9459SzrjAccept Read-Modify-Write (@code{XCH,LAC,LAS,LAT}) instructions.
142*a9fa9459Szrj
143*a9fa9459Szrj@cindex @code{-mlink-relax} command line option, AVR
144*a9fa9459Szrj@item -mlink-relax
145*a9fa9459SzrjEnable support for link-time relaxation.  This is now on by default
146*a9fa9459Szrjand this flag no longer has any effect.
147*a9fa9459Szrj
148*a9fa9459Szrj@cindex @code{-mno-link-relax} command line option, AVR
149*a9fa9459Szrj@item -mno-link-relax
150*a9fa9459SzrjDisable support for link-time relaxation.  The assembler will resolve
151*a9fa9459Szrjrelocations when it can, and may be able to better compress some debug
152*a9fa9459Szrjinformation.
153*a9fa9459Szrj
154*a9fa9459Szrj@end table
155*a9fa9459Szrj
156*a9fa9459Szrj
157*a9fa9459Szrj@node AVR Syntax
158*a9fa9459Szrj@section Syntax
159*a9fa9459Szrj@menu
160*a9fa9459Szrj* AVR-Chars::                Special Characters
161*a9fa9459Szrj* AVR-Regs::                 Register Names
162*a9fa9459Szrj* AVR-Modifiers::            Relocatable Expression Modifiers
163*a9fa9459Szrj@end menu
164*a9fa9459Szrj
165*a9fa9459Szrj@node AVR-Chars
166*a9fa9459Szrj@subsection Special Characters
167*a9fa9459Szrj
168*a9fa9459Szrj@cindex line comment character, AVR
169*a9fa9459Szrj@cindex AVR line comment character
170*a9fa9459Szrj
171*a9fa9459SzrjThe presence of a @samp{;} anywhere on a line indicates the start of a
172*a9fa9459Szrjcomment that extends to the end of that line.
173*a9fa9459Szrj
174*a9fa9459SzrjIf a @samp{#} appears as the first character of a line, the whole line
175*a9fa9459Szrjis treated as a comment, but in this case the line can also be a
176*a9fa9459Szrjlogical line number directive (@pxref{Comments}) or a preprocessor
177*a9fa9459Szrjcontrol command (@pxref{Preprocessing}).
178*a9fa9459Szrj
179*a9fa9459Szrj@cindex line separator, AVR
180*a9fa9459Szrj@cindex statement separator, AVR
181*a9fa9459Szrj@cindex AVR line separator
182*a9fa9459Szrj
183*a9fa9459SzrjThe @samp{$} character can be used instead of a newline to separate
184*a9fa9459Szrjstatements.
185*a9fa9459Szrj
186*a9fa9459Szrj@node AVR-Regs
187*a9fa9459Szrj@subsection Register Names
188*a9fa9459Szrj
189*a9fa9459Szrj@cindex AVR register names
190*a9fa9459Szrj@cindex register names, AVR
191*a9fa9459Szrj
192*a9fa9459SzrjThe AVR has 32 x 8-bit general purpose working registers @samp{r0},
193*a9fa9459Szrj@samp{r1}, ... @samp{r31}.
194*a9fa9459SzrjSix of the 32 registers can be used as three 16-bit indirect address
195*a9fa9459Szrjregister pointers for Data Space addressing. One of the these address
196*a9fa9459Szrjpointers can also be used as an address pointer for look up tables in
197*a9fa9459SzrjFlash program memory. These added function registers are the 16-bit
198*a9fa9459Szrj@samp{X}, @samp{Y} and @samp{Z} - registers.
199*a9fa9459Szrj
200*a9fa9459Szrj@smallexample
201*a9fa9459SzrjX = @r{r26:r27}
202*a9fa9459SzrjY = @r{r28:r29}
203*a9fa9459SzrjZ = @r{r30:r31}
204*a9fa9459Szrj@end smallexample
205*a9fa9459Szrj
206*a9fa9459Szrj@node AVR-Modifiers
207*a9fa9459Szrj@subsection Relocatable Expression Modifiers
208*a9fa9459Szrj
209*a9fa9459Szrj@cindex AVR modifiers
210*a9fa9459Szrj@cindex syntax, AVR
211*a9fa9459Szrj
212*a9fa9459SzrjThe assembler supports several modifiers when using relocatable addresses
213*a9fa9459Szrjin AVR instruction operands.  The general syntax is the following:
214*a9fa9459Szrj
215*a9fa9459Szrj@smallexample
216*a9fa9459Szrjmodifier(relocatable-expression)
217*a9fa9459Szrj@end smallexample
218*a9fa9459Szrj
219*a9fa9459Szrj@table @code
220*a9fa9459Szrj@cindex symbol modifiers
221*a9fa9459Szrj
222*a9fa9459Szrj@item lo8
223*a9fa9459Szrj
224*a9fa9459SzrjThis modifier allows you to use bits 0 through 7 of
225*a9fa9459Szrjan address expression as 8 bit relocatable expression.
226*a9fa9459Szrj
227*a9fa9459Szrj@item hi8
228*a9fa9459Szrj
229*a9fa9459SzrjThis modifier allows you to use bits 7 through 15 of an address expression
230*a9fa9459Szrjas 8 bit relocatable expression.  This is useful with, for example, the
231*a9fa9459SzrjAVR @samp{ldi} instruction and @samp{lo8} modifier.
232*a9fa9459Szrj
233*a9fa9459SzrjFor example
234*a9fa9459Szrj
235*a9fa9459Szrj@smallexample
236*a9fa9459Szrjldi r26, lo8(sym+10)
237*a9fa9459Szrjldi r27, hi8(sym+10)
238*a9fa9459Szrj@end smallexample
239*a9fa9459Szrj
240*a9fa9459Szrj@item hh8
241*a9fa9459Szrj
242*a9fa9459SzrjThis modifier allows you to use bits 16 through 23 of
243*a9fa9459Szrjan address expression as 8 bit relocatable expression.
244*a9fa9459SzrjAlso, can be useful for loading 32 bit constants.
245*a9fa9459Szrj
246*a9fa9459Szrj@item hlo8
247*a9fa9459Szrj
248*a9fa9459SzrjSynonym of @samp{hh8}.
249*a9fa9459Szrj
250*a9fa9459Szrj@item hhi8
251*a9fa9459Szrj
252*a9fa9459SzrjThis modifier allows you to use bits 24 through 31 of
253*a9fa9459Szrjan expression as 8 bit expression. This is useful with, for example, the
254*a9fa9459SzrjAVR @samp{ldi} instruction and @samp{lo8}, @samp{hi8}, @samp{hlo8},
255*a9fa9459Szrj@samp{hhi8}, modifier.
256*a9fa9459Szrj
257*a9fa9459SzrjFor example
258*a9fa9459Szrj
259*a9fa9459Szrj@smallexample
260*a9fa9459Szrjldi r26, lo8(285774925)
261*a9fa9459Szrjldi r27, hi8(285774925)
262*a9fa9459Szrjldi r28, hlo8(285774925)
263*a9fa9459Szrjldi r29, hhi8(285774925)
264*a9fa9459Szrj; r29,r28,r27,r26 = 285774925
265*a9fa9459Szrj@end smallexample
266*a9fa9459Szrj
267*a9fa9459Szrj@item pm_lo8
268*a9fa9459Szrj
269*a9fa9459SzrjThis modifier allows you to use bits 0 through 7 of
270*a9fa9459Szrjan address expression as 8 bit relocatable expression.
271*a9fa9459SzrjThis modifier useful for addressing data or code from
272*a9fa9459SzrjFlash/Program memory. The using of @samp{pm_lo8} similar
273*a9fa9459Szrjto @samp{lo8}.
274*a9fa9459Szrj
275*a9fa9459Szrj@item pm_hi8
276*a9fa9459Szrj
277*a9fa9459SzrjThis modifier allows you to use bits 8 through 15 of
278*a9fa9459Szrjan address expression as 8 bit relocatable expression.
279*a9fa9459SzrjThis modifier useful for addressing data or code from
280*a9fa9459SzrjFlash/Program memory.
281*a9fa9459Szrj
282*a9fa9459Szrj@item pm_hh8
283*a9fa9459Szrj
284*a9fa9459SzrjThis modifier allows you to use bits 15 through 23 of
285*a9fa9459Szrjan address expression as 8 bit relocatable expression.
286*a9fa9459SzrjThis modifier useful for addressing data or code from
287*a9fa9459SzrjFlash/Program memory.
288*a9fa9459Szrj
289*a9fa9459Szrj@end table
290*a9fa9459Szrj
291*a9fa9459Szrj@node AVR Opcodes
292*a9fa9459Szrj@section Opcodes
293*a9fa9459Szrj
294*a9fa9459Szrj@cindex AVR opcode summary
295*a9fa9459Szrj@cindex opcode summary, AVR
296*a9fa9459Szrj@cindex mnemonics, AVR
297*a9fa9459Szrj@cindex instruction summary, AVR
298*a9fa9459SzrjFor detailed information on the AVR machine instruction set, see
299*a9fa9459Szrj@url{www.atmel.com/products/AVR}.
300*a9fa9459Szrj
301*a9fa9459Szrj@code{@value{AS}} implements all the standard AVR opcodes.
302*a9fa9459SzrjThe following table summarizes the AVR opcodes, and their arguments.
303*a9fa9459Szrj
304*a9fa9459Szrj@smallexample
305*a9fa9459Szrj@i{Legend:}
306*a9fa9459Szrj   r   @r{any register}
307*a9fa9459Szrj   d   @r{`ldi' register (r16-r31)}
308*a9fa9459Szrj   v   @r{`movw' even register (r0, r2, ..., r28, r30)}
309*a9fa9459Szrj   a   @r{`fmul' register (r16-r23)}
310*a9fa9459Szrj   w   @r{`adiw' register (r24,r26,r28,r30)}
311*a9fa9459Szrj   e   @r{pointer registers (X,Y,Z)}
312*a9fa9459Szrj   b   @r{base pointer register and displacement ([YZ]+disp)}
313*a9fa9459Szrj   z   @r{Z pointer register (for [e]lpm Rd,Z[+])}
314*a9fa9459Szrj   M   @r{immediate value from 0 to 255}
315*a9fa9459Szrj   n   @r{immediate value from 0 to 255 ( n = ~M ). Relocation impossible}
316*a9fa9459Szrj   s   @r{immediate value from 0 to 7}
317*a9fa9459Szrj   P   @r{Port address value from 0 to 63. (in, out)}
318*a9fa9459Szrj   p   @r{Port address value from 0 to 31. (cbi, sbi, sbic, sbis)}
319*a9fa9459Szrj   K   @r{immediate value from 0 to 63 (used in `adiw', `sbiw')}
320*a9fa9459Szrj   i   @r{immediate value}
321*a9fa9459Szrj   l   @r{signed pc relative offset from -64 to 63}
322*a9fa9459Szrj   L   @r{signed pc relative offset from -2048 to 2047}
323*a9fa9459Szrj   h   @r{absolute code address (call, jmp)}
324*a9fa9459Szrj   S   @r{immediate value from 0 to 7 (S = s << 4)}
325*a9fa9459Szrj   ?   @r{use this opcode entry if no parameters, else use next opcode entry}
326*a9fa9459Szrj
327*a9fa9459Szrj1001010010001000   clc
328*a9fa9459Szrj1001010011011000   clh
329*a9fa9459Szrj1001010011111000   cli
330*a9fa9459Szrj1001010010101000   cln
331*a9fa9459Szrj1001010011001000   cls
332*a9fa9459Szrj1001010011101000   clt
333*a9fa9459Szrj1001010010111000   clv
334*a9fa9459Szrj1001010010011000   clz
335*a9fa9459Szrj1001010000001000   sec
336*a9fa9459Szrj1001010001011000   seh
337*a9fa9459Szrj1001010001111000   sei
338*a9fa9459Szrj1001010000101000   sen
339*a9fa9459Szrj1001010001001000   ses
340*a9fa9459Szrj1001010001101000   set
341*a9fa9459Szrj1001010000111000   sev
342*a9fa9459Szrj1001010000011000   sez
343*a9fa9459Szrj100101001SSS1000   bclr    S
344*a9fa9459Szrj100101000SSS1000   bset    S
345*a9fa9459Szrj1001010100001001   icall
346*a9fa9459Szrj1001010000001001   ijmp
347*a9fa9459Szrj1001010111001000   lpm     ?
348*a9fa9459Szrj1001000ddddd010+   lpm     r,z
349*a9fa9459Szrj1001010111011000   elpm    ?
350*a9fa9459Szrj1001000ddddd011+   elpm    r,z
351*a9fa9459Szrj0000000000000000   nop
352*a9fa9459Szrj1001010100001000   ret
353*a9fa9459Szrj1001010100011000   reti
354*a9fa9459Szrj1001010110001000   sleep
355*a9fa9459Szrj1001010110011000   break
356*a9fa9459Szrj1001010110101000   wdr
357*a9fa9459Szrj1001010111101000   spm
358*a9fa9459Szrj000111rdddddrrrr   adc     r,r
359*a9fa9459Szrj000011rdddddrrrr   add     r,r
360*a9fa9459Szrj001000rdddddrrrr   and     r,r
361*a9fa9459Szrj000101rdddddrrrr   cp      r,r
362*a9fa9459Szrj000001rdddddrrrr   cpc     r,r
363*a9fa9459Szrj000100rdddddrrrr   cpse    r,r
364*a9fa9459Szrj001001rdddddrrrr   eor     r,r
365*a9fa9459Szrj001011rdddddrrrr   mov     r,r
366*a9fa9459Szrj100111rdddddrrrr   mul     r,r
367*a9fa9459Szrj001010rdddddrrrr   or      r,r
368*a9fa9459Szrj000010rdddddrrrr   sbc     r,r
369*a9fa9459Szrj000110rdddddrrrr   sub     r,r
370*a9fa9459Szrj001001rdddddrrrr   clr     r
371*a9fa9459Szrj000011rdddddrrrr   lsl     r
372*a9fa9459Szrj000111rdddddrrrr   rol     r
373*a9fa9459Szrj001000rdddddrrrr   tst     r
374*a9fa9459Szrj0111KKKKddddKKKK   andi    d,M
375*a9fa9459Szrj0111KKKKddddKKKK   cbr     d,n
376*a9fa9459Szrj1110KKKKddddKKKK   ldi     d,M
377*a9fa9459Szrj11101111dddd1111   ser     d
378*a9fa9459Szrj0110KKKKddddKKKK   ori     d,M
379*a9fa9459Szrj0110KKKKddddKKKK   sbr     d,M
380*a9fa9459Szrj0011KKKKddddKKKK   cpi     d,M
381*a9fa9459Szrj0100KKKKddddKKKK   sbci    d,M
382*a9fa9459Szrj0101KKKKddddKKKK   subi    d,M
383*a9fa9459Szrj1111110rrrrr0sss   sbrc    r,s
384*a9fa9459Szrj1111111rrrrr0sss   sbrs    r,s
385*a9fa9459Szrj1111100ddddd0sss   bld     r,s
386*a9fa9459Szrj1111101ddddd0sss   bst     r,s
387*a9fa9459Szrj10110PPdddddPPPP   in      r,P
388*a9fa9459Szrj10111PPrrrrrPPPP   out     P,r
389*a9fa9459Szrj10010110KKddKKKK   adiw    w,K
390*a9fa9459Szrj10010111KKddKKKK   sbiw    w,K
391*a9fa9459Szrj10011000pppppsss   cbi     p,s
392*a9fa9459Szrj10011010pppppsss   sbi     p,s
393*a9fa9459Szrj10011001pppppsss   sbic    p,s
394*a9fa9459Szrj10011011pppppsss   sbis    p,s
395*a9fa9459Szrj111101lllllll000   brcc    l
396*a9fa9459Szrj111100lllllll000   brcs    l
397*a9fa9459Szrj111100lllllll001   breq    l
398*a9fa9459Szrj111101lllllll100   brge    l
399*a9fa9459Szrj111101lllllll101   brhc    l
400*a9fa9459Szrj111100lllllll101   brhs    l
401*a9fa9459Szrj111101lllllll111   brid    l
402*a9fa9459Szrj111100lllllll111   brie    l
403*a9fa9459Szrj111100lllllll000   brlo    l
404*a9fa9459Szrj111100lllllll100   brlt    l
405*a9fa9459Szrj111100lllllll010   brmi    l
406*a9fa9459Szrj111101lllllll001   brne    l
407*a9fa9459Szrj111101lllllll010   brpl    l
408*a9fa9459Szrj111101lllllll000   brsh    l
409*a9fa9459Szrj111101lllllll110   brtc    l
410*a9fa9459Szrj111100lllllll110   brts    l
411*a9fa9459Szrj111101lllllll011   brvc    l
412*a9fa9459Szrj111100lllllll011   brvs    l
413*a9fa9459Szrj111101lllllllsss   brbc    s,l
414*a9fa9459Szrj111100lllllllsss   brbs    s,l
415*a9fa9459Szrj1101LLLLLLLLLLLL   rcall   L
416*a9fa9459Szrj1100LLLLLLLLLLLL   rjmp    L
417*a9fa9459Szrj1001010hhhhh111h   call    h
418*a9fa9459Szrj1001010hhhhh110h   jmp     h
419*a9fa9459Szrj1001010rrrrr0101   asr     r
420*a9fa9459Szrj1001010rrrrr0000   com     r
421*a9fa9459Szrj1001010rrrrr1010   dec     r
422*a9fa9459Szrj1001010rrrrr0011   inc     r
423*a9fa9459Szrj1001010rrrrr0110   lsr     r
424*a9fa9459Szrj1001010rrrrr0001   neg     r
425*a9fa9459Szrj1001000rrrrr1111   pop     r
426*a9fa9459Szrj1001001rrrrr1111   push    r
427*a9fa9459Szrj1001010rrrrr0111   ror     r
428*a9fa9459Szrj1001010rrrrr0010   swap    r
429*a9fa9459Szrj00000001ddddrrrr   movw    v,v
430*a9fa9459Szrj00000010ddddrrrr   muls    d,d
431*a9fa9459Szrj000000110ddd0rrr   mulsu   a,a
432*a9fa9459Szrj000000110ddd1rrr   fmul    a,a
433*a9fa9459Szrj000000111ddd0rrr   fmuls   a,a
434*a9fa9459Szrj000000111ddd1rrr   fmulsu  a,a
435*a9fa9459Szrj1001001ddddd0000   sts     i,r
436*a9fa9459Szrj1001000ddddd0000   lds     r,i
437*a9fa9459Szrj10o0oo0dddddbooo   ldd     r,b
438*a9fa9459Szrj100!000dddddee-+   ld      r,e
439*a9fa9459Szrj10o0oo1rrrrrbooo   std     b,r
440*a9fa9459Szrj100!001rrrrree-+   st      e,r
441*a9fa9459Szrj1001010100011001   eicall
442*a9fa9459Szrj1001010000011001   eijmp
443*a9fa9459Szrj@end smallexample
444