CPU汇编指令集与汇编语言编程_第1页
CPU汇编指令集与汇编语言编程_第2页
CPU汇编指令集与汇编语言编程_第3页
CPU汇编指令集与汇编语言编程_第4页
CPU汇编指令集与汇编语言编程_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、S12 CPU Instruction Set Reference Manual438 pages (5M)FTP: 4嵌入式实时系统与微控制器应用(研)嵌入式实时系统与微控制器应用(研) Data bookProgramming ModelAB7070D150150X150Y150PCS X H I N Z V C70CARRY/BORROW FROM MSBOVERFLOWZERONEGATIVEI-INTERRUPT MASKHALF CARRY (FROM BIT 3)X-INTERRUPT MASKSTOP DISABLE8-BIT ACCUMULATORS A

2、 AND BOR 16-BIT DOUBLE ACCUMULATORINDEX REGISTER XINDEX REGISTER YSTACK POINTERPROGRAM COUNTERCONDITION CODE REGISTER150SP5 0PPAGECondition Code RegisterS - Disables STOP instruction when set.X - Masks XIRQ request when set. - set by hardware reset, cleared by software. - set by unmaskable XIRQI - M

3、asks interrupt request from all IRQ level sources ( both external and internal ) when set. - set by unmasked I level request or unmasked XIRQMASKING BITSARITHMETIC BITS Reflect results of instruction execution.C - Carry/Borrow from MSB unsigned arithmeticV - 2s complement overflow indication signed

4、arithmeticZ - Zero resultN - Negative ( follows MS Bit of result )H - Half Carry from bit 3 to bit 4 ADD operations onlySXHINZVCHCS12Addressing ModesAddressing Modes INHERENTCLRBIMMEDIATELDAA#$12EXTENDEDLDAA$4000 DIRECTLDAA$50INDEXEDLDAB30000,X LDAA $8,X+ RELATIVEBNELOOPIDX Indexed AddressIndexed (n

5、o extension bytes): 5-bit constant offset from X, Y, SP or PC LDAA 20,X LDAB ,X Pre/post increment/decrement by 18, no offset LDAA 8,X+ LDAB 2,-X Accumulator A, B, or D offset LDAB A,X LDAA D,X (Index Indirect) Effective AddressExample:LEAS 10,S ;Allocate space for 5 x 16-bit integersLEAS 10,S ;Deal

6、locate space for 5 x 16-bit intsThe (de)allocation can even be combined with a register push or pull as in the following example:LDX 8,S+ ;Load return value and deallocateHCS12 New Indexed Addressing ModesIndex 5-bit signed offsetLDAA-$10,XIndexed 9-bit signed offsetLDAA-$50,XIndexed 16-bit signed o

7、ffset LDAA -$500,XIndexed Indirect JMPD,X LDAA D,XIndexed 5-Bit Signed Offset XLDAA $6,X1000Y2000STAA -$8,Y 5 Bit offset is signed included in instruction post byte. X, Y, SP or PC register can be used for indexing. Offset range from -16 to +15 from base register.+5 BIT OFFSET 6 $10065-BIT OFFSET 1

8、2 A1 2 1 2$1FF9STAA -$8,YIndexed 9-Bit Signed Offset (IDX1) XLDAA $70,X1000Y2000STAA -250,Y 9 BIT OFFSET IS SIGNED INCLUDED IN EXTENSION BYTE FOLLOWING INSTRUCTION. X, Y, SP OR PC REGISTER CAN BE USED FOR INDEXING. OFFSET RANGE FROM -256 TO +255 FROM BASE REGISTER.+9-BIT OFFSET9-BIT OFFSET 33 A3333S

9、TAA -250,YIndexed 16-Bit Offset (IDX2) XLDAA $700,X2000YA000STAA -$5000,Y 16- Bit offset provided in two extension post bytes. X, Y, SP OR PC register can be used for indexing. Offset Range + or - 32KBytes from base register.+16-BIT OFFSET16-BIT OFFSET B B AB BB BSTAA -$5000,YIndexed 16-Bit Indirect

10、 Offset (IDX2) 16- Bit indirect offset added to base register to form of the operand. X, Y, SP or PC register can be used for indexing. Offset range + or - 32k bytes from base register.6150 $6150 1234X3000LDD $500,X 1234D+16-BIT INDIRECT OFFSET$3500Indexed - D-Indirect (D,IDX) D- Accumulator added t

11、o base register to form of indirect address. Offset range + or - 32KBytes from base register.PC 9800XJMP D,X1000D+ E 0 0 03000$40009 8 0 0 = E000 X, Y, SP or PC register can be used for indexing.Indexed- Accumulator Offset SPLDAA B,SP1000B+ 9 9 A9 9 The Accumulator maybe A, B or D . Offset range up

12、to + 32K Bytes from base register.60$1060 X, Y, SP or PC can be used for indexing.Indexed - Pre/Post Decrement/IncrementX2000Y5 6 5 6MOVW 2 ,X+ ,2,Y+BEFORE2002AFTERYX 3000 3002AFTEROther examples:MOVW 8,X+, 8,-YMOVW 2,X+ ,4,+YSTAA 1,-SPSTAA 4,SP+Relative AddressingPCOFFSETPCOFFSETOCL(L)BEQ LOOPBcc O

13、P CODEOFFSETLOOPOCL Only for Branch Instructions. Branch Instructions are 2 or 4 bytes in length. All Branches are taken from the next instruction address (Destination of branch is calculated by adding signed offset to OCL +2 OR +4 )OFFSET Bcc OP CODELOOP+HCS12 Instruction setINSTRUCTION SET Data Ha

14、ndling Arithmetic Logic Data Test Branch Jump & Subroutine CallsLoad and Store DATA HANDLING INSTRUCTIONS(DATA MOVEMENT) EXAMPLE: MOVW 2,X+ , 2,-YSTACK OPERATIONMEM TOP OF STACKEXAMPLE: PSHXBEFOREMEM XH XL TOP OF STACKPSHXAFTERINCREASINGADDRESSESINCREASINGADDRESSES SP$3FFE SP$4000 SP$3FFF SP$4000B7B

15、0B7B0DATA HANDLING INSTRUCTIONS(TRANSFER AND EXCHANGE)EXAMPLE1: TFR X ,AEXAMPLE2: EXG Y ,BFUNCTIONMNEMONICOPERATION TRANSFER DATATRANSFER REG TO REG TFR A, B, CCR, D, X, Y, SP A, B, CCR, D, X, Y, SPEXCHANGE EXG A, B, CCR, D, X, Y, SP A, B, CCR, D, X, Y, SPTBATABTXSTYSTSXTSYXGDXXGDYEXCHANGE DATAB AA

16、BR SPSP RD XD YDATA HANDLING INSTRUCTIONS(ALTER DATA)FUNCTIONMNEMONICOPERATIONDECREMENTDECDECADECBDEXDEYDES(M)-1 (M)A-1 AB-1 BX-1 XY-1 Y S-1 SINCREMENTINCINCAINCBINXINYINS(M)+1 (M)A+1 AB+1 BX+1 XY+1 Y S+1 SDATA HANDLING INSTRUCTIONS(ALTER DATA)FUNCTIONMNEMONICOPERATIONCOMPLEMENT, 2S (NEGATE)NEGNEGAN

17、EGBCOMCOMACOMBCOMPLEMENT, 1SCLEARCLRCLRACLRB0-(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) Bit Manipulation Example: BSET OFFSET,X, #MASKDATA HANDLING INSTRUCTIONSDATA HANDLING INSTRUCTIONS(SHIFT AND ROTATE)FUNCTIONMNEMONICOPERATIONROTATE LEFTROLROL

18、AROLBMABROTATE RIGHTRORRORARORBMABSHIFT LEFT, ARITHMETIC (LOGICAL)ASL(LSL)ASLA(LSLA)ASLB(LSLB)ASLD(LSLD)MABDSHIFT RIGHT, ARITHMETICASRASRAASRBMABSHIFT RIGHT, LOGICALLSRLSRALSRBLSRDMABDCb7b0Cb7b0Cb7b00Cb15b00ABCb7b000Cb7b0Cb15b0ABDATA TEST INSTRUCTIONSR - (M+1) R - (M)-CFUNCTIONMNEMONICTESTBIT TESTBI

19、TABITBA (M)B (M)COMPARECBACMPACMPBCPDCPXCPYTEST, ZERO OR MINUSTSTTSTATSTBA - BA - (M)B - (M)(M)-0A-0B-0L HCOMPARE STACK CPS SP - ( M :M +1)CONDITIONAL BRANCH INSTRUCTIONS (1 0F 3)MNEMONICCONDITIONCCR TESTINDICATION (L) BMIMINUSN=1r=NEGATIVE (L) BPLPLUSN=0r=POSITIVE*(L) BVS OVERFLOWV=1r=SIGN ERROR*(L

20、) BVCNO OVERFLOWV=0r=SIGN OK*(L)BLTLESSN V=1*(L)BGEGREATER OR EQUAL N V=0A = M* (L)BLELESS OR EQUALZ+(N V)=1A M (L)BEQEQUALZ=1A=M (L) BNENOT EQUALZ=0A M (L)BHIHIGHERC+Z=0A M (L) BLSLOWER OR SAMEC+Z=1A = M (L) BCS (BLO)CARRY SETC=1A M Indication refers to the use of aCMPA M instruction immediately be

21、fore the branch*Use for signed arithmetic onlyCONDITIONAL BRANCH INSTRUCTIONS (2 0F 3)DECREMENT & BRANCH DBEQ COUNTER - $01 COUNTER IF COUNT. =0, THEN (PC)+$0003 +REL PC DBNE COUNTER - $01, COUNTER IF COUNT.0, THEN (PC)+$0003 +REL PCINCREMENT & BRANCH IBEQ COUNTER + $01 COUNTER IF COUNTER =0, THEN (

22、PC)+$0003 +REL PC IBNE COUNTER + $01 COUNTER IF COUNTER 0, THEN (PC)+$0003 +REL PC TBEQ IF COUNTER = 0, THEN PC+$0003 + REL PC TBNE IF COUNTER 0, THEN PC+$0003 + REL PCFUNCTIONMNEMONICOPERATIONTEST & BRANCHBRANCH IF BITS SET OR CLEAR (3 of 3) SINGLE INSTRUCTION TO LOGICALLY AND MASK WITH OPERAND AND

23、 BRANCH IF BITS ARE EITHER SET OR CLEARED. USEFUL FOR POLLING INTERRUPT STATUS FLAGS, AND FOR MAKING PROGRAM DECISIONS BASED ON BIT(S) VALUES. BRANCH IS TAKEN FROM NEXT INSTRUCTION ADDRESS (OCL+4, 5, OR 6 ) ADDESSING MODES ALLOWED ARE: DIR, EXT, IDX, IDX1 & IDX2.BRSETBRCLR(M) MASK SERVICEOP CODEOPER

24、ANDMASKBRANCH DISP.OCL ARITHMETIC INSTRUCTIONS (1 of 4)A + (M) AB + (M) B D + (M+1) D ; D + M + C DFUNCTIONMNEMONICOPERATIONADDADDAADDBADDDLHLHADDACCUMULATORSABAABXABYA + B AX + B XY + B YADD WITH CARRYADCAADCBA + M + C AB + M + C BDECIMAL ADJUSTDAACONVERTS BINARY ADDITION OFBCD CHARS INTO BCD FORMA

25、TARITHMETIC INSTRUCTIONS (2 of 4)A (M) B (M) BD (M+1) D ; D (M) C DFUNCTIONMNEMONICOPERATIONSUBTRACTSUBASUBBSUBDLHLHSUBTRACTACCUMULATORSSBAA B ASUBTRACT WITHCARRYSBCASBCBA (M) C AB (M) C B AEXTENDED MULTIPLY EMUL D * Y Y : DEXTENDED MULTIPLY EMULS D * Y Y : D SIGNEDMULTIPLY MUL A * B DARITHMETIC INS

26、TRUCTIONS (3 of 4)DIVIDE INSTRUCTIONSOPERATIOND REG / X REGRADIX POINT OF THE RESULT IS TO THE RIGHT OF THE LSBINTEGER DIVIDE IDIV / IDIVS EXTENDED DIVIDE 32-BIT BY 16-BIT ( UN SIGNED) EDIV/EDIVSRESULTQUOTIENT IS IN XREMAINDER IS IN DEDIV EXAMPLE: EDIV S OPERATION (Y:D)/ (X) Y; REMAINDER DV = 1, IF

27、RESULT $FFFF FOR UNSIGNED, UNDEFINED IF DIVISOR IS $0000V = 1, IF RESULT $7FFF FOR SIGNED, UNDEFINED IF DIVISOR IS $0000C = 1, IF DIVISOR WAS $0000IF NUMERATOR IS GREATER THAN OR EQUAL TO THE DENOMINATOR,FRACTIONAL DIVIDEFDIVRADIX POINT OF THE RESULT IS TO THE LEFT OF THE MSBTHEN V FLAG IS SET.RESUL

28、T EXAMPLES:A RESULT OF 1 IS 1/$10000 WHICH IS .0001A RESULT OF $C000 IS $C000/$10000 WHICH IS .75A RESULT OF $FFFF IS $FFFF/$10000 WHICH IS .9999ARITHMETIC INSTRUCTIONS (4 of 4)FRACTIONAL DIVIDE INSTRUCTIONEXTENDED MULTIPLY AND ACCUMULATE(EMACS)OPERATION: (M : M ) * (M : M ) + M M+3 M M+3 (X) (X+1)

29、(Y) (Y+1)XYEXAMPLE: EMACS $2500 (* 32-BIT RESULT *)15 015 0This is a DSP Instruction, very useful for FFTLOGIC INSTRUCTIONSA (M) AB (M) BFUNCTIONMNEMONICOPERATIONANDANDAANDBANDCC CCR MASK CCREXCLUSIVE OREORAEORBA (M) AB (M) BINCLUSIVE ORORAAORABB + (M) BA + (M) A ORCC CCR + MASK CCRJump and Subrouti

30、ne Call InstructionsCONDITION CODE REGISTER INSTRUCTIONSFUNCTIONMNEMONICOPERATIONCLEAR CARRYCLEAR INTERRUPT MASKCLEAR OVERFLOWSET CARRYSET INTERRUPT MASKSET OVERFLOWACCUMULATOR A CCRCCR ACCUMULATOR ACLCCLICLVSECSEISEVTAPTPA0 C0 I0 V1 C1 I1 VA CCRCCR A OR CONDITION CODE ORCC CCR + OPERANDAND CONDITIO

31、N CODE ANDCC CCR OPERANDOther Instructions Fuzzy Logical Control Wait, Stop, SWI, RTI Program in Assembler Language For S12Assembler Format & Pseudo Instruction LABEL OPCODEOPERANDCOMMENTS*PORTA EQU $0001; Hardware AddressEOTEQU$04 ;ASCII code for end of text*ORG$4000;Code original from here*GLOBLE

32、RMB 2;Reserve2Memory Byte* STRINGFCCHello World ; = DC.B Hello WorldFCB EOT ; = DC.B EOTFDBGLOBLE ; = DC.W GLOBLE Assembler & CPORTA EQU $0001C RMB 1;A RMB 2;B RMB 2STRING FCC “Hello World” FCB 0 XDEFGET_CHAR ; XREFmain; define POATA 0 x0001char c;int a,b;const STRING Hello World public main; extern

33、 GET_CHAR;Assembler Example: INCHINCHECK LDAA #$20;EDRF Bit BITA SCI0SR1;Get status RTS*INCH BSR INCHECK ;Check status BEQ INCH LDAB SCIDRL ;Read the Char. RTSAssembler Example: OUTCHOUTCH BRCLR SCI0SR1,#$80,* ; Check if TBF Empty? STAA SCI0DRL ; Out char. RTS * Out space(s) Routine:OUT2S BSR OUT1SO

34、UT1S LDAA #$20 ;ASCII Code for Space BRA OUTCH* Print string PDATA:PRINT JSR OUTCHPDATA LDAA ,X+ CMPA #EOT BNE PRINT RTSProgramming Skill in ASM (28Bytes)* Getting month lengthM_LENGTH LDAA #30 ;Normal month 30 days LDAB #2 ;If Feb? CMPB MONTH BEQ FEBRARY LDAB MONTH CMPB #8 ;Before August BLT ODDBIG

35、 ;Odd Month 31 Days. INCB ;Even to Odd or Odd to EvenODDBIG ANDB #1 ;Only Use Bit 0 ABA ;Result in A RTSFEBRARY DECA ;If Leap Year? LDAB YEAR ANDB #3 ;If (Year%4) = 0? BEQ FINI ;Month Length = 29 DECA ;Month Length = 28FINI RTS ENDSame Program in C (83 bytes)/* Module month-length */ extern char yea

36、r, month;char m-length()if (month=2) if (year % 4) return(28);else return(29);else if (month=4)|(month=6)|(month=9)|(month=11) return(30);else return(31); CLEAR RAM ROUTINEWrite a routine to clear the RAM, from $2000 to $2FFF.CLRRAM_RTN: . ; Initialize X pointer to RAM start($2000)LOOP: ; Clear memo

37、ry pointed by X , . ; Increment X CPX #$3000 ; Compare pointer with $3000 ; If pointer not equal, Branch to LOOPDONE BRA DONE ; End program hereCLEAR RAM ROUTINEWrite a routine to clear the RAM, from $2000 to $2FFF. CLRRAM_RTN: LDX #$2000 ; Initialize X to RAMstart($2000)LOOP: CLR ,X ; Clear memory pointed to by X, INX ; Increment X CPX #$3000 ; Compare pointer with $3000 BNE LOOP ; If not equal, Branch to LOOP DONE BRA DONE ; End program hereYou can use: CLR 1,X+ to

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论