嵌入式-第3章HCS12InstructionSet_第1页
嵌入式-第3章HCS12InstructionSet_第2页
嵌入式-第3章HCS12InstructionSet_第3页
嵌入式-第3章HCS12InstructionSet_第4页
嵌入式-第3章HCS12InstructionSet_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、TM嵌入式系统及应用嵌入式系统及应用嵌入式系统及应用嵌入式系统及应用 教学内容教学内容本章介绍本章介绍HCS12的指令集的指令集 教学目标教学目标了解了解HCS12 CPU的程序模型的程序模型了解了解HCS12 CPU的寻址方式的寻址方式理解理解HCS12 CPU的指令集的指令集 可以编写简单的汇编程序可以编写简单的汇编程序嵌入式系统及应用嵌入式系统及应用汇编程序以行为单位,每行一条指令,结汇编程序以行为单位,每行一条指令,结尾必须是回车符。尾必须是回车符。每行最多有每行最多有5部份,即:部份,即: 标号标号 操作码操作码 操作数操作数1,操作数操作数2 ; 注释注释嵌入式系统及应用嵌入式系统

2、及应用7 A 07 B 015 D 015 X 015 Y 015 SP 015 PC 05 PPAGE* 0S X H I N Z C V8位累加器位累加器A和和B16位累加器位累加器D(A:B)变址寄存器变址寄存器X变址寄存器变址寄存器Y堆栈指针堆栈指针SP程序计数器程序计数器PC条件码寄存器条件码寄存器CCR07嵌入式系统及应用嵌入式系统及应用其中其中S、X、I 为屏蔽位;为屏蔽位;H、N、Z、V、C 为算术位。为算术位。进位进位/借位标志借位标志溢出标志溢出标志为为0标志标志为负标志为负标志中断屏蔽位中断屏蔽位半进位标志半进位标志非屏蔽中断允许位非屏蔽中断允许位停止运行模式禁止位停止运

3、行模式禁止位嵌入式系统及应用嵌入式系统及应用HCS12 的寻址方式的寻址方式隐含寻址(隐含寻址(INHERENT )CLRB立即寻址(立即寻址( IMMEDIATE)LDAA #$12扩展寻址(扩展寻址( EXTENDED ) LDAA $4000直接寻址(直接寻址( DIRECT )LDAA $50相对寻址(相对寻址( RELATIVE ) BNE LOOP变址寻址(变址寻址( INDEXED ) LDAB $10,X嵌入式系统及应用嵌入式系统及应用新的寻址方式新的寻址方式 LDAA -$10,X X、Y、SP、PC加上加上5位有符号常数偏移量形成操作数地址位有符号常数偏移量形成操作数地址

4、LDAA -$50,X X、Y、SP、PC加上加上9位有符号常数偏移量形成操作数地址位有符号常数偏移量形成操作数地址 LDAA -$500,X X、Y、SP、PC加上加上16位常数偏移量(两扩展字节中)为操作数地位常数偏移量(两扩展字节中)为操作数地址址 JMP D,X 指向操作数的指针的地址由指向操作数的指针的地址由X、Y、SP、PC加上累加器加上累加器D所确定。所确定。嵌入式系统及应用嵌入式系统及应用序号序号寻址模式寻址模式源程序格式源程序格式缩写缩写说明说明备注备注一一隐含寻址隐含寻址INSTINH无操作数或操作数在寄存无操作数或操作数在寄存器中器中操作数部分空白操作数部分空白二二立即寻

5、址立即寻址INST #opr8i/#opr16iIMM操作数存放在指令中,根操作数存放在指令中,根据上下文确定据上下文确定8位还是位还是16位位操作数带操作数带#号号三三直接寻址直接寻址INST opr8aDIR操作数本身就是地址的低操作数本身就是地址的低8位,仅适用于地址范围位,仅适用于地址范围000000FF操作数为直接地操作数为直接地址,不带址,不带#号号扩展寻址扩展寻址INST op16aEXT操作数本身是操作数本身是16位地址位地址四四相对寻址相对寻址INST rel8/rel16REL当前当前PC加上位于指令中的加上位于指令中的8位或者位或者16位偏移量作为位偏移量作为操作数实际地

6、址操作数实际地址由汇编程序生成由汇编程序生成嵌入式系统及应用嵌入式系统及应用序号序号寻址模式寻址模式源程序格式源程序格式缩写缩写说明说明备注备注五五减后减后变址寻址变址寻址INST oprx3, xysIDX先将先将X、Y、SP减去一个减去一个指定的值(指定的值(18),然后),然后作为操作数地址作为操作数地址寄存器内容即为寄存器内容即为操作数的地址,操作数的地址,同时还可以调整同时还可以调整寄存器指向下一寄存器指向下一个元素,不包括个元素,不包括PC寄存器寄存器增后增后变址寻址变址寻址INST oprx3, + xysIDX先将先将X、Y、SP增加一个增加一个指定的值(指定的值(18),然后

7、),然后作为操作数地址作为操作数地址后减后减变址寻址变址寻址INST oprx3, xys IDX先将先将X、Y、SP作为操作作为操作数地址,然后减去一个指数地址,然后减去一个指定的值(定的值(18)后增后增变址寻址变址寻址INST oprx3, xys + IDX先将先将X、Y、SP作为操作作为操作数地址,然后增加一个指数地址,然后增加一个指定的值(定的值(18)嵌入式系统及应用嵌入式系统及应用序号序号寻址模式寻址模式源程序格式源程序格式缩写缩写说明说明备注备注六六5位位变址寻址变址寻址INST oprx5, xyspIDXX、Y、SP、PC加上加上5位位有符号常数偏移量形成操有符号常数偏移

8、量形成操作数地址作数地址变址寄存器的内变址寄存器的内容加上一个常数容加上一个常数或另一个寄存器或另一个寄存器内容即为操作数内容即为操作数地址,包括地址,包括PC寄寄存器存器9位位变址寻址变址寻址INST oprx9, xyspIDX1X、Y、SP、PC加上加上9位位有符号常数偏移量形成操有符号常数偏移量形成操作数地址作数地址16位位变址寻址变址寻址INST oprx16, xyspIDX2X、Y、SP、PC加上加上16位位有符号常数偏移量形成操有符号常数偏移量形成操作数地址作数地址累加器累加器变址寻址变址寻址INST abd, xysp IDXX、Y、SP、PC加上加上8位位(A、B)或)或1

9、6位(位(D)量)量形成操作数地址形成操作数地址嵌入式系统及应用嵌入式系统及应用序号序号寻址模式寻址模式源程序格式源程序格式缩缩 写写说说 明明备备 注注七七间接常间接常变址寻址变址寻址INST oprx16, xyspD, IDX指向操作数的指针的地指向操作数的指针的地址由址由X、Y、SP、PC加加上上16位常数偏移量确定位常数偏移量确定指针寻址、指针寻址、到内存中找到内存中找操作数地址操作数地址间接间接D变址寻址变址寻址INST D, xyspIDX2指向操作数的指针的地指向操作数的指针的地址由址由X、Y、SP、PC加加上累加器上累加器D所确定所确定嵌入式系统及应用嵌入式系统及应用 数据处

10、理类指令数据处理类指令(Data Handling) 算术运算类指令算术运算类指令(Arithmetic) 逻辑指令逻辑指令(Logic) 数据测试类指令数据测试类指令(Data Test) 分支跳转类指令分支跳转类指令(Branch) 跳转和子程序调用类跳转和子程序调用类( Jump & Subroutine Calls )嵌入式系统及应用嵌入式系统及应用嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作LDAALoad A(M) ALDABLoad B(M) BLDDLoad D(M:M+1) (A:B)LDSLoad SP(M:M+1) SPH:SPLLDXLoad ind

11、ex register X(M:M+1) XH:XLLDYLoad index register Y(M:M+1) YH:YLLEASLoad effective address into SPEffective address SPLEAXLoad effective address into XEffective address XLEAYLoad effective address into YEffective address Y嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作STAAStore A(A) MSTABStore B(B) MSTDStore D(A) M

12、,(B) M+1STSStore SP(SPH:SPL) M:M+1STXStore X(XH:XL) M:M+1 STYStore Y(YH:YL) M:M+1 嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作TABTransfer A to B(A) BTAPTransfer A to CCR(A) CCRTBATransfer B to A(B) ATFRTransfer R to R(A,B,CCR,D,X,Y,or SP) A,B,CCR,D,X,Y,or SPTPATransfer CCR to A(CCR) A TSXTransfer SP to X(SP) XT

13、SYTransfer SP to Y(SP) YTXSTransfer X to SP(X) SPTYSTransfer Y to SP(Y) SP嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作EXGExchange register to register(A,B,CCR,D,X,Y,or SP) (A,B,CCR,D,X,Y,or SP) XGDXExchange D with X(D) (X) XGDYExchange D with Y(D) (Y) 嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作MOVBMove byte (8-bit)(M1) M2

14、MOVWMove word (16-bit)(M:M +11) M:M +12 MOVB#$35 9,Y;将立即数;将立即数#$35送到(送到(Y+9)单元,不影响标志位)单元,不影响标志位MOVW#$1234 $1100;将立即数;将立即数#$12、 #$34分别送到(分别送到($1100)、)、 ($1101)单元)单元MOVB$1000 $2000;将(;将($1000)单元内容送到()单元内容送到($2000)单元)单元MOVB$1000 5,SP;将(;将($1000)单元内容送到()单元内容送到(SP+5)单元)单元MOVB3,X 2,Y;将(;将(X+3)单元内容送到()单元内容

15、送到(Y+2)单元)单元嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作PSHAPUSH A(SP) - 1 SP;(A) M(SP)PSHBPUSH B(SP) - 1 SP;(B) M(SP)PSHCPUSH CCR(SP) - 1 SP;(CCR) M (SP)PSHDPUSH D(SP) - 2 SP;(A:B) M (SP) : M (SP+1)PSHXPUSH X(SP) - 2 SP;(X) M (SP) : M (SP+1)PSHYPUSH Y(SP) - 2 SP;(Y) M (SP) : M (SP+1)PULAPULL AM(SP) A ; (SP) +

16、1 SPPULBPULL BM(SP) B ; (SP) + 1 SPPULCPULL CCRM(SP) CCR ; (SP) + 1 SPPULDPULL D(M (SP) : M (SP+1) ) A:B ; (SP) + 2 SPPULXPULL X(M (SP) : M (SP+1) ) X ; (SP) + 2 SPPULYPULL Y(M (SP) : M (SP+1) ) Y ; (SP) + 2 SP嵌入式系统及应用嵌入式系统及应用嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作INCIncrement memory(M) + $01 MINCAIncremen

17、t A(A) + $01 AINCBIncrement B(B) + $01 BINSIncrement SP(SP) + $01 SPINXIncrement X(X) + $01 XINYIncrement Y(Y) + $01 Y嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作DECDecrement memory(M) $01 MDECADecrement A(A) $01 ADECBDecrement B(B) $01 BDESDecrement SP(SP) $01 SPDEXDecrement X(X) $01 XDEYDecrement Y(Y) $01 Y嵌入

18、式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作COMOnes complement memory$FF (M) MCOMAOnes complement A$FF (A) ACOMBOnes complement B$FF (B) BNEGTwos complement memory$00 (M) MNEGATwos complement A$00 (A) ANEGBTwos complement B$00 (B) B嵌入式系统及应用嵌入式系统及应用求求A的绝对值:的绝对值:FD_ABS:CMPA#$00;检验;检验A是否为正数是否为正数BGEA_PLUS;是正数,跳转;是正数,

19、跳转NEGA;是负数,求其相反数;是负数,求其相反数A_PLUS:TAB;得到;得到A的绝对值并放在的绝对值并放在B中中将减法运算转换为加法运算:将减法运算转换为加法运算:M_2_P:NEGA;$00 A A,这两行程序求,这两行程序求$64 A的值的值ADDA#$64;$00 A + $64 = $64 A嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作CLRClear memory$00 M CLRAClear A$00 A CLRBClear B$00 BBCLRClear bits in memory(M) (mm) MBSETSet bits in memory(M)

20、 + (mm) M嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作EMINDMIN of two unsigned 16-bit values result to accumulatorMIN(D),(M: M+1) DEMINMMIN of two unsigned 16-bit values result to memoryMIN(D),(M: M+1) M: M+1MINAMIN of two unsigned 8-bit values result to accumulatorMIN(A),(M) AMINMMIN of two unsigned 8-bit value

21、s result to memoryMIN(A),(M) MEMAXDMAX of two unsigned 16-bit values result to accumulatorMAX(D),(M: M+1) DEMAXMMAX of two unsigned 16-bit values result to memoryMAX(D),(M: M+1) M: M+1MAXAMAX of two unsigned 8-bit values result to accumulatorMAX(A),(M) AMAXMMAX of two unsigned 8-bit values result to

22、 memoryMAX(A),(M) M嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作ROLRotate left memory through carryROLARotate left A through carryROLBRotate left B through carryRORRotate right memory through carryRORARotate right A through carryRORBRotate right B through carry嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作ASLArithmetic shift

23、left memoryASLAArithmetic shift left AASLBArithmetic shift left BASLDArithmetic shift left DASRArithmetic shift right memoryASRAArithmetic shift right AASRBArithmetic shift right B嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作LSLLogic shift left memoryLSLALogic shift left ALSLBLogic shift left BLSLDLogic shift le

24、ft DLSRLogic shift right memoryLSRALogic shift right ALSLRBLogic shift right BLSRDLogic shift right D嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作ABAAdd B to A(A) + (B) AABXAdd B to X(B) + (X) XABYAdd B to Y(B) + (Y) YADCAAdd with carry to A(A) + (M) + C AADCBAdd with carry to B(B) + (M) + C BADDAAdd without car

25、ry to A(A) + (M) AADDBAdd without carry to B(B) + (M) BADDDAdd to D(A: B) + (M: M + 1) A: BDAADecimal adjust A(A)10嵌入式系统及应用嵌入式系统及应用在在$0800$0803和和$1000$1003内存单元各存放着一个长整型数,内存单元各存放着一个长整型数,求它们的和并放在求它们的和并放在$2000$2003单元。单元。注意高位字节在低地址单元。注意高位字节在低地址单元。解:解:LDD$0802;取得被加数的低位字到累加器;取得被加数的低位字到累加器DADD$1002;与加数的低位字

26、相加,结果放在;与加数的低位字相加,结果放在DSTD$2002;结果低位字保存到目标地址单元;结果低位字保存到目标地址单元LDD$0800;取得被加数的高位字到;取得被加数的高位字到D;(;(A存放高位字节,存放高位字节,B存放低位字节)存放低位字节)ADCB$1001;高位字中的低位字节与加数对应位相加,结果放;高位字中的低位字节与加数对应位相加,结果放BADCA$1000;高位字中的高位字节与加数对应位相加,结果放;高位字中的高位字节与加数对应位相加,结果放ASTD$2000;结果;结果D(A、B)保存到目标地址单元)保存到目标地址单元嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能

27、操操 作作SBASubtract B from A(A) - (B) ASBCASubtract with borrow from A(A) - (M) - C ASBCBSubtract with borrow from B(B) - (M) - C BSUBASubtract memory from A(A) - (M) ASUBBSubtract memory from B(B) - (M) BSUBDSubtract memory from D(A: B)(D) - (M: M+1) D嵌入式系统及应用嵌入式系统及应用在在$0800$0803和和$1000$1003内存单元各存放着一个

28、长整型数,内存单元各存放着一个长整型数,求它们的差并放在求它们的差并放在$2000$2003单元。单元。注意高位字节在低地址单元。注意高位字节在低地址单元。解:解:LDD$0802;取得被减数的低位字到累加器;取得被减数的低位字到累加器DSBD$1002;与减数的低位字相减,差放在;与减数的低位字相减,差放在D中,注意可能产生错位中,注意可能产生错位STD$2002;差的低位字保存到目标地址单元;差的低位字保存到目标地址单元LDD$0800;取得被减数的高位字到;取得被减数的高位字到D;(;(A存放高位字节,存放高位字节,B存放低位字节)存放低位字节)SBCB$1001;高位字中的低位字节与减

29、数对应位相减,结果放;高位字中的低位字节与减数对应位相减,结果放BSBCA$1000;高位字中的高位字节与减数对应为相减,结果放;高位字中的高位字节与减数对应为相减,结果放ASTD$2000;结果;结果D(A、B)保存到目标地址单元)保存到目标地址单元嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作MUL8 by 8 multiply (unsigned)(A) (B) A: BEMUL16 by 16 multiply (unsigned) (D) (Y) Y: DEMULS16 by 16 multiply (signed)(D) (Y) Y: D嵌入式系统及应用嵌入式系统

30、及应用助记符助记符功功 能能操操 作作EDIV32 by 16 divide (unsigned)(Y: D) (X) Y余数余数 DEDIVS32 by 16 divide (signed)(Y: D) (X) Y余数余数 DFDIV16 by 16 fractional divide(D) (X) X余数余数 DIDIV16 by 16 integer divide (unsigned)(D) (X) X余数余数 DIDIVS16 by 16 integer divide (signed)(D) (X) X余数余数 D嵌入式系统及应用嵌入式系统及应用整数除法整数除法 16/16 无符号或有

31、符号(无符号或有符号(IDIV/IDIVS)操作:操作:D REG/X REG结果:商在结果:商在X中;余数在中;余数在D中中扩展的除法扩展的除法 32-Bit/16-Bit 无符号或有符号(无符号或有符号(EDIV/EDIVS)操作操作: (Y: D)/(X) Y;余数;余数 DV=1,如果结果,如果结果$FFFF(无符号(无符号V=1,如果结果,如果结果$7FFF(有符号)(有符号)C=1,如果除数为,如果除数为$0000嵌入式系统及应用嵌入式系统及应用EMACS( M(X) : M(X+1) ) ( M(Y) : M(Y+1) ) + M M+3 ) M M+3例:例:EMACS $25

32、00 (* 32-BIT RESULT *)嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作ANDAAND A with memory(A) (M) AANDBAND B with memory(B) (M) BANDCCAND CCR with memory(CCR) (M) CCRORAAOR A with memory(A) + (M) AORABOR B with memory(B) + (M) BORCCOR CCR with memory(CCR) + (M) CCREORAExclusive OR A with memory(A) (M) AEORBExclusi

33、ve OR B with memory(B) (M) B嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作CBACompare A to B(A) (B)CMPACompare A to memory(A) (M)CMPBCompare B to memory(B) (M)CPDCompare D to memory(16-bit)(A: B) (M: M+1)CPSCompare SP to memory(16-bit) (SP) (M: M+1)CPXCompare X to memory(16-bit)(X) (M: M+1)CPYCompare Y to memory(1

34、6-bit)(Y) (M: M+1)嵌入式系统及应用嵌入式系统及应用助记符助记符功功 能能操操 作作TSTTest memory for zero or minus(M) $00TSTATest A for zero or minus(A) $00TSTBTest B for zero or minus(B) $00BITABit test A(A) (M) BITBBit test B(B) (M)嵌入式系统及应用嵌入式系统及应用助记符助记符条条 件件CCR 检验检验(L)BRABranch always1 = 1(L)BRNBranch never1 = 0嵌入式系统及应用嵌入式系统及应用

35、助记符助记符条条 件件CCR 检验检验关关 系系(L)BCCBranch if carry clearC = 1A M(L)BHSBranch if higher or sameC = 0R M(L)BLOBranch if lowerC = 1R M(L)BLEBranch if less than or equalZ + (N V) = 1R M(L)BLTBranch if less thanN V = 1R M嵌入式系统及应用嵌入式系统及应用助记符助记符条条 件件操操 作作DBEQDecrement counter and branch if = 0(counter = A, B, D, X, Y, or SP)(counter) 1 counterif (counter) = 0, then branchDBNEDecrement c

温馨提示

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

评论

0/150

提交评论