飞思卡尔8位单片机MC9S08+05+HC08+CPU与汇编基础.ppt_第1页
飞思卡尔8位单片机MC9S08+05+HC08+CPU与汇编基础.ppt_第2页
飞思卡尔8位单片机MC9S08+05+HC08+CPU与汇编基础.ppt_第3页
飞思卡尔8位单片机MC9S08+05+HC08+CPU与汇编基础.ppt_第4页
飞思卡尔8位单片机MC9S08+05+HC08+CPU与汇编基础.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 HC08 CPU与汇编基础,主要内容 HC08 CPU基本构成 寻址方式 指令系统 HCS08 CPU与HC08 CPU的比较 08汇编语言基础,嵌入式应用技术基础教程课件,5.1 HC08 CPU基本构成,5.1 HC08 CPU基本构成,M68HC08系列单片机的各种型号的CPU均使用HC08 CPU,有时也将HC08 CPU称为CPU08,它具有如下主要特点: 目标代码与M68HC05系列单片机向上兼容; 具有16位堆栈指针SP; 具有16位变址寄存器HX; 8MHz CPU内部总线频率; 64KB程序/数据存储器空间; 16种寻址方式; 不经过累加器A的存储器之间数据直接传送;

2、 快速8位8位乘法指令、快速16位与8位相除指令,增强的BCD指令; 模块化结构,可扩展的内部总线定义可使寻址范围超过64KB; 低功耗的STOP、WAIT模式。,嵌入式应用技术基础教程课件,5.1 HC08 CPU基本构成,HC08 CPU中有5个寄存器:,嵌入式应用技术基础教程课件,(1)累加器A(Accumulator) 累加器A是8位通用寄存器,用来存放操作数和运算结果。数据读取时,累加器A用于存放从存储器读出的数据;数据写入时,累加器A用于存放准备写入存储器的数据。在执行算术、逻辑操作时,累加器首先存放一个操作数,执行完毕时累加器存放操作结果。累加器A是指令系统中最灵活的一个寄存器,

3、各种寻址方式均可对之寻址。复位时,累加器的内容不受影响。,5.1 HC08 CPU基本构成,(2)变址寄存器HX(Index Register),嵌入式应用技术基础教程课件,HC08 CPU的变址寄存器HX是16位寄存器,H是高8位,X是低8位,可单独使用。变址寄存器HX主要用于变址寻址方式中确定操作数的地址,也可以用来存放临时数据,作为一般寄存器使用。复位时,高8位被清零。 (3)堆栈指针SP(Stack Pointer) SP是指向下一个栈地址的16位寄存器,堆栈指针SP采用递减的结构,即进栈时SP减1,出栈时SP加1。复位时,SP的初值为$00FF(前置符号$表示十六进制数,下同)。栈指

4、针复位指令(RSP)可将SP的低8位置为$FF,而不影响高8位。 在堆栈指针作为8位或16位的偏移量寻址方式中,SP充当变址寄存器功能,CPU利用SP的内容确定操作数的条件地址。,5.1 HC08 CPU基本构成,(4)程序计数器PC(Program Counter),嵌入式应用技术基础教程课件,程序计数器PC也是16位的,可寻址范围达64KB。PC存放下一条指令的地址,在执行转移指令时存放转移地址,在执行中断指令时存放中断子程序入口地址。复位时,程序计数器PC装入地址$FFFE和$FFFF中的内容。一般地,地址$FFFE和$FFFF中的内容是复位的入口地址,这样,复位后,程序能够从复位入口地

5、址开始执行程序。复位入口地址也称复位向量地址或复位矢量地址(Reset vector address),意味着复位状态过后,PC指向该处,从这里执行程序。 (5)条件码寄存器CCR(Condition Code Register) 条件码寄存器CCR是8位的寄存器(见图5-1),其中5位(除了中断屏蔽位I)用于指示刚执行完指令的结果状态,这些位可由程序来测试。第6位(D6)和第5位(D5)永远为1,其余位有具体的含义。,5.1 HC08 CPU基本构成,HC08 CPU的寄存器,嵌入式应用技术基础教程课件,返回,5.2 寻址方式,5.2 寻址方式,(1)内在寻址方式(INH,Inherent

6、addressing mode) 内在寻址,是指那些在指令中已经包含了操作数所在之处。内在寻址的指令是没有明确指出操作数的指令,操作数由指令隐含,且为单字节指令。这类指令只是执行内在的数据操作。例如累加器加1指令INCA、中断返回指令RTI、停止指令STOP和置进位标志SEC等。 (2)立即寻址方式(IMM,Immediate addressing mode) 立即寻址,是在指令中直接给出操作数。这种指令是双字节指令,第一个字节是操作码,第二个字节是参与操作的立即数。立即寻址指令通常是对立即数和累加器内容或变址寄存器内进行操作。下述指令属于IMM寻址方式。 LDA #$FC ; 把十六进制数$

7、FC放入累加器A中,嵌入式应用技术基础教程课件,5.2 寻址方式,(3)直接寻址方式(DIR,Direct addressing mode),直接寻址指令,字长二字节,它可以对存储器的起始256个地址($0000$00FF,叫内存直接页或内存第0页)进行访问。指令的第一个字节是操作码,第二个字节是操作数地址。在直接寻址中,CPU自动把$00作为操作数高位地址,第二个字节作为操作数的低位地址,其寻址范围为$0000$00FF。下述指令属于DIR寻址方式。 LDA $60 ;将存储单元$60中的数取至累加器A BRSET和BRCLR是2条很特别的3字节指令,它们用直接寻址方式取得操作数,用相对寻址

8、方式指明转移目的地址。例如: BRCLR 3,$50,A1 ;若存储单元$50的第3位=0则转至标号A1处 BRSET 3,$50,A1 ;若存储单元$50的第3位=1则转至标号A1处,嵌入式应用技术基础教程课件,5.2 寻址方式,(4)扩展寻址方式(EXT,Extended addressing mode),扩展寻址指令是三字节指令,可访问存储器中的任何地址。在这种指令中,第一个字节是操作码,第二个字节是操作数的高字节地址,第三个字节是低字节地址。扩展寻址是相对于直接寻址方式而言的,其寻址范围为$0000$FFFF,比直接寻址范围大得多。下述指令属于EXT寻址方式,因为它的地址已经超过了DI

9、R寻址方式的范围。 LDA $023D ;将存储单元$023D中的数取至累加器A (5)无偏移量变址方式(IX,Indexed, no offset addressing mode) 无偏移量变址的指令是单字节指令。在这种指令中,变址寄存器HX中的内容是操作数的地址。所以无偏移量变址指令可以对$0000$FFFF地址进行寻址。下述指令属于IX寻址方式。 LDA ,X ;从变址寄存器HX指向的存储器单元中取数到累加器A中 COM ,X ;将变址寄存器HX指向的存储单元数据取反,嵌入式应用技术基础教程课件,5.2 寻址方式,(6)八位偏移量变址方式(IX1,Indexed,8-bit offset

10、 addressing mode),8位偏移量变址是双字节指令,CPU把变址寄存器HX的内容和指令第二个字节内容相加,其和便是操作数地址。下述指令属于IX1寻址方式。 STA $80,X ;将A中的数存至地址为HX+$80的存储器单元中 INC $80,X ;将地址为HX+$80的存储器单元的内容加1 (7)十六位偏移量变址方式(IX2,Indexed,16-bit offset addressing mode) 该变址方式指令是三字节指令,可访问存储器的任何地址。CPU将变址寄存器HX的内容与指令的第二、三字节相加,和为操作地址。在第二、三字节中,第二字节是高位地址,第三字节是低位地址。下述

11、指令属于IX2寻址方式。 STA $280,X ;把A中的数存放到以HX+$280为地址的存储单元中 INC $280,X ;把以HX+$280为地址的存储器单元的内容加1,嵌入式应用技术基础教程课件,5.2 寻址方式,(8)相对变址寻址方式(REL,Relative addressing mode),相对变址只用于转移指令。当转移条件满足时,CPU将指令中的偏移量和程序计数器 PC的内容相加,得出转移的目的地址。如果转移条件不满足,则CPU执行下一条指令。转移指令中的偏移量是带符号的,且用一字节表示,因此转移指令的偏移量为-127+128。偏移量用二进制补码表示。相对变址转移指令的转移范围在

12、下一条指令地址的-127+128之间。下述指令属于REL寻址方式。 BRA A1 ;无条件转向标号A1处执行 BSR L1 ;调用标号L1处的子程序 特别说明:以上8种寻址方式在M68HC05系列中也具有,以下8种为M68HC08系列单片机新增的寻址方式,其中912为存储器到存储器的数据传送寻址方式,1314是含有加1的变址寻址,1516为堆栈寻址。,嵌入式应用技术基础教程课件,5.2 寻址方式,(9)存储器:直接地址直接地址寻址方式(DD, Direct to direct addressing Mode),在存储器的四种数据直接传送的寻址方式中,欲传送的数据直接从源存储单元送向目的存储单元

13、,勿需寄存器中转。在本寻址方式中,源地址与目标地址由指令直接给出。只有一条指令为DD寻址方式: MOV N1,N2 ;把内存变量N1赋值给内存变量N2 等同于下列两条指令,但上述指令不影响累加器A。 LDA N1 STA N2 等同于C语言语句: N2=N1; 特别说明:这里设N1、N2为内存变量,下同。,嵌入式应用技术基础教程课件,5.2 寻址方式,(10)存储器:直接地址变址、变址加1的寻址方式(DIX+,Direct to indexed with post increment addressing Mode),源地址为直接地址,目标地址在HX中。把源地址的数据存至目标地址后,HX+1H

14、X。仅有一条指令为DIX+寻址方式。 MOV $80,X+ ;($80)(HX),HX+1HX 等同于下列三条,但上述指令不影响累加器A,主要用于内存或端口数据填充一个表格。 LDA $80 ;($80)A STA ,X ;A(HX) AIX #!1 ;HX+1HX 特别说明:操作说明栏中,($80)表示地址为$80的内存单元内容。(HX)表示地址为HX值的内存单元。若内存单元作为源操作数,表示从该内存单元中取数,若内存单元作为目的操作数,表示将数存至该内存单元。,嵌入式应用技术基础教程课件,5.2 寻址方式,(11)存储器:立即数直接地址寻址方式(IMD,Immediate source t

15、o direct destination addressing Mode),该寻址方式,将立即数存入直接地址,指令给出的地址即作为目的地址,在指令书写中,立即数位于直接地址之前,下述指令为IMD寻址方式。 MOV #!86,N1 ;将立即数!86赋值给内存变量N1 等同于C语言语句: N1=86;,嵌入式应用技术基础教程课件,5.2 寻址方式,(12)存储器:变址直接地址、变址加1的寻址方式(IX+D,Indexed with post increment to direct addressing Mode),HX为源地址,直接地址为目的地址,把源地址的数据存至目标地址后后,HX+1HX。仅有

16、一条指令为IX+D寻址方式。 MOV X+,$80 ;(HX)($80),HX+1HX 等同于下列三条指令,但上述指令不影响累加器A,主要用于向端口传送内存数据块。 LDA ,X ;(HX)A STA $80 ;A($80) AIX #!1 ;HX+1HX,嵌入式应用技术基础教程课件,5.2 寻址方式,(13)无偏移量变址、变址加1寻址方式(IX+,Indexed,no offset, post increment addressing mode),在这种寻址方式与无偏移量变址寻址方式IX的区别在于,在本寻址方式中多了HX+1HX的操作。只有一条指令属于IX+寻址方式,该指令先完成比较操作,但

17、不论条件是否满足,均有HX+1HX。通常用于寻找一段存储区中是否有与A中相等的数。 CBEQ X+,rel ;若A=(HX)则转移,HX+1HX (14)八位偏移量变址、变址加1寻址方式(IX1+,Indexed, 8-bit offset, post increment addressing mode) 与上条指令的差别是:目的操作数的地址为8位直接地址+(HX),属于IX+寻址方式的指令也只有一条。 CBEQ addr8,X+,rel ;若A=(HX+addr8)则转移,HX+1HX,嵌入式应用技术基础教程课件,5.2 寻址方式,(15)八位偏移量堆栈寻址方式(SP1,Stack poin

18、ter,8-bit offset addressing mode),8位偏移量堆栈寻址,是将指令给出的8位直接地址与堆栈指针SP相加形成操作数的地址,下列指令属于SP1寻址方式。 LDA !2,SP ;(2+SP) A (16)十六位偏移量堆栈寻址方式(SP2,Stack pointer,16-bit offset addressing mode) 16位偏移量堆栈寻址,将指令给出的16位直接地址与堆栈指针SP相加形成操作数的地址,下列指令属于SP2寻址方式。 LDA $130,SP ;将地址$130+SP中的数取至A中 特别说明:实际编程时,程序员不必考虑8位偏移量堆栈寻址还是16位偏移量堆

19、栈寻址,汇编程序会自动识别,它们的主要区别在于汇编产生的指令长度不一样。,嵌入式应用技术基础教程课件,返回,5.3 指令系统,5.3 指令系统,HC08 CPU指令简表 :,嵌入式应用技术基础教程课件,5.3 指令系统,HC08 CPU指令简表(续):,嵌入式应用技术基础教程课件,5.3 指令系统,5.3.1 数据传送类指令,嵌入式应用技术基础教程课件,5.3.2 算术运算类指令 5.3.3 逻辑运算类指令 5.3.4 位操作类指令 5.3.5 移位类指令 5.3.6 程序控制类指令 5.3.7 其它指令,返回,5.4 HCS08 CPU与HC08 CPU的比较,5.4 HCS08 CPU与H

20、C08 CPU的比较,Freescale于2004年推出了08系列单片机的增强系列MCS08系列。MCS08系列单片机的内核使用HCS08 CPU。与HC08 CPU相比,HCS08 CPU速度更快,内部总线频率由最高8MHz提高到20 MHz,即执行一条基本指令的时间是50ns。 HCS08 CPU共有141条基本指令,比HC08 CPU增加了1条基本指令(即BGND这一条)。这141条基本指令加上寻址方式形成了280条具体指令,比HC08 CPU增加了10条具体指令。,嵌入式应用技术基础教程课件,5.4 HCS08 CPU与HC08 CPU的比较,HCS08 CPU比HC08 CPU增加的

21、指令如下:,(1)对LDHX指令,增加了EXT、IX、IX1、IX2、SP1寻址方式 指令 操作 寻址方式 LDHX addr16 (addr16: addr16+1)HX EXT LDHX ,X (HX:HX+1)HX IX LDHX addr16,X (addr16+HX: addr16+HX+1)HX IX2 LDHX addr8,X (addr8+HX: addr8+HX+1)HX IX1 LDHX addr8,SP (addr8+SP: addr8+SP+1)HX SP1 (2)对STHX、CPHX增加了EXT、SP1寻址方式 STHX addr16 HX(addr16: addr1

22、6+1) EXT STHX addr8,SP HX(addr8+SP: addr8+SP+1) SP1 CPHX addr16 HX-(addr16:addr16+1) EXT CPHX addr8,SP HX-(addr8+SP:addr8+SP+1) SP1 (3)增加了BGND(background)指令,用于调试 BGND 用于背景调试 INH,嵌入式应用技术基础教程课件,返回,5.4 HCS08 CPU与HC08 CPU的比较,5.5 08汇编语言基础,5.5.1 08汇编源程序格式 把汇编语言写成的源程序“翻译”成机器语言的工具叫汇编程序或编译器(Assembler),以下统一称作

23、编译器。 汇编语言源程序可以用通用的文本编辑软件书写编辑,以ASCII码形式存盘。具体的编译器对汇编语言源程序的格式有一定的要求,同时,编译器除了识别单片机的指令系统外,为了能够正确地产生目标代码以及方便汇编语言的编写,编译器还提供了一些在汇编时使用的命令、操作符号,在编写汇编程序时,也必须正确使用它们。由于编译器提供的指令仅是为了更好地做好“翻译”工作,并不产生具体的机器指令,因此这些指令被称为伪指令(Pseudo Instruction)。 汇编语言源程序以行为单位进行设计,每一行最多可以包含以下四个部分:,嵌入式应用技术基础教程课件,5.4 HCS08 CPU与HC08 CPU的比较,(1)标号(Labels),对于标号有下列要求及说明: 如果一个语句有标号,则标号必须从第一列开始书写。 可以组成标号的字符有:字母AZ、数字09、下划线“_”、美元符号“$”,但开头的第一个符号不能为数字和$。 08编译器不区分标号中字母的大小写。 标号应小于16个字符。 标号后可以带冒号“:”,也可以不带冒号。 一个标号在一个程序中只能定义一次,不能通过编译。 若一行中第一个字符是星号“*”,这是标号,表明该行为注释。 一行语句若只有标号,编译器将把当前程序计数器的值赋

温馨提示

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

最新文档

评论

0/150

提交评论