单片机与DSP汇编语言的区别_第1页
单片机与DSP汇编语言的区别_第2页
单片机与DSP汇编语言的区别_第3页
单片机与DSP汇编语言的区别_第4页
单片机与DSP汇编语言的区别_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

单片机与DSP编语言的区单片机与DSP在硬件上的不同就在一定程度上决定了两者汇编语言的不同。DSP微处理器的主要特点有:1.DSP内部采用程序空间和数据空间分开的哈佛结构,允许同时取指令和取操作数,还允许在程序空间和数据空间互相传送数据。2.许多DSP芯片内部都采用多总线结构这样可以保证在一个机器周期内多次访问程序空间和数据空间。3.DSP每执行一次指令,需要通过预取指、取指、译码、寻址、取操作数和执行等流水线阶段。4.DSP内部包括多个处理器单元可以在一个指令周期内同时进行运算。5.具有特殊的DSP指令,比TMS320C54xx中的(乘法、累加和数据移动)指令等。6.还有指令周期短、运算精度高,硬件配置强等特点。单片微型计算机(SingleChipMicrocomputer)简称单片机,又称微控制器(MicrocontrollerUnit)或嵌埋式控制器EmbededController),是将计算机的基本部件微型化,使之集成一块芯片上的微机。片内含CPU、ROM、、并行I/O、串行I/O、定时器/数器、中断控制、系统时钟及系统总线等。根据以上DSP与单片机的特点就可以看出单片机多用于一些简单的数字信号处理而更适合于数字信号处理软件和硬件资源于比较复杂的数字信号处理算法所以要满足两者处理器在不同程度上的需求两者的汇编语言也就对应的不相同了。本文以MCS-51单片机和TMS320C54系列来比较两者在汇编语言上的不同之处。一、寻方式的区别在汇编语言的指令格式上两者相同,都是标号:指令操作数1,操作数2,操作数3;注释。DSP汇编语言指令的数据传递是从左至右,单片机是从右至左。在寻址方式上,DSP有七种寻址方式,立即数寻址、绝对地址寻址(数据存储器寻址、程序存储器地址寻址、端口地址寻址、址加器寻址、直接寻址、间接寻址(单操作数寻址、循环寻址、位倒序寻址、双操作数寻址存储器映射寄存器寻址,堆栈寻址。单片机8种寻址方式,寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、基址寄存器加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。可见两者在寻址方式上大有不同。下边对相同的寻址方式分别在DSP和单片机上的区别。对于DSP的立即寻址,指令中必须有一个立即操作数。立即数有两种方式,一种是短立即数(5、或9的数据一种是长立即数16位的数据即数可以包含在单字和双字指令中,单字指令中立即数是3、5、或9的数据,双字指令中立即数是16位的数。例:LD#25,A对于单片机的立即数寻址立即数寻址方式中操作数包含在指令字节中操作码后紧跟的是一字节或两字节操作数(立即数即操作数以指令字节形式存

放在程序存储器中,在编写程序时用“#”表示。例:MOVA,5AHMOVA,#5AH由对比和例子可以看出两者在立即数寻址上写法格式不同用的指令也不同,相同点是都用“#”符号表示立即数寻址。对于直接寻址DSP在直接寻址方式中指令代码包含了数据存储地址的低7位。这7位作为偏移地址与数据页指针DP或者堆栈指针共同组成了一个16位的数据存储地址。直接寻址用符号或常数来确定偏移值。例:把存储单元SAMPLE中的内容加到累加器B中去。ADDSAMPLE,B而单片机的直接寻址接寻址方式在指令中直接给出操作数所在存储单元的地址该地址指出了参与运算或传送的数据所在的字节单元或位的地址直接寻址方式访问以下三种空间:1.特殊功能寄存器。2.内部数据存储的低128字节。3.位地址空间。用于操作的称为直接寻址,用于访问字节的称为直接字节寻址。例:把片内RAM中的5AH个地址单元的内容送到累加器AMOVA,5AHfv对比这两种相同的寻址方式,可以看出两者最直观的区别是格式的不同,DSP是将操作数放在存储地址之前单片机则相反在DSP中直接寻址还可以利用堆栈指针作为数据存储地址,同时指令也不同DSP利用相对应的指令,单片机则一般都是MOV作为传送指令。两者对直接寻址都没有特殊的符号表示。对于寄存器间接寻址,DSP的间接寻址有4种类型:单操作数寻址、循环寻址、位倒序寻址和双操作数寻址。在间接寻址中64K×位数据空间都可以通过辅助寄存器中的16位地址进行访问C54xx系列DSP有8个16位辅助寄存器(AR0-AR7辅助寄存器算数单元可以根据辅助寄存器的内容操作完成无符号的16位数据操作数,可以再一条指令中访问两个数据存储单元。例(访问后ARx中的地址减等,操作语法有很多种,实现的功能也不相同。单片机的寄存器间接寻址是把指定寄存器中的内容作为地址由该地址所指定的单元内容作为操作数,MCS-51规定R0和为间接寻址寄存器即地址指针,可以寻址内部低128字节地址单元的内容。寄存器间接寻址方式也可访问外部扩展的数据存储器,用R0、或DPTR作为地址指针,间接寻址用符号@表示。例;MOVA,@R0所以,虽然DSP和单片机都有寄存器间接寻址,但是的间接寻址要比单片机复杂的多,的分类就有四种,每种分类都不相同,DSP的数据访问空间要比单片机的大寄存器也不相同根本应该是两者所用的硬件配置和需求程度不一样。两者最直观的差别是表示方式上,书写的格式完全不同。其他方面,DS独有的是绝对地址寻址(数据存储器寻址、程序存储器地址寻址、端口地址寻址、*(lk)寻址加器寻址、存储器映射寄存器寻址,堆栈寻址,单片机独

有的是寄存器寻址、基址寄存器加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。二、指的区别TMS320C54xx系列的指令共有129条,比MCS-51的指令多了条。DSP的指令按照功能分为4种基本类型:算数指令、逻辑指令、程序控制指令、存储和装入指令以及循环指令单片机指令按功能分为种基本类型数据传送类指令、算数运算类指令、逻辑运算类指令、位操作类指令,控制转移类指令。在算数指令上。DSP的算数指令可以分为加法指令(法指令(乘法指令(MPY加指令MAC减指令MAS数据或双精度指令(DADD/DSUB)以及特殊操作指令ABDST、、SQDST其中大部分指令只需要个指令周期,个别指令需要2-3个周期。MCS-51算数运算指令包括加、减、乘、除基本四则运算和增量(1量(1运算,执行结果将使进位(Cy助进位(出标志位(OV)标志或复位。DSP独有的是程序控制指令、存储和装入指令、循环指令,单片机独有的是数据传送指令、位操作指令、控制转移类指令。对于算数指令:DSP的算数运算指令可分为加法指令(ADD法指令(SUB法指令(MPY加指令MAC乘减指令MAS数据或双精度指令(DADDDSUB)和特殊操作指令ABDST、FIRS、片机算数运算指令包括加、减乘除四则运算和增(加减算行结果将使进(辅助进位(出()标志置位或复位。算数逻辑运算ALU)部件仅执行无符号二进制整数的运算。借助溢出标志,可对带符号数进行的补码运算;借助进位标志可进行多精度加减运算也可对压缩码的码数进行运算。指令有:ADD、ADDC、SUBB、、DA、DIV八种操作助记符。例如:DSP的加法指令:ADDSmen,src单片机的加法指令:A,Rn。两者在形式和指令上相同但是指将Smen加到累加器中单片机是指将Rn加到累加器中,两种在写法位置上相反,这是因DSP的数据传送是从左。在DSP指有ADDSmen,16,src[,dst]功能是将Smen左移16位后加到累加器中类似这样的例子对于DSP不仅包括了单片机同类指令的功能还实现了比其更多的功能指令独有的指令有乘加指令、乘减指令、双数据或双精度指令(、DSUB)和特殊操作指令(ABDST、、SQDST对于逻辑运算指令:DSP的逻辑指令包括与指令(AND指令或指令位指令(ROL)和测试指令BITF片机的逻辑运算指令有清除、求反、移位、与或异或等操作助记符有CLRCPLRLRLCANLORLXRL。两者在总体上相比,多了测试指令,单片机则多了清除、求反指令。同是与指令,例如DSP中AND(Smen与累加器相与)单片机中ANLA,Rn(Rn与累加器相与)两者不但指令不同,数据传送方向也相反。并且中还有先移位再相与的功能,如:#lk[,SHFT],src[,dst](长立即数移位后和累加器相与于其他相同功能的指令,两者的表达方式也不同。详细见表。表1指令与或异或移位

DSPANDORXORROL单片机ANL

ORLXRLRL和与指令一样上表中两者相同功能的指令除过在表达符号不同外每条指令中,DSP都还可以进行先移位的操作再实现相应功能。可见两者不止在指令的条数上不同分类功能也相差很大DSP可以完成单片机完成不了的复杂任务所以指令要比单片机多也是可以想到的即使指令要完成的功能相同但在实际的执行上也有差别。三、在指令上的区伪指令主要是完成各个阶段的定义符合的定义对变量的定义的定义等他是程序中不可缺少的指令但不存在在实际的可执行文件里伪指令在程序编译后汇编按照位置的设置将程序初始化当汇编完成之后伪指令完成任务会被删除是里边“”的含义DSP中伪指令主要完成以下任务:1.将代码和数据汇编到特定的段。2.为未初始化的变量保留存储空间。3.控制展开列表的形式。4.存储器初始化。5.汇编条件块。6.定义全局变量和局部变量。7.指定汇编器可以获得宏的特定库。8.检查符号调试信息。DSP的伪指令很多,其下边的分类也很多。对于单片机的伪指令,常用的有条:1.定位伪指令。2.END-束汇编伪指令。3.EQU-赋伪指令。4.DB-定义字节伪指令。5.DW-定义数据伪指令。6.DS-定义存储区伪指令。7.BIT-位定义指令。从上边可以看出在伪指令上两者的区别很大功能和所要完成的任务几乎都不相同。的伪指令要比单片机的复杂,两者的使用格式也不同。汇编中伪指令的格式是伪指(书写上左下角有点表达式表达式如(变量段段为未初始化的变量保留空间机汇编中伪指令的格式是号伪指令表达式。四、在序设计方法的区别在TMS320C54x汇编语言源程序中,.asm为程序扩展名,程序员“段”指令来组织程序的结构程序一般由数据段堆栈段和代码段组成程序的基本结构有四种序结构支结构环结构和子程序结构片机的汇编语言,程序设计的基本方法有5种:简单程序的设计、分支程序设计、循环程序设计、子程序设计、查表程序设计。我们来看两者在汇编中相同方式的程序设计方法有什么不同单的程序设

计(顺序结构在DSP中顺序结构是最基本最简单的程序结构形式序中的语句或结构被连续执行在采用数据结构编程时要注意选取合理的算法采用合适的寻址方式进行指令的选取,存储数据和结果时注意内存空间的分配和寄存器的使用。在单片机中简单的程序是指程序中没有使用转移类指令的程序段,MCS-51单片机执行这类程序时只需要按照指令存储位置的先后顺序依次执行间不会有任何分支程序程序中大量使用数据传送指令程序简单两者在写的方法上差距并不大,主要区别是之间讲过的指令使用格式,表达式的操作顺序。分支程序设计的程序分支主要是靠条件转移指令实现的有丰富的程序控制和转移指令。分支转移指令如、BACC、BC等,通过改变PC来改变程序的流向在采用分支结构时应注意正确选择条件运算符正确选择相应指令个分支中要有完整终结点于多分支程序要检查程序的正确与否。与DSP汇编语言的分支程序设计相比机的分支程序设计特点也是含有转移指令MCS-51的条件转移指令共有条分为累加器A判零条件转移比较条件转移减1条件转移和控制条件转移等类两者的设计方法也大致相同不同之处在于转移指令和其他指令的选取和使用。循环程序设计的循环结构程序设计主要用于某些需要进行重复的操作,简化了程序并且节约内存步骤分为初始状态环体和循环控制条件。1.循环初始状态主要指设置循环次数的初始值,和其他为能使循环体正常工作而设置的初始状态等。2.循环体是指循环操作部分,包括循环的工作部分及修改部分。循环的工作部分是实现程序功能的主要程序段,循环的修改部分是指当程序循环执行时,对一些参数的有规律修正。循环控制部分是循环程序的设计关键个循环过程必须选择一个控制循环程序运行和结束的条件。单片机的汇编语言循环程序设计特点是程序中含有可以重复执行的程序段。步骤和DSP的相同,都是经过循环初始化循环处理、循环控制,循环结束设计阶段。举一个简单的例子,对于DSP要用汇编实现下边的计算式。5yxii汇编程序为:.bssx,5.bssy,1STM#x

温馨提示

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

评论

0/150

提交评论