收藏 分享(赏)

单片机与DSP汇编语言的区别.doc

上传人:HR专家 文档编号:11402724 上传时间:2020-04-16 格式:DOC 页数:6 大小:43.50KB
下载 相关 举报
单片机与DSP汇编语言的区别.doc_第1页
第1页 / 共6页
单片机与DSP汇编语言的区别.doc_第2页
第2页 / 共6页
单片机与DSP汇编语言的区别.doc_第3页
第3页 / 共6页
单片机与DSP汇编语言的区别.doc_第4页
第4页 / 共6页
单片机与DSP汇编语言的区别.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、单片机与DSP汇编语言的区别单片机与DSP在硬件上的不同就在一定程度上决定了两者汇编语言的不同。DSP微处理器的主要特点有:1.DSP内部采用程序空间和数据空间分开的哈佛结构,允许同时取指令和取操作数,还允许在程序空间和数据空间互相传送数据。2.许多DSP芯片内部都采用多总线结构,这样可以保证在一个机器周期内多次访问程序空间和数据空间。3.DSP每执行一次指令,需要通过预取指、取指、译码、寻址、取操作数和执行等流水线阶段。4.DSP内部包括多个处理器单元,他们可以在一个指令周期内同时进行运算。5.具有特殊的DSP指令,比如TMS320C54xx中的MACD(乘法、累加和数据移动)指令等。6.还

2、有指令周期短、运算精度高,硬件配置强等特点。单片微型计算机(Single Chip Microcomputer)简称单片机,又称微控制器(Microcontroller Unit)或嵌埋式控制器(Embeded Controller),是将计算机的基本部件微型化,使之集成一块芯片上的微机。片内含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。根据以上DSP与单片机的特点,我们就可以看出单片机多用于一些简单的数字信号处理,而DSP更适合于数字信号处理软件和硬件资源,用于比较复杂的数字信号处理算法。所以要满足两者处理器在不同程度上的需求,两者的汇编

3、语言也就对应的不相同了。本文以MCS-51单片机和TMS320C54系列DSP来比较两者在汇编语言上的不同之处。一、寻址方式的区别在汇编语言的指令格式上两者相同,都是标号:指令 操作数1,操作数2,操作数3;注释。但DSP汇编语言指令的数据传递是从左至右,单片机是从右至左。在寻址方式上,DSP有七种寻址方式,立即数寻址、绝对地址寻址(数据存储器寻址、程序存储器地址寻址、端口地址寻址、*(lk)寻址)、累加器寻址、直接寻址、间接寻址(单操作数寻址、循环寻址、位倒序寻址、双操作数寻址)、存储器映射寄存器寻址,堆栈寻址。单片机有8种寻址方式,寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、基址寄存器

4、加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。可见两者在寻址方式上大有不同。下边对相同的寻址方式分别在DSP和单片机上的区别。对于DSP的立即寻址,指令中必须有一个立即操作数。立即数有两种方式,一种是短立即数(3、5、8或9的数据),另一种是长立即数(16位的数据)。立即数可以包含在单字和双字指令中,单字指令中立即数是3、5、8或9的数据,双字指令中立即数是16位的数。例:LD #25,A对于单片机的立即数寻址,立即数寻址方式中操作数包含在指令字节中,操作码后紧跟的是一字节或两字节操作数(立即数),即操作数以指令字节形式存放在程序存储器中,在编写程序时用“#”表示。例:MOV A,5AH

5、MOV A,#5AH由对比和例子可以看出,两者在立即数寻址上写法格式不同,用的指令也不同,相同点是都用“#”符号表示立即数寻址。对于直接寻址,DSP在直接寻址方式中,指令代码包含了数据存储地址的低7位。这7位作为偏移地址与数据页指针DP或者堆栈指针SP共同组成了一个16位的数据存储地址。直接寻址用符号或常数来确定偏移值。例:把存储单元SAMPLE中的内容加到累加器B中去。ADD SAMPLE,B而单片机的直接寻址,直接寻址方式在指令中直接给出操作数所在存储单元的地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址,直接寻址方式访问以下三种空间:1.特殊功能寄存器。2.内部数据存储的低

6、128字节。3.位地址空间。用于操作的称为直接寻址,用于访问字节的称为直接字节寻址。例:把片内RAM中的5AH这个地址单元的内容送到累加器A。MOV A,5AHfv对比这两种相同的寻址方式,可以看出两者最直观的区别是格式的不同,DSP是将操作数放在存储地址之前,单片机则相反。在DSP中直接寻址还可以利用堆栈指针作为数据存储地址,同时指令也不同,DSP利用相对应的指令,单片机则一般都是MOV作为传送指令。两者对直接寻址都没有特殊的符号表示。对于寄存器间接寻址,DSP的间接寻址有4种类型:单操作数寻址、循环寻址、位倒序寻址和双操作数寻址。在间接寻址中,64K16位数据空间都可以通过辅助寄存器中的1

7、6位地址进行访问。C54xx系列DSP有8个16位辅助寄存器(AR0-AR7)。两个辅助寄存器算数单元可以根据辅助寄存器的内容操作,完成无符号的16位数据操作数,可以再一条指令中访问两个数据存储单元。例:*ARx-(访问后ARx中的地址减1)、*ARx(lk)等,操作语法有很多种,实现的功能也不相同。单片机的寄存器间接寻址,是把指定寄存器中的内容作为地址,由该地址所指定的单元内容作为操作数,MCS-51规定R0和R1为间接寻址寄存器即地址指针,可以寻址内部RAM低128字节地址单元的内容。寄存器间接寻址方式也可访问外部扩展的数据存储器,用R0、R1或DPTR作为地址指针,间接寻址用符号表示。例

8、;MOV A,R0所以,虽然DSP和单片机都有寄存器间接寻址,但是DSP的间接寻址要比单片机复杂的多,DSP的分类就有四种,每种分类都不相同,DSP的数据访问空间要比单片机的大,寄存器也不相同,根本应该是两者所用的硬件配置和需求程度不一样。两者最直观的差别是表示方式上,书写的格式完全不同。其他方面,DS独有的是绝对地址寻址(数据存储器寻址、程序存储器地址寻址、端口地址寻址、*(lk)寻址)、累加器寻址、存储器映射寄存器寻址,堆栈寻址,单片机独有的是寄存器寻址、基址寄存器加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。二、指令的区别 TMS320C54xx系列DSP的指令共有129条,比MCS

9、-51的指令多了18条。DSP的指令按照功能分为4种基本类型:算数指令、逻辑指令、程序控制指令、存储和装入指令以及循环指令。单片机指令按功能分为5种基本类型:数据传送类指令、算数运算类指令、逻辑运算类指令、位操作类指令,控制转移类指令。在算数指令上。DSP的算数指令可以分为加法指令(ADD)、减法指令(SUB)、乘法指令(MPY)、乘加指令(MAC)、乘减指令(MAS)、双数据或双精度指令(DADD/DSUB)以及特殊操作指令(ABDST、FIRS、SQDST)。其中大部分指令只需要1个指令周期,个别指令需要2-3个周期。MCS-51算数运算指令包括加、减、乘、除基本四则运算和增量(加1)、减

10、量(减1)运算,执行结果将使进位(Cy)、辅助进位(AC),溢出标志位(OV)标志或复位。DSP独有的是程序控制指令、存储和装入指令、循环指令,单片机独有的是数据传送指令、位操作指令、控制转移类指令。对于算数指令:DSP的算数运算指令可分为加法指令(ADD)、减法指令(SUB)、乘法指令(MPY)、乘加指令(MAC)、乘减指令(MAS)、双数据或双精度指令(DADD、DSUB)和特殊操作指令(ABDST、FIRS、SQDST)。单片机算数运算指令包括加、减、乘、除四则运算和增量(加1)、减量(减1)运算,执行结果将使进位(Cy)、辅助进位(AC),溢出(OV)标志置位或复位。算数/逻辑运算(A

11、LU)部件仅执行无符号二进制整数的运算。借助溢出标志,可对带符号数进行2的补码运算;借助进位标志,可进行多精度加、减运算;也可对压缩码的BCD码数进行运算。指令有:ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV八种操作助记符。例如:DSP的加法指令:ADD Smen,src 单片机的加法指令:ADD A,Rn。两者在形式和指令上相同,但DSP是指将Smen加到累加器中,单片机是指将Rn加到累加器中,两种在写法位置上相反,这是因为DSP的数据传送是从左至右,单片机相反。在DSP的加法指令中还带有移位功能,如:ADD Smen,16,src,dst 功能是将Smen左移16位后加

12、到累加器中。类似这样的例子对于DSP不仅包括了单片机同类指令的功能还实现了比其更多的功能指令。DSP独有的指令有乘加指令、乘减指令、双数据或双精度指令(DADD、DSUB)和特殊操作指令(ABDST、FIRS、SQDST)。对于逻辑运算指令:DSP的逻辑指令包括与指令(AND)、或指令(OR)、异或指令(XOR)、移位指令(ROL)和测试指令(BITF)。单片机的逻辑运算指令有清除、求反、移位、与、或、异或等操作,助记符有CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL。两者在总体上相比,DSP多了测试指令,单片机则多了清除、求反指令。同是与指令,例如,DSP中:AND Sm

13、en,src (Smen与累加器相与)单片机中:ANL A,Rn(Rn与累加器相与)两者不但指令不同,数据传送方向也相反。并且DSP中还有先移位再相与的功能,如:AND #lk,SHFT,src,dst(长立即数移位后和累加器相与。)对于其他相同功能的指令,两者的表达方式也不同。详细见表1。表1指令与或异或移位DSPANDORXORROL单片机ANLORLXRLRL和与指令一样,上表中两者相同功能的指令除过在表达符号不同外,每条指令中,DSP都还可以进行先移位的操作再实现相应功能。可见两者不止在指令的条数上不同,分类功能也相差很大,DSP可以完成单片机完成不了的复杂任务,所以指令要比单片机多也

14、是可以想到的,即使指令要完成的功能相同但在实际的执行上也有差别。三、在伪指令上的区别伪指令主要是完成各个阶段的定义,对符合的定义、对变量的定义DSP的定义等。他是程序中不可缺少的指令,但不存在在实际的可执行文件里。伪指令在程序编译后,汇编按照位置的设置将程序初始化,当汇编完成之后,伪指令完成任务,就会被删除。这即是里边“伪”的含义。在DSP中伪指令主要完成以下任务:1. 将代码和数据汇编到特定的段。2. 为未初始化的变量保留存储空间。3. 控制展开列表的形式。4. 存储器初始化。5. 汇编条件块。6. 定义全局变量和局部变量。7. 指定汇编器可以获得宏的特定库。8. 检查符号调试信息。DSP的

15、伪指令很多,其下边的分类也很多。对于单片机的伪指令,常用的有7条:1. ORG-定位伪指令。2. END-结束汇编伪指令。3. EQU-赋值伪指令。4. DB-定义字节伪指令。5. DW-定义数据伪指令。6. DS-定义存储区伪指令。7. BIT-位定义指令。从上边可以看出在伪指令上,两者的区别很大,功能和所要完成的任务几乎都不相同。DSP的伪指令要比单片机的复杂,两者的使用格式也不同。DSP汇编中伪指令的格式是:伪指令(书写上左下角有点) 表达式,表达式,如:.bss(变量段,该段为未初始化的变量保留空间)。单片机汇编中伪指令的格式是:标号: 伪指令 表达式。四、在程序设计方法上的区别在TM

16、S320C54x汇编语言源程序中,以.asm为程序扩展名,程序员用“段”伪指令来组织程序的结构。程序一般由数据段、堆栈段和代码段组成。程序的基本结构有四种:顺序结构、分支结构、循环结构和子程序结构。单片机的汇编语言,程序设计的基本方法有5种:简单程序的设计、分支程序设计、循环程序设计、子程序设计、查表程序设计。我们来看两者在汇编中相同方式的程序设计方法有什么不同。简单的程序设计(顺序结构):在DSP中顺序结构是最基本、最简单的程序结构形式,程序中的语句或结构被连续执行。在采用数据结构编程时要注意选取合理的算法,采用合适的寻址方式进行指令的选取,存储数据和结果时注意内存空间的分配和寄存器的使用。

17、在单片机中简单的程序是指程序中没有使用转移类指令的程序段,MCS-51单片机执行这类程序时只需要按照指令存储位置的先后顺序依次执行,中间不会有任何分支程序,程序中大量使用数据传送指令,程序简单。两者在写的方法上差距并不大,主要区别是之间讲过的指令使用格式,表达式的操作顺序。分支程序设计:DSP的程序分支主要是靠条件转移指令实现的。TMS320C54x有丰富的程序控制和转移指令。分支转移指令如B、BACC、BC等,通过改变PC来改变程序的流向。在采用分支结构时应注意正确选择条件运算符、正确选择相应指令、每个分支中要有完整的终结点、对于多分支程序要检查程序的正确与否。与DSP汇编语言的分支程序设计

18、相比,单片机的分支程序设计特点也是含有转移指令。MCS-51的条件转移指令共有13条,分为累加器A判零条件转移、比较条件转移、减1条件转移和控制条件转移等4类。两者的设计方法也大致相同,不同之处在于转移指令和其他指令的选取和使用。循环程序设计:DSP的循环结构程序设计主要用于某些需要进行重复的操作,简化了程序并且节约内存。其步骤分为:循环初始状态、循环体和循环控制条件。1. 循环初始状态主要指设置循环次数的初始值,和其他为能使循环体正常工作而设置的初始状态等。2. 循环体是指循环操作部分,包括循环的工作部分及修改部分。循环的工作部分是实现程序功能的主要程序段,循环的修改部分是指当程序循环执行时

19、,对一些参数的有规律修正。循环控制部分是循环程序的设计关键,每个循环过程必须选择一个控制循环程序运行和结束的条件。单片机的汇编语言循环程序设计特点是程序中含有可以重复执行的程序段。步骤和DSP的相同,都是经过循环初始化、循环处理、循环控制,循环结束设计阶段。举一个简单的例子,对于DSP要用汇编实现下边的计算式。汇编程序为:.bss x,5.bss y,1STM #x,AR1STM #4,AR2LD #0,ALoop:ADD *AR1+,A BANZ loop,*ARZ- STL A,*(y)对于单片机要实现下边问题:16位二进制数变换成为 BCD 码:HEX2BCD: CLR A MOV R2

20、, A MOV R3, A MOV R4, A MOV R5, #16 LOOP: CLR C MOV A, R1 RLC A MOV R1, A MOV A, R0 DA A MOV R3, A MOV A, R2 ADDC A, R2 MOV R2, A DJNZ R5, LOOP END由这两个实例就能更好的体会汇编语言在DSP与单片机中的区别,很明显的可以看出,两者虽然在指令格式上差不多,但在指令有所区别,且DSP的写法是从左至右,单片机是从右至左,其余程序设计方法大致相同。DSP前两行是伪指令,单片机汇编程序最后一行END也是伪指令,可以看出两者在写法上的不同。五、总结DSP与单片机在汇编语言上区别还不止文中提到的这些。综上所述,两者在硬件上的不同和人们对他们不同程度的需求就在一定程度上决定了两者汇编语言的不相同。两者在程序设计方法和汇编语言的软件开发过程中也略有不同,但两者最大区别应该在于寻址方式、指令、伪指令和书写方式上。由这些最基础的导致了最终程序等的不相同,就像是英语中的字词,语法的不同导致文章不同一样。但DSP和单片机都可以用汇编编写。文中所举的两个程序小实例也可以明显看出两者同用汇编语言编写,但在写法和指令上的差别。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报