Post on 18-Oct-2015
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%20source5/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#k5/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#Rd5/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#Rd5/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%20variable5/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%20segment5/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%20variable5/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%20macro5/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%20file5/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%20macro5/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%20expression5/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%20Not5/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%20Files5/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
, ruslansh@i.com.ua
mailto:ruslansh@i.com.ua