Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor .include "m8def.inc" invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.

; SOURCE: AVR Assembler User Guide [DOC1022] www.atmel.com/Images/doc1022.pdf

; COMMENTS
; -----------------------------------------------------
; Single Line Comment
    ;Single Line Comment leading Whitespaces

; NO
; Multi
; line
; Comments

; NUMBERS
; -----------------------------------------------------
.SET io_offset = 0x23
.SET io_offset = $23
.SET PORTA = io_offset + 2
.SET PORTX = 0b11011101 efwefew

.CSEG ; Start code segment
    clr r2 ; Clear register 2
    out porta,r2 ; Write to Port A

; DIRECTIVES
; -----------------------------------------------------
.include "m8def.inc"
.include "lcd.asm"

.def PI = 3141
.def BOLTZMANN = 13806
.def temp1 = r16
.def temp2 = r17
.def temp3 = r18
.def flag  = r22

; OPERATORS
; -----------------------------------------------------
ldi r16,!0xf0 ; Load r16 with 0x00
ldi r16,~0xf0 ; Load r16 with 0x0f
ldi r16,-2 ; Load -2(0xfe) in r16
ldi r30,label*2 ; Load r30 with label*2
ldi r30,label/2 ; Load r30 with label/2
ldi r30,c1+c2 ; Load r30 with c1+c2
ldi r18,High(c1&c2) ;Load r18 with an expression
ldi r18,Low(c1|c2) ;Load r18 with an expression
ldi r18,Low(c1||c2) ;Load r18 with an expression




; EXAMPLES
; -----------------------------------------------------
.DEF temp=R16
.DEF ior=R0
.CSEG

ldi temp,0xf0 ; Load 0xf0 into temp register
in ior,0x3f ; Read SREG into ior register
eor temp,ior ; Exclusive or temp and ior

init:

.DSEG                   ; Start data segment
    vartab: .BYTE 4     ; Reserve 4 bytes in SRAM
.ESEG
    eevar: .DW 0xff0f   ; Initialize one word in
                        ; EEPROM
.CSEG                   ; Start code segment
    const: .DW 2        ; Write 0x0002 in prog.mem.
    mov r1,r0           ; Do something


.NOLIST                 ; Disable listfile generation
.INCLUDE "macro.inc"     ; The included files will not
.INCLUDE "const.def"     ; be shown in the listfile
.LIST                   ; Reenable listfile generation

.MACRO MACX             ; Define an example macro
    add r0,@0           ; Do something
    eor r1,@1           ; Do something
.ENDMACRO               ; End macro definition
.LISTMAC                ; Enable macro expansion
    MACX r2,r1          ; Call macro, show expansion



.CSEG
    varlist:.DW 0,0xffff,0b1001110001010101,-32768,65535
.ESEG
    eevar: .DW 0xffff


.DEF temp=R16
.DEF ior=R0
.CSEG
    ldi temp,0xf0       ; Load 0xf0 into temp register
    in ior,0x3f         ; Read SREG into ior register
    eor temp,ior        ; Exclusive or temp and ior


.DSEG
    var1: .BYTE 1       ; reserve 1 byte to var1
    table: .BYTE tab_size ; reserve tab_size bytes
.CSEG
    ldi r30,low(var1) ; Load Z register low
    ldi r31,high(var1) ; Load Z register high
    ld r1,Z ; Load VAR1 into register 1