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