( ), .
AVR Classic :
;
;
;
;
;
.
.
2.3.1.
, (), (), Ȼ, . / . , . .
( 2.1):
1. Ȼ - AND Rd, Rr
: Rd=Rd AND Rr
: Ȼ Rd Rr
: ldi R16,1; 1 R16
and R2,R16; Ȼ
2. Ȼ - ANDI Rd, K
: Rd=Rd AND K
: Ȼ Rd 8- . Rd. 16 (R16R31)
: andi R17,$0F; R17
andi R18,$10; 4- R18
3. Ȼ - OR Rd,Rr
: Rd=RdÚRr
: Ȼ Rd Rr. Rd
: or R15,R16; R15 R16
bst R15,6; 6- R15
brts ok; 1
ok:
4. Ȼ - ORI Rd,
: Rd=RdÚK
: Ȼ Rd . Rd. 16 (R16R31)
: ori R17,$0F; R17
ori R18,1; 0- R18
5. Ȼ - EOR Rd, Rr
: Rd=RdÅRr
: Ȼ Rd Rr. Rd
: eor R2,R2; R2
eor R0,R22; Ȼ R0 R22
6. - CLR Rd
: Rd= RdÅRd
: Ȼ
|
|
:
clr R18; R18
loop:
ink R18;R18=R18+1
cpi R18,$50; ?
brne loop
2.1.
AND Rd,Rr | Ȼ | Rd=Rd*Rr | Z,N,V | |
ANDI Rd,K | Ȼ | Rd=Rd*K | Z,N,V | |
EOR Rd,Rr | Ȼ | Rd=RdÅRr | Z,N,V | |
OR Rd,Rr | Ȼ | Rd=RdÚRr | Z,N,V | |
ORI Rd,K | Ȼ | Rd=RdÚK | Z,N,V | |
COM Rd | Rd=$FF-Rd | Z,C,N,V | ||
NEG Rd | Rd=$00-Rd | Z,C,N,V,H | ||
CLR Rd | Rd= RdÅRd | Z,N,V | ||
SER Rd | Rd=$FF | - | ||
TST Rd | Rd*Rd | Z,N,V | ||
SWAP Rd | Rd(30)=Rd(74) Rd(74)=Rd(30) | - |
2.3.2.
, , , , ( ), . . , , , .
, , , .
( 2.2):
:
1. - ADD Rd, Rr
: Rd=Rd+Rr
: Rd Rr
: add R16,R18;
2. - ADIW Rd,
: Rd+1:Rd=Rd+1:Rd+K
: Rd+1:Rd 6- . .
: adiw R24,1; 1 R25:R24
adiw R30,63; 63 Z(R31:R30)
3. - SUB Rd, Rr
: Rd=Rd-Rr
: Rd Rr. Rd
: sub R13,R12; R12 R13 (R13=R13-R12)
brne noteq;, R12 R13
noteq:
4. - SUBI Rd, K
: Rd=Rd-K
: Rd . .
: subi R22,$11; $11 R22
brne noteq;, R22 $11
noteq:
5. - DEC Rd
: Rd=Rd-1
: Rd . , . BREQ BRNE. . V 1 , $80
|
|
: ldi R17,$10; 16 R17
loop:
add R1,R2;R1=R1+R2
dec R17; R17
brne loop;, R17 0
6. - INC Rd
: Rd=Rd+1
: Rd . , . BREQ BRNE. . V 1 , $7F
: clr R22; R22
loop:
inc R22;R22=R22+1
cpi R22,$4F;
brne loop; , R22 $4F
7. - ASR Rd
: Rd(n)=Rd(n+1),n=06
: Rd 1 . 7- . 0- SPEG.
: ldi R16,$10; 16 R16
asr R16; R16=R16/2
ldi R17,$FC; -4 R17
asr R17; R17=R17/2
8. - LSL Rd
: Rd(n+1)=Rd(n),Rd(0)=0
: Rd . b0 0, b7 SPEG. ADD Rd,Rd
: add R0,R4; R0=R0+R4
lsl R0;R0=R0*2
9. - LSR Rd
: Rd(n)=Rd(n+1) Rd(7)=0
: Rd . b7 0, b0 SPEG.
: add R0,R4; R0=R0+R4
lsr R0;R0=R0/2
2.2.
ADD Rd,Rr | Rd=Rd+Rr | Z,C,N,V,H | ||
ADC Rd,Rr | Rd=Rd+Rd+C | Z,C,N,V,H | ||
ADIW Rd,K | Rdh:Rdl=Rdh:Rdl+K | Z,C,N,V,S | ||
SUB Rd,Rr | Rd=Rd-Rr | Z,C,N,V,H | ||
SUBI Rd,K | Rd=Rd-K | Z,C,N,V,H | ||
SBC Rd,Rr | Rd=Rd-Rr-C | Z,C,N,V,H | ||
SBCI Rd,K | Rd=Rd-K-C | Z,C,N,V,H | ||
SBIW Rd,K | Rdh:Rdl=Rdh:Rdl-K | Z,C,N,V,S | ||
DEC Rd | Rd=Rd-1 | Z,N,V, | ||
INC Rd | Rd=Rd+1 | Z,N,V | ||
ASR Rd | Rd(n)=Rd(n+1), n=06 | Z,C,N,V | ||
LSL Rd | Rd(n+1)=Rd(n),Rd(0)=0 | Z,C,N,V | ||
LSR Rd | Rd(n)=Rd(n+1) Rd(7)=0 | Z,C,N,V | ||
ROL Rd | Rd(0)=C,Rd(n+1)=Rd(n),C=Rd(7) | Z,C,N,V | ||
ROR Rd | Rd(7)=C,Rd(n)=Rd(n+1), C=Rd(0) | Z,C,N,V |
2.3.3.
, . SREG (, ), .. . /, .
|
|
( 2.3) , , . .
( 2.3):
1. - CBI A, b
: A.b = 0
: b /, /. 32 ( 031)
: cbi $12,7;c 7- D
2. - SBI A, b
: A.b = 1
: b /, /. 32 ( 031)
: out $1E,R0; EEPROM
sbi $1C,0;
in R1,$1D; EEPROM
3. - BLD Rd,b
: Rd.b = T
: SPEG b Rd
: bst R1,2; 2- R1 T
Bld R0,4; 4- R0
4. - BST Rd,b
: T=Rd.b
: b Rd SPEG
: bst R1,2; 2- R1
bld R0,4; 4- R0
5. - CLI
: I=0
: 0 I SPEG. BCLR 7
: cli;
in R11,$16;
sei;
6. - SEI
: I=1
: 1 I SPEG. BSET 7
: cli;
in R13,$16;
sei;
7. C - CLT
: T=0
: 0 SPEG. BCLR 6
: clt;
8. - SET
: T=1
: 1 SPEG. BSET 6
: set;
2.3.
CBR Rd,K | () | Rd=Rd*($FF-K) | Z,N,V | |
SBR Rd,K | () | Rd=RdÚK | Z,N,V | |
CBI A,b | A.b = 0 | - | ||
SBI A,b | A.b = 1 | - | ||
BCLR s | SREG.s = 0 | SREG.s | ||
BSET s | SREG.s = 1 | SREG.s | ||
BLD Rd,b | (SREG) | Rd.b = T | - | |
BST Rr,b | (SREG) | T=Rd.b | T | |
CLC | C=0 | C | ||
SEC | C=1 | C | ||
CLN | . | N=0 | N | |
SEN | . | N=1 | N | |
CLZ | Z=0 | Z | ||
SEZ | . | Z=1 | Z | |
CLI | I=0 | I | ||
SEI | I=1 | I | ||
CLS | S=0 | S | ||
SES | S=1 | S | ||
CLV | . | V=0 | V | |
SEV | . | V=1 | V | |
CLT | T=0 | T | ||
SET | T=1 | T | ||
CLH | H=0 | H | ||
SEH | H=1 | H |
|
|
2.3.4.
( 2.4) , . (, , ) . , , :
Û;
Û;
Û .
PUSH POP ( AT90S1200), .
.
:
1. - MOV Rd, Rr
: Rd=Rr
: Rr Rd. - (Rr)
: mov R16, R0; R0 R16
call chec;
chec:
cpi R16, $11; R16 $11
ret;
2. - LDI Rd, K
: Rd=K
: 8- Rd. ( 1631)
: lr R31; . Z
ldi R30, $F0; Z
lpm;
; $00F0
3. - LD Rd, Y
: Rd=[Y]
: Rd. , , Y
: clr R29; .
ldi R28, $60; .
ld R1, Y;R1=[$0060]
4. - LDS Rd, K
: Rd=[k]
: Rd. , , .
: lds R2, $FF00;R2=[$FF00]
add R2, R1;R2=R2+R1
sts $FF000, R2;
5. - ST X, Rd
: [X]=Rr
: Rr . , ,
: clr R27; .
ldi R26, $60; .
st X, R1; R1 $0060
6. - STS K, Rd
: [k]=Rd
: Rd . , ,
: lds R2, $FF00;R2=[$FF00]
add R2, R1;R2=R2+R1
sts $FF000,R2;
2.4.
MOV Rd,Rr | Rd=Rr | |||
LDI Rd,K | Rd=K | |||
LD Rd,X | Rd=[X] | |||
LD Rd,X+ | Rd=[X],X=X+1 | |||
LD Rd,-X | X=X-1,Rd=[X] | |||
LD Rd,Y | Rd=[Y] | |||
LD Rd,Y+ | Rd=[Y],Y=Y+1 | |||
LD Rd,-Y | Y=Y-1,Rd=[Y] | |||
LDD Rd,Y+q | Rd=[Y+q] | |||
LD Rd,Z | Rd=[Z] | |||
LD Rd,Z+ | Rd=[Z],Z=Z+1 | |||
LD Rd,-Z | Z=Z-1,Rd=[Z] | |||
LDD Rd,Z+q | Rd=[Z+q] | |||
LDS Rd,k | Rd=[k] | |||
ST X,Rr | [X]=Rr | |||
ST X+,Rr | [X]=Rr,X=X+1 | |||
ST -X,Rr | X=X-1,[X]=Rr | |||
ST Y,Rr | [Y]=Rr | |||
ST Y+,Rr | [Y]=Rr,Y=Y+1 | |||
ST -Y,Rr | Y=Y-1,[Y]=Rr | |||
STD Y+q,Rr | [Y+q]=Rr | |||
ST Z,Rr | [Z]=Rr | |||
ST Z+,Rr | [Z]=Rr,Z=Z+1 | |||
ST -Z,Rr | Z=Z-1,[Z]=Rr | |||
STD Z+q,Rr | [Z+q]=Rr | |||
STS k,Rr | [k]=Rr | |||
LPM | R0={Z} | |||
IN Rd,A | Rd=A | |||
OUT A,Rr | A=Rr | |||
PUSH Rr | STACK=Rr | |||
POP Rd | Rd=STACK |
|
|
2.3.5.
( 2.5) , /, . , SREG , , .
, () . , ( ), . . .
:
1. - RJMP k
: PC=PC+k+1
: , k.
: pi R16, $42; R16 $42
brne M1; M1, R16 $42
rjmp ok;
M1:
add R16, R17; R16 R17
ink R16;R16=R16+1
ok:
2. - RCALL k
: PC=PC+k+1
: , k. RCALL (2 ) .
: rcall routine;
routine:
push R14; R14
pop R14; R14
ret;
3. - RET
: PC=STACK
: ,
: rcall routine;
routine:
push R14; R14
pop R14; R14
ret;
4. - CPSE Rd, Rr
: Rd=Rr, PC=PC+2(3), =+1
: Rd Rr ,
: ink R4; R4 (R4=R4+1)
cpse R4, R0; R4 R0
neg R4; R4, R4 R0
5. - CP Rd, Rr
: Rd-Rr
: Rr Rd. SPEG, . . ,
: cp R4, R19; R4 R19 (R=R4-R19)
brne noteq;, R4<>R19
noteq:
6. - CPI Rd, K
: Rd-K
: Rd Rd. SPEG, . Rd . ,
: cpi R19, 3; R19 3 (R=R19-3)
brne noteq;, R19<>3
noteq:
7. - BREQ k
: Z=1, PC=PC+k+1, =+1
: . (Z) , . k . CP, CPI, SUB SUBI , ( ), Rd, ( ), Rr. BRBS 1, k
: cp R1, R0; R1 R0
breq equal;, R1=R2
equal:
8. - BRNE k
: Z=0, PC=PC+k+1, =+1
: . (Z) , . k . CP, CPI, SUB SUBI , ( ), Rd Rr, . BRBC 1,k
: eor R27, R27; R27
loop: inc R27;R27=R27+1
cpi R27, 5; R27 5
brne loop;, R27 5
9. ( )- BRSH k
: C=0, PC=PC+k+1, =+1
: . () , . k . CP, CPI, SUB SUBI , , Rd, ( ) , Rr. BRBC 0,k
: subi R19,4;R19=R19-4
brsh hgsm;, R19 4
hgsm:
10. ( )- BRLO k
: C=1, PC=PC+k+1, =+1
: . () , . k . CP, CPI, SUB SUBI , , Rd, , Rr. BRBS 0,k
: eor R19, R19; R19
loop: inc R19;R19=R19+1
cpi R19, $10; R19 $10
brlo loop;, R19<$10
11. - BRMI k
: N=1, PC=PC+k+1, =+1
: . (N) , . k . BRBS 2, k
: subi R18, 4;R18=R18-4
brmi minus;,
minus:
12. - BRPL k
: N=0, PC=PC+k+1, =+1
: . (N) , . k . BRBC 2, k
: subi R26, $50;R26=R26-$50
brpl plus;,
plus:
2.5.
RJMP k | PC=PC+k+1 | - | ||
IJMP | PC=Z | - | ||
RCALL | PC=PC+k+1 | - | ||
ICALL | PC=Z | - | ||
RET | PC=STACK | - | ||
RETI | PC=STACK | I | ||
CP Rd,Rr | Rd-Rr | Z,N,V,C,H | ||
CPC Rd,Rr | Rd-Rr-C | Z,N,V,C,H | ||
CPI Rd,K | Rd-K | Z,N,V,C,H | ||
CPSE Rd,Rr | . | Rd=Rr, PC=PC+2(3) | 1/2/3 | - |
SBRC Rr,b | . , | Rr.b=0, PC=PC+2(3) | 1/2/3 | - |
SBRS Rr,b | . , | Rr.b=1, PC=PC+2(3) | 1/2/3 | - |
SBIC A,b | . , | A.b=0, PC=PC+2(3) | 1/2/3 | - |
SBIS A,b | . , | A.b=1, PC=PC+2(3) | 1/2/3 | - |
BRBC s,k | , s SREG | SREG.s =0, PC=PC+k+1 | 1/2 | - |
BRBS s,k | , s SREG | SREG.s =1, PC=PC+k+1 | 1/2 | - |
BRCS k | C=1, PC=PC+k+1 | 1/2 | - | |
BRCC k | , | C=0, PC=PC+k+1 | 1/2 | - |
BREQ k | Z=1, PC=PC+k+1 | 1/2 | - | |
BRNE k | Z=0, PC=PC+k+1 | 1/2 | - | |
BRSH k | C=0, PC=PC+k+1 | 1/2 | - | |
BRLO k | C=1, PC=PC+k+1 | 1/2 | - | |
BRMI | N=1, PC=PC+k+1 | 1/2 | - | |
BRPL | N=0, PC=PC+k+1 | 1/2 | - | |
BRGE | ( ) | (NÅV)=0, PC=PC+k+1 | 1/2 | - |
BRLT | ( ) | (NÅV)=1, PC=PC+k+1 | 1/2 | - |
BRHS | H=1, PC=PC+k+1 | 1/2 | - | |
BRHC | , | H=0, PC=PC+k+1 | 1/2 | - |
BRTS | , T | T=1, PC=PC+k+1 | 1/2 | - |
BRTC | , T | T=0, PC=PC+k+1 | 1/2 | - |
BRVS | . | V=1, PC=PC+k+1 | 1/2 | - |
BRVC | , . | V=0, PC=PC+k+1 | 1/2 | - |
BRID | , | I=0, PC=PC+k+1 | 1/2 | - |
BRIE | , | I=1, PC=PC+k+1 | 1/2 | - |
2.3.6.
3 :
NOP ;
SLEEP ;
WDR .
NOP WDR , SLEEP .