首页 CPU汇编指令集与汇编语言编程

CPU汇编指令集与汇编语言编程

举报
开通vip

CPU汇编指令集与汇编语言编程S12CPUInstructionSetReferenceManual438pages(5M)FTP:166.11.32.14嵌入式实时系统与微控制器应用(研)DatabookProgrammingModelAB7070D150150X150Y150PCSXHINZVC70CARRY/BORROWFROMMSBOVERFLOWZERONEGATIVEI-INTERRUPTMASKHALFCARRY(FROMBIT3)X-INTERRUPTMASKSTOPDISABLE8-BITACCUMULATORSAANDBOR...

CPU汇编指令集与汇编语言编程
S12CPUInstructionSetReferenceManual438pages(5M)FTP:166.11.32.14嵌入式实时系统与微控制器应用(研)DatabookProgrammingModelAB7070D150150X150Y150PCSXHINZVC70CARRY/BORROWFROMMSBOVERFLOWZERONEGATIVEI-INTERRUPTMASKHALFCARRY(FROMBIT3)X-INTERRUPTMASKSTOPDISABLE8-BITACCUMULATORSAANDBOR16-BITDOUBLEACCUMULATORINDEXREGISTERXINDEXREGISTERYSTACKPOINTERPROGRAMCOUNTERCONDITIONCODEREGISTER150SP50PPAGEConditionCodeRegisterS-DisablesSTOPinstructionwhenset.X-MasksXIRQrequestwhenset.-setbyhardwarereset,clearedbysoftware.-setbyunmaskableXIRQI-MasksinterruptrequestfromallIRQlevelsources(bothexternalandinternal)whenset.-setbyunmaskedIlevelrequestorunmaskedXIRQMASKINGBITSARITHMETICBITS•Reflectresultsofinstructionexecution.C-Carry/BorrowfromMSBunsignedarithmeticV-2'scomplementoverflowindicationsignedarithmeticZ-ZeroresultN-Negative(followsMSBitofresult)H-HalfCarryfrombit3tobit4ADDoperationsonlySXHINZVCHCS12AddressingModesAddressingModesINHERENTCLRBIMMEDIATELDAA#$12EXTENDEDLDAA$4000DIRECTLDAA$50INDEXEDLDAB30000,XLDAA$8,X+……RELATIVEBNELOOPIDXIndexedAddressIndexed(noextensionbytes):5-bitconstantoffsetfromX,Y,SPorPCLDAA20,XLDAB,XPre/postincrement/decrementby1–8,nooffsetLDAA8,X+LDAB2,-XAccumulatorA,B,orDoffsetLDABA,XLDAA[D,X](IndexIndirect)EffectiveAddressExample:LEAS–10,S;Allocatespacefor5x16-bitintegersLEAS10,S;Deallocatespacefor5x16-bitintsThe(de)allocationcanevenbecombinedwitharegisterpushorpullasinthefollowingexample:LDX8,S+;LoadreturnvalueanddeallocateHCS12NewIndexedAddressingModesIndex5-bitsignedoffsetLDAA-$10,XIndexed9-bitsignedoffsetLDAA-$50,XIndexed16-bitsignedoffsetLDAA-$500,XIndexedIndirectJMP[D,X]LDAA[D,X]Indexed5-BitSignedOffsetXLDAA$6,X1000Y2000STAA-$8,Y•5Bitoffsetissignedincludedininstructionpostbyte.•X,Y,SPorPCregistercanbeusedforindexing.•Offsetrangefrom-16to+15frombaseregister.+++5BITOFFSET6$10065-BITOFFSET12A1212$$1FF9STAA-$8,YIndexed9-BitSignedOffset(IDX1)XLDAA$70,X1000Y2000STAA-250,Y•9BITOFFSETISSIGNEDINCLUDEDINEXTENSIONBYTEFOLLOWINGINSTRUCTION.•X,Y,SPORPCREGISTERCANBEUSEDFORINDEXING.•OFFSETRANGEFROM-256TO+255FROMBASEREGISTER.++9-BITOFFSET9-BITOFFSET33A3333STAA-250,YIndexed16-BitOffset(IDX2)XLDAA$700,X2000YA000STAA-$5000,Y•16-Bitoffsetprovidedintwoextensionpostbytes.•X,Y,SPORPCregistercanbeusedforindexing.•OffsetRange+or-32KBytesfrombaseregister.++16-BITOFFSET16-BITOFFSETBBABBBBSTAA-$5000,YIndexed16-BitIndirectOffset([IDX2])•16-Bitindirectoffsetaddedtobaseregistertoformoftheoperand.•X,Y,SPorPCregistercanbeusedforindexing.•Offsetrange+or-32kbytesfrombaseregister.6150$61501234X3000LDD[$500,X]1234D+16-BITINDIRECTOFFSET$3500Indexed-D-Indirect([D,IDX])•D-Accumulatoraddedtobaseregistertoformofindirectaddress.•Offsetrange+or-32KBytesfrombaseregister.PC9800XJMP[D,X]1000D+E0003000$40009800=E000•X,Y,SPorPCregistercanbeusedforindexing.Indexed-AccumulatorOffsetSPLDAAB,SP1000B+99A99•TheAccumulatormaybeA,BorD.•Offsetrangeupto+±32KBytesfrombaseregister.60$1060•X,Y,SPorPCcanbeusedforindexing.Indexed-Pre/PostDecrement/IncrementX2000Y5656MOVW2,X+,2,Y+BEFORE2002AFTERYX30003002AFTEROtherexamples:MOVW8,X+,8,-YMOVW2,X+,4,+YSTAA1,-SPSTAA4,SP+RelativeAddressingPCOFFSETPCOFFSETOCL(L)BEQLOOPBccOPCODEOFFSETLOOPOCL•OnlyforBranchInstructions.•BranchInstructionsare2or4bytesinlength.•AllBranchesaretakenfromthenextinstructionaddress(DestinationofbranchiscalculatedbyaddingsignedoffsettoOCL+2OR+4)OFFSETBccOPCODELOOP++HCS12InstructionsetINSTRUCTIONSETDataHandlingArithmeticLogicDataTestBranchJump&SubroutineCallsLoadandStoreDATAHANDLINGINSTRUCTIONS(DATAMOVEMENT)EXAMPLE:MOVW2,X+,2,-YSTACKOPERATIONMEMTOPOFSTACKEXAMPLE:PSHXBEFOREMEMXHXLTOPOFSTACKPSHXAFTERINCREASINGADDRESSESINCREASINGADDRESSESSP$3FFESP$4000SP$3FFFSP$4000B7B0B7B0DATAHANDLINGINSTRUCTIONS(TRANSFERANDEXCHANGE)EXAMPLE1:TFRX,AEXAMPLE2:EXGY,BFUNCTIONMNEMONICOPERATIONTRANSFERDATATRANSFERREGTOREGTFRA,B,CCR,D,X,Y,SPA,B,CCR,D,X,Y,SPEXCHANGEEXGA,B,CCR,D,X,Y,SPA,B,CCR,D,X,Y,SPTBATABTXSTYSTSXTSYXGDXXGDYEXCHANGEDATABAABRSPSPRDXDYDATAHANDLINGINSTRUCTIONS(ALTERDATA)FUNCTIONMNEMONICOPERATIONDECREMENTDECDECADECBDEXDEYDES(M)-1(M)A-1AB-1BX-1XY-1YS-1SINCREMENTINCINCAINCBINXINYINS(M)+1(M)A+1AB+1BX+1XY+1YS+1SDATAHANDLINGINSTRUCTIONS(ALTERDATA)FUNCTIONMNEMONICOPERATIONCOMPLEMENT,2'S(NEGATE)NEGNEGANEGBCOMCOMACOMBCOMPLEMENT,1'SCLEARCLRCLRACLRB0-(M)(M)0-AA0-BB(M)(M)AABB0(M)0A0BBIT(S)CLEARBCLR(M)MASK(M)BIT(S)SETBSET(M)+MASK(M)•BitManipulationExample:BSETOFFSET,X,#MASKDATAHANDLINGINSTRUCTIONSDATAHANDLINGINSTRUCTIONS(SHIFTANDROTATE)FUNCTIONMNEMONICOPERATIONROTATELEFTROLROLAROLBMABROTATERIGHTRORRORARORBMABSHIFTLEFT,ARITHMETIC(LOGICAL)ASL(LSL)ASLA(LSLA)ASLB(LSLB)ASLD(LSLD)MABDSHIFTRIGHT,ARITHMETICASRASRAASRBMABSHIFTRIGHT,LOGICALLSRLSRALSRBLSRDMABDCb7b0Cb7b0Cb7b00Cb15b00ABCb7b000Cb7b0Cb15b0ABDATATESTINSTRUCTIONSR-(M+1)R-(M)-CFUNCTIONMNEMONICTESTBITTESTBITABITBA(M)B(M)COMPARECBACMPACMPBCPDCPXCPYTEST,ZEROORMINUSTSTTSTATSTBA-BA-(M)B-(M)(M)-0A-0B-0LHCOMPARESTACKCPSSP-(M:M+1)CONDITIONALBRANCHINSTRUCTIONS(10F3)MNEMONICCONDITIONCCRTESTINDICATION(L)BMIMINUSN=1r=NEGATIVE(L)BPLPLUSN=0r=POSITIVE*(L)BVSOVERFLOWV=1r=SIGNERROR*(L)BVCNOOVERFLOWV=0r=SIGNOK*(L)BLTLESS[NV]=1*(L)BGEGREATEROREQUAL[NV]=0A=M*(L)BLELESSOREQUAL[Z+(NV)]=1A<=M*(L)BGTGREATER[Z+(NV)]=0A>M(L)BEQEQUALZ=1A=M(L)BNENOTEQUALZ=0A<>M(L)BHIHIGHER[C+Z]=0A>M(L)BLSLOWERORSAME[C+Z]=1A<=M(L)BCC(BHS)CARRYCLEARC=0A>=M(L)BCS(BLO)CARRYSETC=1A0,THEN(PC)+$0003+RELPCINCREMENT&BRANCHIBEQCOUNTER+$01COUNTERIFCOUNTER=0,THEN(PC)+$0003+RELPCIBNECOUNTER+$01COUNTERIFCOUNTER<>0,THEN(PC)+$0003+RELPCTBEQIFCOUNTER=0,THENPC+$0003+RELPCTBNEIFCOUNTER<>0,THENPC+$0003+RELPCFUNCTIONMNEMONICOPERATIONTEST&BRANCHBRANCHIFBITSSETORCLEAR(3of3)•SINGLEINSTRUCTIONTOLOGICALLY"AND"MASKWITHOPERANDANDBRANCHIFBITSAREEITHERSETORCLEARED.•USEFULFORPOLLINGINTERRUPTSTATUSFLAGS,ANDFORMAKINGPROGRAMDECISIONSBASEDONBIT(S)VALUES.•BRANCHISTAKENFROMNEXTINSTRUCTIONADDRESS(OCL+4,5,OR6)•ADDESSINGMODESALLOWEDARE:DIR,EXT,IDX,IDX1&IDX2.BRSETBRCLR(M)MASKSERVICEOPCODEOPERANDMASKBRANCHDISP.OCLARITHMETICINSTRUCTIONS(1of4)A+(M)AB+(M)BD+(M+1)D;D+M+CDFUNCTIONMNEMONICOPERATIONADDADDAADDBADDDLHLHADDACCUMULATORSABAABXABYA+BAX+BXY+BYADDWITHCARRYADCAADCBA+M+CAB+M+CBDECIMALADJUSTDAACONVERTSBINARYADDITIONOFBCDCHARSINTOBCDFORMATARITHMETICINSTRUCTIONS(2of4)A–(M)B–(M)BD–(M+1)D;D–(M)–CDFUNCTIONMNEMONICOPERATIONSUBTRACTSUBASUBBSUBDLHLHSUBTRACTACCUMULATORSSBAA–BASUBTRACTWITHCARRYSBCASBCBA–(M)–CAB–(M)–CBAEXTENDEDMULTIPLYEMULD*YY:DEXTENDEDMULTIPLYEMULSD*YY:DSIGNEDMULTIPLYMULA*BDARITHMETICINSTRUCTIONS(3of4)DIVIDEINSTRUCTIONSOPERATIONDREG/XREGRADIXPOINTOFTHERESULTISTOTHERIGHTOFTHELSBINTEGERDIVIDEIDIV/IDIVSEXTENDEDDIVIDE32-BITBY16-BIT([UN]SIGNED)EDIV/EDIVSRESULTQUOTIENTISINXREMAINDERISINDEDIVEXAMPLE:EDIV[S]OPERATION(Y:D)/(X)Y;REMAINDERDV=1,IFRESULT>$FFFFFORUNSIGNED,UNDEFINEDIFDIVISORIS$0000V=1,IFRESULT>$7FFFFORSIGNED,UNDEFINEDIFDIVISORIS$0000C=1,IFDIVISORWAS$0000IFNUMERATORISGREATERTHANOREQUALTOTHEDENOMINATOR,FRACTIONALDIVIDEFDIVRADIXPOINTOFTHERESULTISTOTHELEFTOFTHEMSBTHENVFLAGISSET.RESULTEXAMPLES:ARESULTOF1IS1/$10000WHICHIS.0001ARESULTOF$C000IS$C000/$10000WHICHIS.75ARESULTOF$FFFFIS$FFFF/$10000WHICHIS.9999ARITHMETICINSTRUCTIONS(4of4)FRACTIONALDIVIDEINSTRUCTIONEXTENDEDMULTIPLYANDACCUMULATE(EMACS)OPERATION:(M:M)*(M:M)+M~M+3M~M+3(X)(X+1)(Y)(Y+1)XYEXAMPLE:EMACS$2500(*32-BITRESULT*)150150ThisisaDSPInstruction,veryusefulforFFT……LOGICINSTRUCTIONSA(M)AB(M)BFUNCTIONMNEMONICOPERATIONANDANDAANDBANDCCCCRMASKCCREXCLUSIVEOREORAEORBA(M)AB(M)BINCLUSIVEORORAAORABB+(M)BA+(M)AORCCCCR+MASKCCRJumpandSubroutineCallInstructionsCONDITIONCODEREGISTERINSTRUCTIONSFUNCTIONMNEMONICOPERATIONCLEARCARRYCLEARINTERRUPTMASKCLEAROVERFLOWSETCARRYSETINTERRUPTMASKSETOVERFLOWACCUMULATORACCRCCRACCUMULATORACLCCLICLVSECSEISEVTAPTPA0C0I0V1C1I1VACCRCCRAORCONDITIONCODEORCCCCR+OPERANDANDCONDITIONCODEANDCCCCR^OPERANDOtherInstructionsFuzzyLogicalControlWait,Stop,SWI,RTI……PrograminAssemblerLanguageForS12AssemblerFormat&PseudoInstructionLABELOPCODEOPERANDCOMMENTS*PORTAEQU$0001;HardwareAddressEOTEQU$04;ASCIIcodeforendoftext*ORG$4000;Codeoriginalfromhere*GLOBLERMB2;Reserve2MemoryByte* STRINGFCC‘HelloWorld’;=DC.B‘HelloWorld’FCBEOT;=DC.BEOTFDBGLOBLE;=DC.WGLOBLEAssembler&CPORTAEQU$0001CRMB1;ARMB2;BRMB2STRINGFCC“HelloWorld”FCB0XDEFGET_CHAR;XREFmain; #definePOATA0x0001charc;inta,b;constSTRING‘HelloWorld’publicmain;externGET_CHAR;AssemblerExample:INCHINCHECKLDAA#$20;EDRFBitBITASCI0SR1;GetstatusRTS*INCHBSRINCHECK;CheckstatusBEQINCHLDABSCIDRL;ReadtheChar.RTSAssemblerExample:OUTCHOUTCHBRCLRSCI0SR1,#$80,*;CheckifTBFEmpty?STAASCI0DRL;Outchar.RTS*Outspace(s)Routine:OUT2SBSROUT1SOUT1SLDAA#$20;ASCIICodeforSpace‘’BRAOUTCH*PrintstringPDATA:PRINTJSROUTCHPDATALDAA,X+CMPA#EOTBNEPRINTRTSProgrammingSkillinASM(28Bytes)*GettingmonthlengthM_LENGTHLDAA#30;Normalmonth30daysLDAB#2;IfFeb?CMPBMONTHBEQFEBRARYLDABMONTHCMPB#8;BeforeAugustBLTODDBIG;OddMonth31Days.INCB;EventoOddorOddtoEvenODDBIGANDB#1;OnlyUseBit0ABA;ResultinARTSFEBRARYDECA;IfLeapYear?LDABYEARANDB#3;If(Year%4)=0?BEQFINI;MonthLength=29DECA;MonthLength=28FINIRTSENDSamePrograminC(83bytes)/*Modulemonth-length*/ externcharyear,month;charm-length(){if(month==2){if(year%4)return(28);elsereturn(29);}else{if((month==4)||(month==6)||(month==9)||(month==11))return(30);elsereturn(31);}}CLEARRAMROUTINEWritearoutinetocleartheRAM,from$2000to$2FFF.CLRRAM_RTN:……………….;InitializeXpointertoRAMstart($2000)LOOP:……………;ClearmemorypointedbyX,……..;IncrementXCPX#$3000;Comparepointerwith$3000………………;Ifpointernotequal,BranchtoLOOPDONEBRADONE;EndprogramhereCLEARRAMROUTINEWritearoutinetocleartheRAM,from$2000to$2FFF.CLRRAM_RTN:LDX#$2000;InitializeXtoRAMstart($2000)LOOP:CLR,X;ClearmemorypointedtobyX,INX;IncrementXCPX#$3000;Comparepointerwith$3000BNELOOP;Ifnotequal,BranchtoLOOPDONEBRADONE;EndprogramhereYoucanuse:CLR1,X+toreplace:CLR,XINXBLOCKMOVEROUTINECOPIEDATAFROM$1000TO$1100.END,IFDATA=0.WRITEYOURPROGRAMHERE:ORG$1000SOURCEFCC‘DATATOMOVE’FCB0*ORG$4000BEGIN………………….;..……..………….;LOOP…………...……………BEQDONE;…………………………………………….;DONEBRADONE;SUGGESTEDSTEPSORIGINATEDATAAT$1000.FORMDATATOBEMOVEDFORMCONSTANTBYTEOF‘0’.PROGRAMBEGINS@$4000.1.INITSOURCEPOINTERT0$1000.2.DESTINATIONPOINTETO$1100.3.GETDATAFROMSOURCEADDRESS.4.WRITEDATATODESTINATION,5.IFDATA=0,GOTO9,ELSETO6.6.INCREMENTSOURCEPOINTER.7.INCREMENTDESTINATIONPOINTER.8.GOTOSTEP3.9.STAYHERE.BLOCKMOVEROUTINECOPIEDATAFROM$1000TO$1100.END,IFDATA=0.WRITEYOURPROGRAMHEREORG$1000SOURCEFCC‘DATATOMOVE’FCB0*ORG$4000BEGINLDX#$1000;LDY#$1100;LOOPLDAA,XSTAA,YBEQDONE;INXINYBRALOOP;DONEBRADONE;SUGGESTEDPROGRAMSTEPSORIGINATEDATAATADDRESS$1000.FORMTABLEOFDATATOBEMOVEDFORMCONSTANTBYTEOF‘0’.PROGRAMBEGINS@$4000.1.INITSOURCEPOINTERT0$1000.2.DESTINATIONPOINTETO$1100.3.GETDATAFROMSOURCEADDRESS.4.WRITEDATATODESTINATION,5.IFDATA=0,GOTO9,ELSETO6.6.INCREMENTSOURCEPOINTER.7.INCREMENTDESTINATIONPOINTER.8.GOTOSTEP3.9.STAYHERE.Howaboutusing:LDAA1,X+?Trytomakeitworksatexperimentcourse!
本文档为【CPU汇编指令集与汇编语言编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_769254
暂无简介~
格式:ppt
大小:608KB
软件:PowerPoint
页数:0
分类:企业经营
上传时间:2019-07-18
浏览量:1