Atmel AVR Assembler

Embed Size (px)

Citation preview

  • 5/27/2018 Atmel AVR Assembler

    1/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 1/20

    Atmel AVR

    :

    AVR

    , , .

    , , .

    120 .

    ,

    . , , .

    :

    [:] [] []

    [:] [] []

    :

    ; []

    . (;)

    . ,

    .

    :

    label: .EQU var1=100 ; var1 100 ( ) .EQU var2=200 ; var2 200

    test: rjmp test ; ( )

    ;

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#General%20usagehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Operatorshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Expressionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Assembler%20directiveshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Data%20Transfer%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Data%20Transfer%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Instructionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#General%20usagehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Functionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Operatorshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Operandshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Expressionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Assembler%20directiveshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bit%20and%20Bit-test%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Data%20Transfer%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Arithmetic%20and%20Logic%20Instructionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Instructionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Assembler%20source
  • 5/27/2018 Atmel AVR Assembler

    2/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 2/20

    ;

    , ,

    .

    AVR

    AVR, AVR Data Book.

    ADD Rd,Rr Rd = Rd + Rr Z,C,N,V,H,S 1

    ADC Rd,Rr Rd = Rd + Rr + C Z,C,N,V,H,S 1

    SUB Rd,Rr Rd = Rd - Rr Z,C,N,V,H,S 1

    SUBI Rd,K8 Rd = Rd - K8 Z,C,N,V,H,S 1

    SBC Rd,Rr Rd = Rd - Rr - C Z,C,N,V,H,S 1

    SBCI Rd,K8 Rd = Rd - K8 - C Z,C,N,V,H,S 1

    AND Rd,Rr Rd = Rd Rr Z,N,V,S 1

    ANDI Rd,K8 Rd = Rd K8 Z,N,V,S 1

    OR Rd,Rr Rd = Rd V Rr Z,N,V,S 1

    ORI Rd,K8 Rd = Rd V K8 Z,N,V,S 1

    EOR Rd,Rr Rd = Rd EOR Rr Z,N,V,S 1COM Rd Rd = $FF - Rd Z,C,N,V,S 1

    NEG Rd (. ) Rd = $00 - Rd Z,C,N,V,H,S 1

    SBR Rd,K8 () Rd = Rd V K8 Z,C,N,V,S 1

    CBR Rd,K8 () Rd = Rd ($FF -K8)

    Z,C,N,V,S 1

    INC Rd Rd = Rd + 1 Z,N,V,S 1

    DEC Rd Rd = Rd -1 Z,N,V,S 1

    TST Rd Rd = Rd Rd Z,C,N,V,S 1

    CLR Rd Rd = 0 Z,C,N,V,S 1

    SER Rd Rd = $FF None 1

    ADIW Rdl,K6 Rdh:Rdl =Rdh:Rdl + K6

    Z,C,N,V,S 2

    SBIW Rdl,K6 Rdh:Rdl =Rdh:Rdl - K 6

    Z,C,N,V,S 2

    MUL Rd,Rr R1:R0 = Rd * Rr Z,C 2

    MULS Rd,Rr R1:R0 = Rd * Rr Z,C 2

    MULSU Rd,Rr R1:R0 = Rd * Rr Z,C 2

    FMUL Rd,Rr R1:R0 = (Rd * Rr)

  • 5/27/2018 Atmel AVR Assembler

    3/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 3/20

    FMULS Rd,Rr R1:R0 = (Rd *Rr)

  • 5/27/2018 Atmel AVR Assembler

    4/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 4/20

    BRMI k if(N==1) PC = PC + k + 1 None 1/2

    BRPL k if(N==0) PC = PC + k + 1 None 1/2

    BRGE k ( )

    if(S==0) PC = PC + k + 1 None 1/2

    BRLT k ()

    if(S==1) PC = PC + k + 1 None 1/2

    BRHS k

    if(H==1) PC = PC + k + 1 None 1/2

    BRHC k

    if(H==0) PC = PC + k + 1 None 1/2

    BRTS k T

    if(T==1) PC = PC + k + 1 None 1/2

    BRTC k T if(T==0) PC = PC + k + 1 None 1/2

    BRVS k

    if(V==1) PC = PC + k + 1 None 1/2

    BRVC k

    if(V==0) PC = PC + k + 1 None 1/2

    BRIE k

    if(I==1) PC = PC + k + 1 None 1/2

    BRID k

    if(I==0) PC = PC + k + 1 None 1/2

    *

    , . CALL,

    ICALL, EICALL, RCALL, RET RETI,

    PC 16 (128KB ).

    128KB ,

    .

    MOV Rd,Rr Rd = Rr None 1

    MOVW Rd,Rr Rd+1:Rd =Rr+1:Rr, r,d even

    None 1

    LDI Rd,K8 Rd = K None 1

    LDS Rd,k Rd = (k) None 2*

    LD Rd,X Rd = (X) None 2*

    LD Rd,X+ - Rd = (X), X=X+1 None 2*

    LD Rd,-X - X=X-1, Rd = (X) None 2*

    LD Rd,Y Rd = (Y) None 2*

    LD Rd,Y+ - Rd = (Y), Y=Y+1 None 2*

    LD Rd,-Y - Y=Y-1, Rd = (Y) None 2*

    LDD Rd,Y+q Rd = (Y+q) None 2*LD Rd,Z Rd = (Z) None 2*

    LD Rd,Z+ - Rd = (Z), Z=Z+1 None 2*

    LD Rd,-Z - Z=Z-1, Rd = (Z) None 2*

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#qhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#K8http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#khttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#k
  • 5/27/2018 Atmel AVR Assembler

    5/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 5/20

    LDD Rd,Z+q Rd = (Z+q) None 2*

    STS k,Rr (k) = Rr None 2*

    ST X,Rr (X) = Rr None 2*

    ST X+,Rr - (X) = Rr, X=X+1 None 2*

    ST -X,Rr - X=X-1, (X)=Rr None 2*

    ST Y,Rr (Y) = Rr None 2*

    ST Y+,Rr - (Y) = Rr, Y=Y+1 None 2

    ST -Y,Rr - Y=Y-1, (Y) = Rr None 2

    ST Y+q,Rr (Y+q) = Rr None 2

    ST Z,Rr (Z) = Rr None 2

    ST Z+,Rr - (Z) = Rr, Z=Z+1 None 2

    ST -Z,Rr - Z=Z-1, (Z) = Rr None 2

    ST Z+q,Rr (Z+q) = Rr None 2

    LPM R0 = (Z) None 3

    LPM Rd,Z Rd = (Z) None 3

    LPM Rd,Z+ -

    Rd = (Z), Z=Z+1 None 3

    ELPM

    R0 = (RAMPZ:Z) None 3

    ELPM Rd,Z

    Rd = (RAMPZ:Z) None 3

    ELPM Rd,Z+ -

    Rd = (RAMPZ:Z), Z= Z+1

    None 3

    SPM (Z) = R1:R0 None -

    ESPM (RAMPZ:Z) =R1:R0 None -

    IN Rd,P Rd = P None 1

    OUT P,Rr P = Rr None 1

    PUSH Rr STACK = Rr None 2

    POP Rd

    Rd = STACK None 2

    *

    , . LD,

    ST, LDD, STD, LDS, STS, PUSH POP,

    .

    LSL Rd Rd(n+1)=Rd(n), Rd(0)=0,C=Rd(7)

    Z,C,N,V,H,S 1

    LSR Rd

    Rd(n)=Rd(n+1), Rd(7)=0,

    C=Rd(0) Z,C,N,V,S 1

    ROL Rd C

    Rd(0)=C, Rd(n+1)=Rd(n),C=Rd(7)

    Z,C,N,V,H,S 1

    ROR Rd Rd(7)=C, Rd(n)=Rd(n+1),

    Z,C,N,V,S 1

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Phttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Phttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#qhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#qhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#qhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#X,Y,Zhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rd
  • 5/27/2018 Atmel AVR Assembler

    6/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 6/20

    C C=Rd(0)

    ASR Rd

    Rd(n)=Rd(n+1), n=0,...,6 Z,C,N,V,S 1

    SWAP Rd Rd(3..0) = Rd(7..4), Rd(7..4)= Rd(3..0)

    None 1

    BSET s SREG(s) = 1 SREG(s) 1

    BCLR s SREG(s) = 0 SREG(s) 1

    SBI P,b I/O(P,b) = 1 None 2

    CBI P,b I/O(P,b) = 0 None 2

    BST Rr,b T T = Rr(b) T 1

    BLD Rd,b T Rd(b) = T None 1

    SEC C =1 C 1

    CLC C = 0 C 1

    SEN

    N = 1 N 1

    CLN

    N = 0 N 1

    SEZ Z = 1 Z 1

    CLZ Z = 0 Z 1

    SEI I = 1 I 1

    CLI I = 0 I 1

    SES

    S = 1 S 1

    CLN

    S = 0 S 1

    SEV

    V = 1 V 1

    CLV V = 0 V 1

    SET T T = 1 T 1

    CLT T T = 0 T 1

    SEH

    H = 1 H 1

    CLH

    H = 0 H 1

    NOP None 1

    SLEEP ()

    None 1

    WDR

    None 1

    .

    :

    Rd: ( )

    Rr:

    b: (3 ),

    s: (3 ),

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#bhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#bhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rrhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#bhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Phttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#bhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Phttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#shttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#shttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rdhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Rd
  • 5/27/2018 Atmel AVR Assembler

    7/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 7/20

    P: (5-6 ),

    K6; (6 ),

    K8: (8 ),

    k: ( ),

    q: (6 ),

    Rdl: R24, R26, R28, R30. ADIW SBIW

    X,Y,Z: (X=R27:R26, Y=R29:R28, Z=R31:R30)

    . .

    ,

    , .. .

    BYTE

    CSEG

    DB EEPROM

    DEF

    DEVICE

    DSEG

    DW EEPROM

    ENDM,ENDMACRO

    EQU

    ESEG EEPROM

    EXIT

    INCLUDE

    LIST

    LISTMAC

    MACRO

    NOLIST

    ORG

    SET

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#SET%20-%20Set%20a%20symbol%20equal%20to%20an%20expressionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#SET%20-%20Set%20a%20symbol%20equal%20to%20an%20expressionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ORG%20-%20Set%20program%20originhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ORG%20-%20Set%20program%20originhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#NOLIST%20-%20Turn%20listfile%20generation%20offhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#NOLIST%20-%20Turn%20listfile%20generation%20offhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#MACRO%20-%20Begin%20macrohttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#MACRO%20-%20Begin%20macrohttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#LISTMAC%20-%20Turn%20macro%20expansion%20onhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#LISTMAC%20-%20Turn%20macro%20expansion%20onhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#LIST%20-%20Turn%20the%20listfile%20generation%20onhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#LIST%20-%20Turn%20the%20listfile%20generation%20onhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#INCLUDE%20-%20Include%20another%20filehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#INCLUDE%20-%20Include%20another%20filehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EXIT%20-%20Exit%20this%20filehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EXIT%20-%20Exit%20this%20filehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ESEG%20-%20EEPROM%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ESEG%20-%20EEPROM%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EQU%20-%20Set%20a%20symbol%20equal%20to%20an%20expressionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EQU%20-%20Set%20a%20symbol%20equal%20to%20an%20expressionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ENDMACRO%20-%20End%20macrohttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ENDMACRO%20-%20End%20macrohttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DW%20-%20Define%20constant%20word(s)%20in%20program%20memory%20and%20EEPROMhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DW%20-%20Define%20constant%20word(s)%20in%20program%20memory%20and%20EEPROMhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DSEG%20-%20Data%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DSEG%20-%20Data%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DEVICE%20-%20Define%20which%20device%20to%20assemble%20forhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DEVICE%20-%20Define%20which%20device%20to%20assemble%20forhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DEF%20-%20Set%20a%20symbolic%20name%20on%20a%20registerhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DEF%20-%20Set%20a%20symbolic%20name%20on%20a%20registerhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DB%20-%20Define%20constant%20byte(s)%20in%20program%20memory%20andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DB%20-%20Define%20constant%20byte(s)%20in%20program%20memory%20andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#CSEG%20-%20Code%20segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#CSEG%20-%20Code%20segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#BYTE%20-%20Reserve%20bytes%20to%20a%20variablehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#BYTE%20-%20Reserve%20bytes%20to%20a%20variable
  • 5/27/2018 Atmel AVR Assembler

    8/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 8/20

    .

    BYTE -

    BYTE .

    , BYTE .

    , . ( CSEG

    DSEG). .

    :: .BYTE

    :

    .DSEG

    var1: .BYTE 1 ; 1 var1

    table: .BYTE tab_size ; tab_size

    .CSEG

    ldi r30,low(var1) ; Z

    ldi r31,high(var1) ; Z ld r1,Z ; VAR1 1

    CSEG -

    CSEG .

    , . .

    ,

    . ORG

    . CSEG .

    :.CSEG

    :

    .DSEG ; vartab: .BYTE 4 ; 4

    .CSEG ;

    const: .DW 2 ; 0x0002 mov r1,r0 ;

    DB - EEPROM

    DB EEPROM.

    , DB

    . DB .

    (CSEG) EEPROM

    (ESEG).

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ESEG%20-%20EEPROM%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#CSEG%20-%20Code%20segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ORG%20-%20Set%20program%20originhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DSEG%20-%20Data%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#CSEG%20-%20Code%20segment
  • 5/27/2018 Atmel AVR Assembler

    9/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 9/20

    -

    . (-128..255),

    ,

    , .

    ,

    ( - ),

    , , DB.

    :: .DB _

    :

    .CSEGconsts: .DB 0, 255, 0b01010101, -128, 0xaa

    .ESEGconst2: .DB 1,2,3

    DEF -

    DEF .

    . .

    .

    :.DEF _ =

    :

    .DEF temp=R16

    .DEF ior=R0

    .CSEGldi temp,0xf0 ; 0xf0 temp (R16)

    in ior,0x3f ; SREG ior (R0)eor temp,ior ; temp ior

    DEVICE -

    DEVICE .

    ,

    , .

    , , EEPROM

    .

    , .

    :.DEVICE AT90S1200 |AT90S2313 | AT90S2323 | AT90S2333 | AT90S2343 | AT90S4414 |

    AT90S4433 | AT90S4434 | AT90S8515 | AT90S8534 | AT90S8535 | ATtiny11 | ATtiny12 |

    ATtiny22 | ATmega603 | ATmega103

  • 5/27/2018 Atmel AVR Assembler

    10/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 10/20

    :.DEVICE AT90S1200 ; AT90S1200

    .CSEG

    push r30 ; ; AT90S1200

    DSEG -

    DSEG .

    , .

    BYTE .

    . ORG

    . .

    :.DSEG

    :

    .DSEG ;

    var1: .BYTE 1 ; 1 var1table: .BYTE tab_size ; tab_size .

    .CSEG

    ldi r30,low(var1) ; Z ldi r31,high(var1) ; Z

    ld r1,Z ; var1 r1

    DW - EEPROM

    DW EEPROM.

    ,

    DW . DW .

    (CSEG)

    EEPROM (ESEG).

    -

    . (-32768..65535),

    ,

    , .

    :: .DW expressionlist

    :

    .CSEGvarlist: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535

    .ESEGeevarlst: .DW 0,0xffff,10

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ESEG%20-%20EEPROM%20Segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#CSEG%20-%20Code%20segmenthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ORG%20-%20Set%20program%20originhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#BYTE%20-%20Reserve%20bytes%20to%20a%20variable
  • 5/27/2018 Atmel AVR Assembler

    11/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 11/20

    ENDMACRO -

    , .

    MACRO.

    :.ENDMACRO

    :.MACRO SUBI16 ;

    subi r16,low(@0) ;

    sbci r17,high(@0) ; .ENDMACRO

    EQU -

    EQU .

    . .

    :.EQU =

    :

    .EQU io_offset = 0x23

    .EQU porta = io_offset + 2

    .CSEG ;

    clr r2 ; r2 out porta,r2 ; A

    ESEG - EEPROM

    ESEG EEPROM.

    EEPROM, .

    EEPROM DB, DW . EEPROM

    . ORG

    EEPROM. .

    :.ESEG

    :.DSEG ;

    var1: .BYTE 1 ; 1 var1table: .BYTE tab_size ; tab_size .

    .ESEGeevar1: .DW 0xffff ; 1 EEPROM

    EXIT -

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ORG%20-%20Set%20program%20originhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DW%20-%20Define%20constant%20word(s)%20in%20program%20memory%20and%20EEPROMhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#DB%20-%20Define%20constant%20byte(s)%20in%20program%20memory%20andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#MACRO%20-%20Begin%20macro
  • 5/27/2018 Atmel AVR Assembler

    12/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 12/20

    EXIT .

    (. INCLUDE),

    INCLUDE. ,

    .

    :

    .EXIT

    :.EXIT ;

    INCLUDE -

    INCLUDE ,

    EXIT,

    INCLUDE.

    INCLUDE.

    :.INCLUDE "_"

    :

    ; iodefs.asm:

    .EQU sreg = 0x3f ;

    .EQU sphigh = 0x3e ;

    .EQU splow = 0x3d ;

    ; incdemo.asm.INCLUDE iodefs.asm ; in r0,sreg ;

    LIST -

    LIST .

    , .

    ,

    NOLIST .

    :

    .LIST

    :.NOLIST ;

    .INCLUDE "macro.inc" ;

    .INCLUDE "const.def" ;

    .LIST ;

    LISTMAC -

    LISTMAC .

    .

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#NOLIST%20-%20Turn%20listfile%20generation%20offhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EXIT%20-%20Exit%20this%20filehttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#INCLUDE%20-%20Include%20another%20file
  • 5/27/2018 Atmel AVR Assembler

    13/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 13/20

    :.LISTMAC

    :.MACRO MACX ;

    add r0,@0 ;

    eor r1,@1

    .ENDMACRO ;

    .LISTMAC ;

    MACX r2,r1 ; ( )

    MACRO -

    MACRO .

    . ,

    . 10 ,

    @0-@9. .

    ENDMACRO.

    ,

    LISTMAC. +.

    :.MACRO

    :.MACRO SUBI16 ;

    subi @1,low(@0) ; 0 1

    sbci @2,high(@0) ; 0 2

    .ENDMACRO ;

    .CSEG ;

    SUBI16 0x1234,r16,r17 ; 0x1234 r17:r16

    NOLIST -

    NOLIST

    . , . ,

    .

    LIST

    :.NOLIST

    :.NOLIST ;

    .INCLUDE "macro.inc" ;

    .INCLUDE "const.def" ;

    .LIST ;

    ORG -

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#LIST%20-%20Turn%20the%20listfile%20generation%20onhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#LISTMAC%20-%20Turn%20macro%20expansion%20onhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#ENDMACRO%20-%20End%20macro
  • 5/27/2018 Atmel AVR Assembler

    14/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 14/20

    ORG ,

    . SRAM

    (), , EEPROM

    EEPROM. ( )

    .

    EEPROM , 32 (

    0-31 ). EEPROM

    - .

    :.ORG

    :.DSEG ;

    .ORG 0x37 ; SRAM 0x37variable: .BYTE 1 ; 0x37H

    .CSEG

    .ORG 0x10 ; 0x10 mov r0,r1 ; 0x10

    SET -

    SET .

    . EQU

    SET.

    :.SET =

    :

    .SET io_offset = 0x23

    .SET porta = io_offset + 2

    .CSEG ;

    clr r2 ; 2 out porta,r2 ; A

    , . 32-.

    :

    ( ).

    SET

    EQU

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EQU%20-%20Set%20a%20symbol%20equal%20to%20an%20expressionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#SET%20-%20Set%20a%20symbol%20equal%20to%20an%20expressionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Functionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Operatorshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Operandshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#EQU%20-%20Set%20a%20symbol%20equal%20to%20an%20expression
  • 5/27/2018 Atmel AVR Assembler

    15/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 15/20

    :

    ( ): 10, 255

    ( ): 0x0a, $0a, 0xff, $ff

    : 0b00001010, 0b11111111

    ( ): 010, 077

    PC - (Programm Counter)

    , (

    , ).

    , .

    14 !

    14 ~

    14 -

    13 *

    13 /

    12 +

    12 -

    11 >

    10 <

    10

    10 >=

    9 ==

    9 != 8 &

    7 ^

    6 |

    5 &&

    4 ||

    : !

    : 1 0,

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Logical%20Orhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Logical%20Orhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Logical%20Andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Logical%20Andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Orhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Orhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Xorhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Xorhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Andhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Not%20equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Not%20equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Greater%20or%20equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Greater%20or%20equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Greater%20thanhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Greater%20thanhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Less%20or%20Equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Less%20or%20Equalhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Less%20thanhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Less%20thanhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Shift%20righthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Shift%20righthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Shift%20lefthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Shift%20lefthttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Subtractionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Subtractionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Additionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Additionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Divisionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Divisionhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Multiplicationhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Multiplicationhttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Unary%20Minushttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Unary%20Minushttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Nothttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Bitwise%20Nothttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Logical%20Nothttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Logical%20Not
  • 5/27/2018 Atmel AVR Assembler

    16/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 16/20

    : 14: ldi r16, !0xf0 ; r16 0x00

    : ~

    :

    : 14: ldi r16, ~0xf0 ; r16 0x0f

    : -

    :

    : 14: ldi r16,-2 ; -2(0xfe) r16

    : *

    :

    : 13: ldi r30, label*2

    : /:

    : 13: ldi r30, label/2

    : +

    :

    : 12: ldi r30, c1+c2

    : -

    :

    : 12: ldi r17, c1-c2

    :

  • 5/27/2018 Atmel AVR Assembler

    17/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 17/20

    : 11: ldi r17, 1:

    : 11: ldi r17, c1>>c2 ; r17 c1 c2

    : =c2)+1

    : ==

    : 1 ( ), 0

    : 9: andi r19, bitmask*(c1==c2)+1

  • 5/27/2018 Atmel AVR Assembler

    18/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 18/20

    : !=: 1 ( ),

    0

    : 9: .SET flag = (c1!=c2) ; flag 1 0

    : &

    :

    : 8: ldi r18, High(c1&c2)

    : ^

    :

    : 7: ldi r18, Low(c1^c2)

    : |

    :

    : 6: ldi r18, Low(c1|c2)

    : &&

    : 1 , 0

    : 5: ldi r18, Low(c1&&c2)

    : ||: 1 , 0

    : 4: ldi r18, Low(c1||c2)

    :

    LOW()

    HIGH()

  • 5/27/2018 Atmel AVR Assembler

    19/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 19/20

    BYTE2() HIGH

    BYTE3()

    BYTE4()

    LWRD() 0-15

    HWRD() 16-31

    PAGE() 16-21

    EXP2() 2 ()

    LOG2() log2()

    WAVRASM .

    ,

    28 ( MS-Windows).

    , .

    .

    .

    . ,

    , , .

    , .

    ,

    , .

    ( ) .

    , ( ),

    .

    "Options".

    , "List-file extension", ,

    , "Output-file extension" . "Output file format"

    ( ).

    ( AVR Studio), ,

    OBJ. EEPROM

    http://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Setting%20Program%20Optionshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Click%20On%20Errorshttp://dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Opening%20Assembly%20Files
  • 5/27/2018 Atmel AVR Assembler

    20/20

    31.05.13 Atmel AVR Assembler

    dfe.karelia.ru/koi/posob/avrlab/avrasm-rus.htm#Branch Instructions 20/20

    EEP. ,

    , .

    "Wrap relative jumps" "" .

    4 (8 ),

    (rjmp) (rcall)

    .

    "Save before assemble"

    ( ) .

    , ,

    "Close all windows before exit".

    Atmel, AVR Atmel Corporation

    , [email protected]

    mailto:[email protected]