Comenzile Aritmetice Şi Logice

download Comenzile Aritmetice Şi Logice

of 7

description

comenzile in asembler pentru microcontrolerul atmega 32

Transcript of Comenzile Aritmetice Şi Logice

Comenzile aritmetice i logiceNrComandaOperanziiDescriereaTraducereaOperaiaFlags

1ADDRd, RrAdd without carryAdunarea aritmetic fr transportRd->Rd+RrZ,C,N,V,H

2ADCRd, RrAdd eith carryAdunare cu transportRd>Rd+Rr+CZ,C,N,V,H

3ADIWRd, kAdd immediate to workAdunarea constantei la un cuvntRdh:Rdl Rdh:Rdl+KZ,C,N,V

4SUBRd, RrSubstract without carryScaderea fr transportRdRd-RrZ,C,N,V,H

5SUBIRd, kSubstract immediateDiferen cu o constantRdRd-kZ,C,N,V,H

6SBCRd, RrSubstract with carryScdere cu transportRdRd-Rr-CZ,C,N,V,H

7SBCIRd, kSubstract immediate with carryDiferen cu constant i transportRdRd-K-CZ,C,N,V,H

8SBIWRd, kSubstract immediate from wordDiferena constantei de la cuvntRdh:Rdl Rdh:Rdl-KZ,C,N,V

9ANDRd, RrLogical AndSI logicRdRd*RrZ,N,V

10ANDIRd, kLogical And with ImmediateSI Logic cu o constantRdRd*kZ,N,V

11ORRd, RrLogical OrSAU logicRdRdRrZ,N,V

12ORIRd, kLogical Or with ImmediateSAU logic cu constantRdRdkZ,N,V

13EORRd, RrExclusive ORSAU exclusivRdRdRrZ,N,V

14COMRdOnes complementComplement fa de 1Rd$FF-RdZ,C,N,V

15NEGRdTwos complementNegarea complementului binarRd$00-RdZ,C,N,V,H

16SBRRd, kSet Bits in RegisterSetarea bitului K n registruRdRdkZ,N,V

17CBRRd, kClear Bits in Registertergerea bitului K n registruRdRd*($FF-k)Z,N,V

18INCRdIncrementIncrementareaRdRd+1Z,N,V

19DECRdDecrementDecrementareaRdRd-1Z,N,V

20TSTRdTest for zero or minusTestarea la 0 sau la -RdRd*RrZ,N,V

21CLRRdClear RegisterCurirea registruluiRdRdRrZ,N,V

22SERRdSet all bits in registerSetarea biilor n registruRd$FFNone

3. Comenzi pe bitiNrComandaOperanziDescriereaTraducereaOperaiaFlags

1LSLRdLogical Shift LeftShiftare logic la stingaRd(n+1)Rd(n), Rd(0)0CRd(7)Z,C,N,V,H

2LSRRdLogical Shift RighShiftare Logic la dreaptaRd(n)Rd(n+1), Rd(7)0,CRd(0)Z,C,N,V

3ROLRotate left trough carryRotare la stinga peste bitul de transportRd(0)C,Rd(n+1) Rd, CRd(7)Z,C,N,V,H

4RORRdRotate right trough carryRotare la dreapta peste bitul de transportCRd(7)Rd(n+1) Rd,C Rd(0)Z,C,N,V

5ASRRdArithmetic Shift RightShiftare logic la dreaptaRd(n)Rd(n+1)n=0..6Z,C,N,V

6SWAPRdSwap NibblesInversarea jumtilorRd(0..3)Rd(4..7)None

7BSETSFlag SetSetarea flaguluiSREG(s)1SREG(s)

8BCLRSFlag Clearedtergerea flaguluiSREG(s)0SREG(s)

9SBIP, bSet bit to I/OSetarea bitului n registrul I/OI/O (P,b)1None

10CBIP,bClear bit in I/O Registertergerea bitului din registru I/OI/O (P,b)0None

11BSTRd, bBit Store from Register to TStocarea bitului din registru n flagul TTRd(b)T

12BLDRd, bBit load from T to Registerncrcarea flagului T in bitul registruluiRd(b)TNone

13SECSet carry FlagSetarea transportul flaguluiC1C

14CLCClear carry flagStergerea transportul flaguluiC0C

15SENSet negative flagSetarea flagului negativN1N

16CLNCleared Negative flagtergerea flagului negativN0N

17SEZSet zero flagSetarea flagului 0Z1Z

18CLZClear zero flagtergerea flagului 0Z0Z

19SEISet global Interrupt flagSetarea flagului intreruperii globaleI1I

20CLIClear global interrupt flagtergerea flagului intreruperii globaleI0I

21SESSet Signed FlagSetarea flagului de semnS1S

22CLSClear Signed Flagtergerea flagului de semnS0S

23SEVSet overflow flagSetarea flagului fluxului de dateV1V

24CLVClear overflowStergerea flagului fluxului de dateV0V

25SETSet T flagSetarea flagului TT1T

26CLTClear T flagStergerea flagului TT0T

27SEHSet half carry flagSetarea flagului a jumtii bitului de transportH1H

28CLHClear half carry flagtergerea flagului a jumii bitului de transportH0H

Comenzile de transferNrComandaOperanziDescriereaTraducereaOperaiaFlags

1ELPMExtend Load Program MemoryExtinderea ncrcrii memoriei de programRo=(Z+ELPM)None

2MOVRd, RrCopy RegisterCopierea registruluiRdRrNone

3LDIRd, KLoad ImmediateIncrcarea constanteiRdKNone

4LDSRd, XLoad direct from RAMncarc din RAMRd(k)None

4LDRd, xLoad directncrcare directRd(x)None

5LDRd, x+Load indirect and post incrementncarcare indirect apoi post incrementareRd(x)x x+1None

6LDRd, -xLoad Indirect and pre decrementncrcare indirect apoi pre decrementareRd(x)x x-1None

7LDRd, YLoad Indirectncrcare indirectRd(Y)None

8LDRd, Y+Load Indirect and post incrementncrcare indirect apoi post incrementareRd(Y)Y Y+1None

9LDRd, -YLoad Indirect and pre decrementncrcare indirect apoi pre decrementareRd(Y)YY-1None

10LDDRd, Y+qLoad indirect with displacementncarcare indirect cu deplasamentRd(Y+q)None

11LDRd, ZLoad indirectncarc indirectRd(Z)None

12LDRd, Z+Load indirect and post incrementncarc indirect apoi post incrementareRd(Z)ZZ+1None

13LDRd, -ZLoad indirect and pre decrementncarc indirect apoi pre decrementareRd(Z)ZZ-1None

14LDDRd, Z+qLoad indirect with deplacementIncarc indirect cu deplasamentRd(Z+q)None

15STSk, RrStore Direct to RAMStocheaz direct in RAM(k)RrNone

16STX, RrStore IndiretStocheaz indirect(X)RrNone

17 STX+, RrStore Indirect and post incrementStoceaz indirect apoi post incrementareRr(X)X X+1None

18STX-, RrStore Indirect and pre decrementStocheaz indirect apoi pre decrementeazRr(X)XX-1None

19STDX+q, RrStore indirect with deplacementStoceaz indirect cu deplasamentRr(X+q)None

20STY, RrStore indirectStocheaz indirect(Y)RrNone

21STY+, RrStore indirect and post incrementStochez indirect si post incrementeazRd(Y)Y Y+1None

22STY-, RrStore indirect and pre decrementStocheaz indirect i pre decrementeazRd(Y)YY-1None

23STRd, Y+qStore indirect with displacementStocheaz indirect cu deplasamentRd(Y+q)None

24STRd, ZStore IndiretStocheaz indirectRd(Z)None

25STRd, Z+Store indirect and post incrementStocheaz indirect apoi pre decrementareRd(Z)ZZ+1None

26STZ-, RrStore indirect and pre decrementStocheaz indirect apoi pre decrementeazRd(Z)ZZ-1None

27STRd, Z+qStore indirect with deplacementStoceaz indirect cu deplasamentRr(Z+q)None

28LPMLoad program memoryncrcarea memoriei de programR0(Z)None

29INRd, PLoad on I/O Port to Registerncarc datele din portul I/O n registruRdPNone

30OUTP, PrStore Register to I/O portStocheaz datele din registru n Portul I/OPRdNone

31PUSHRrPush Register on StackPune registrul n stivSTACKRdNone

32POPRdPop Register from StackScoate registrul din stivRdSTACKNone

Comenzile de transfer a controlului executieiNrComandaOperanziiDescriereaTraducereaOperaiaFlags

23CPRd, RkCompareComparareRd-RkZ,C,N,V,H

24CPCRd, RkCompare with carryCompar cu bitul de transportRd-Rk-CZ,C,N,V,H

25CPIRd, kCompare with ImmediateCompar cu o constantRd-KZ,C,N,V,H

26RJMPKRelative JumpSalt relativ la kPCPC+K+1None

27IJMPKIndirect JumpSalt indirect la kPCZNone

28JUMPKJumpSalt necondiionatPCKNone

29RCALLKRelative CallSalt relativ la subrutinPCPC+K+1None

30ICALLKIndirect CallSalt indirect la subrutinPCZNone

31CALLKCallApelare rutinPCKNone

32RETKReturn from subrutineReturnare din subrutinPCstackNone

33RETIKReturn from IntrerruptReturnare din ntreruperePCstackI

34CPSERd, RkCompare skip if equalCompar skip daca e egalIf Rd=Rk then PCPC+2 (or 3)None

35SBRCRr, bSkip if Bit in Register is ClearSare dac bitul din registru este 0If Rr (b)=0 then PCPC + 2 (or 3)None

36SBRSRr, bSkip if Bit in Register is SetSare dac bitul din registru este setatIf Rr (b)=1 then PCPC + 2 (or 3)None

37SBICP,bSkip if Bit I/O is clearSare dac bitul din registrul I/O este tersIf I/O (P,b)=0 then PCPC + 2 (or 3)None

38SBISP, bSkip if Bit I/O is setSare dac bitul din registrul I/O este setatIf I/O (P,b)=1 then PCPC + 2 (or 3)None

39BRBSs, kBranch If Bit in SREG is SetSare dac bitul din registrul SREG este setatIf SREG=1 thenPCPC+k+1None

40BRBCs, kBranch If Bit in SREG in ClearedSare dac bitul din registrul SREG este tersIf SREG=0 thenPCPC+k+1None

41BREQKBranch if EqualSalt la egalitateIf Rd=Rr(z=1) then PCPC+k+1None

42BRNEKBranch if Not EqualSalt dac nu este egalitateIf RdRr(z=0) then PCPC+k+1None

44BRCSKBranch if carry setSare dac transportul este setatIf C=1 thenPCPC+k+1None

45BRCCKBranch if carry cleardSare dac transportul este tersIf C=0 thenPCPC+k+1None

46BRSHKBranch if Same or HigherSare dac este egal sau mai mareIf RdRr(C=0) thenPCPC+k+1None

47BRLOKBranch if LowerSare dac este mai micIf Rd