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

下载本文档

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

文档简介

单片机与单片机与 DSPDSP 汇编语言的区别汇编语言的区别 单片机与 DSP 在硬件上的不同就在一定程度上决定了两者汇编语言的不同 DSP 微处理器的主要特点有 1 DSP 内部采用程序空间和数据空间分开的哈佛结构 允许同时取指令和取 操作数 还允许在程序空间和数据空间互相传送数据 2 许多 DSP 芯片内部都采用多总线结构 这样可以保证在一个机器周期内 多次访问程序空间和数据空间 3 DSP 每执行一次指令 需要通过预取指 取指 译码 寻址 取操作数和 执行等流水线阶段 4 DSP 内部包括多个处理器单元 他们可以在一个指令周期内同时进行运算 5 具有特殊的 DSP 指令 比如 TMS320C54xx 中的 MACD 乘法 累加和数 据移动 指令等 6 还有指令周期短 运算精度高 硬件配置强等特点 单片微型计算机 Single Chip Microcomputer 简称单片机 又称微控制器 Microcontroller Unit 或嵌埋式控制器 Embeded Controller 是将计算机的 基本部件微型化 使之集成一块芯片上的微机 片内含有 CPU ROM RAM 并行 I O 串行 I O 定时器 计数器 中断控制 系统时钟及系统总线等 根据以上 DSP 与单片机的特点 我们就可以看出单片机多用于一些简单的 数字信号处理 而 DSP 更适合于数字信号处理软件和硬件资源 用于比较复杂 的数字信号处理算法 所以要满足两者处理器在不同程度上的需求 两者的汇 编语言也就对应的不相同了 本文以 MCS 51 单片机和 TMS320C54 系列 DSP 来比较两者在汇编语言上的 不同之处 一 寻址方式的区别一 寻址方式的区别 在汇编语言的指令格式上两者相同 都是标号 指令 操作数 1 操作数 2 操作数 3 注释 但 DSP 汇编语言指令的数据传递是从左至右 单片机是从 右至左 在寻址方式上 DSP 有七种寻址方式 立即数寻址 绝对地址寻址 数据 存储器寻址 程序存储器地址寻址 端口地址寻址 lk 寻址 累加器寻址 直接寻址 间接寻址 单操作数寻址 循环寻址 位倒序寻址 双操作数寻址 存储器映射寄存器寻址 堆栈寻址 单片机有 8 种寻址方式 寄存器寻址 直 接寻址 立即寻址 寄存器间接寻址 基址寄存器加变址寄存器间接寻址 相 对寻址 位寻址 页面寻址 可见两者在寻址方式上大有不同 下边对相同的 寻址方式分别在 DSP 和单片机上的区别 对于 DSP 的立即寻址 指令中必须有一个立即操作数 立即数有两种方式 一种是短立即数 3 5 8 或 9 的数据 另一种是长立即数 16 位的数据 立即数可以包含在单字和双字指令中 单字指令中立即数是 3 5 8 或 9 的数 据 双字指令中立即数是 16 位的数 例 LD 25 A 对于单片机的立即数寻址 立即数寻址方式中操作数包含在指令字节中 操作码后紧跟的是一字节或两字节操作数 立即数 即操作数以指令字节形式 存放在程序存储器中 在编写程序时用 表示 例 MOV A 5AH MOV A 5AH 由对比和例子可以看出 两者在立即数寻址上写法格式不同 用的指令也 不同 相同点是都用 符号表示立即数寻址 对于直接寻址 DSP 在直接寻址方式中 指令代码包含了数据存储地址的 低 7 位 这 7 位作为偏移地址与数据页指针 DP 或者堆栈指针 SP 共同组成了一 个 16 位的数据存储地址 直接寻址用符号或常数来确定偏移值 例 把存储单元 SAMPLE 中的内容加到累加器 B 中去 ADD SAMPLE B 而单片机的直接寻址 直接寻址方式在指令中直接给出操作数所在存储单 元的地址 该地址指出了参与运算或传送的数据所在的字节单元或位的地址 直接寻址方式访问以下三种空间 1 特殊功能寄存器 2 内部数据存储的低 128 字节 3 位地址空间 用于操作的称为直接寻址 用于访问字节的称为直接字节寻址 例 把片内 RAM 中的 5AH 这个地址单元的内容送到累加器 A MOV A 5AHfv 对比这两种相同的寻址方式 可以看出两者最直观的区别是格式的不同 DSP 是将操作数放在存储地址之前 单片机则相反 在 DSP 中直接寻址还可以 利用堆栈指针作为数据存储地址 同时指令也不同 DSP 利用相对应的指令 单片机则一般都是 MOV 作为传送指令 两者对直接寻址都没有特殊的符号表示 对于寄存器间接寻址 DSP 的间接寻址有 4 种类型 单操作数寻址 循环 寻址 位倒序寻址和双操作数寻址 在间接寻址中 64K 16 位数据空间都可 以通过辅助寄存器中的 16 位地址进行访问 C54xx 系列 DSP 有 8 个 16 位辅助 寄存器 AR0 AR7 两个辅助寄存器算数单元可以根据辅助寄存器的内容操作 完成无符号的 16 位数据操作数 可以再一条指令中访问两个数据存储单元 例 ARx 访问后 ARx 中的地址减 1 ARx lk 等 操作语法有很多种 实现的功 能也不相同 单片机的寄存器间接寻址 是把指定寄存器中的内容作为地址 由该地址 所指定的单元内容作为操作数 MCS 51 规定 R0 和 R1 为间接寻址寄存器即地址 指针 可以寻址内部 RAM 低 128 字节地址单元的内容 寄存器间接寻址方式也 可访问外部扩展的数据存储器 用 R0 R1 或 DPTR 作为地址指针 间接寻址用 符号 表示 例 MOV A R0 所以 虽然 DSP 和单片机都有寄存器间接寻址 但是 DSP 的间接寻址要比 单片机复杂的多 DSP 的分类就有四种 每种分类都不相同 DSP 的数据访问 空间要比单片机的大 寄存器也不相同 根本应该是两者所用的硬件配置和需 求程度不一样 两者最直观的差别是表示方式上 书写的格式完全不同 其他 方面 DS 独有的是绝对地址寻址 数据存储器寻址 程序存储器地址寻址 端 口地址寻址 lk 寻址 累加器寻址 存储器映射寄存器寻址 堆栈寻址 单 片机独有的是寄存器寻址 基址寄存器加变址寄存器间接寻址 相对寻址 位 寻址 页面寻址 二 指令的区别二 指令的区别 TMS320C54xx 系列 DSP 的指令共有 129 条 比 MCS 51 的指令多了 18 条 DSP 的指令按照功能分为 4 种基本类型 算数指令 逻辑指令 程序控制指令 存储和装入指令以及循环指令 单片机指令按功能分为 5 种基本类型 数据传 送类指令 算数运算类指令 逻辑运算类指令 位操作类指令 控制转移类指 令 在算数指令上 DSP 的算数指令可以分为加法指令 ADD 减法指令 SUB 乘法指令 MPY 乘加指令 MAC 乘减指令 MAS 双数据或双 精度指令 DADD DSUB 以及特殊操作指令 ABDST FIRS SQDST 其中大 部分指令只需要 1 个指令周期 个别指令需要 2 3 个周期 MCS 51 算数运算指 令包括加 减 乘 除基本四则运算和增量 加 1 减量 减 1 运算 执行 结果将使进位 Cy 辅助进位 AC 溢出标志位 OV 标志或复位 DSP 独有的是程序控制指令 存储和装入指令 循环指令 单片机独有的 是数据传送指令 位操作指令 控制转移类指令 对于算数指令 DSP 的算数运算指令可分为加法指令 ADD 减法指令 SUB 乘法指令 MPY 乘加指令 MAC 乘减指令 MAS 双数据或双精度指令 DADD DSUB 和特殊操作指令 ABDST FIRS SQDST 单片机算数运算指 令包括加 减 乘 除四则运算和增量 加 1 减量 减 1 运算 执行结果 将使进位 Cy 辅助进位 AC 溢出 OV 标志置位或复位 算数 逻辑运 算 ALU 部件仅执行无符号二进制整数的运算 借助溢出标志 可对带符号 数进行 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 位后加到累加器中 类似这样的例子 对于 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 Smen src Smen 与累加器相与 单片机中 ANL A Rn Rn 与累加器相与 两者不但指令不同 数据传送方向也相反 并且 DSP 中还有先移位再相与的功 能 如 AND lk SHFT src dst 长立即数移位后和累加器相与 对于其他相 同功能的指令 两者的表达方式也不同 详细见表 1 表 1 指令与或异或移位 DSPANDORXORROL 单片机ANLORLXRLRL 和与指令一样 上表中两者相同功能的指令除过在表达符号不同外 每条 指令中 DSP 都还可以进行先移位的操作再实现相应功能 可见两者不止在指令的条数上不同 分类功能也相差很大 DSP 可以完成 单片机完成不了的复杂任务 所以指令要比单片机多也是可以想到的 即使指 令要完成的功能相同但在实际的执行上也有差别 三 在伪指令上的区别三 在伪指令上的区别 伪指令主要是完成各个阶段的定义 对符合的定义 对变量的定义 DSP 的 定义等 他是程序中不可缺少的指令 但不存在在实际的可执行文件里 伪指 令在程序编译后 汇编按照位置的设置将程序初始化 当汇编完成之后 伪指 令完成任务 就会被删除 这即是里边 伪 的含义 在 DSP 中伪指令主要完成 以下任务 1 将代码和数据汇编到特定的段 2 为未初始化的变量保留存储空间 3 控制展开列表的形式 4 存储器初始化 5 汇编条件块 6 定义全局变量和局部变量 7 指定汇编器可以获得宏的特定库 8 检查符号调试信息 DSP 的伪指令很多 其下边的分类也很多 对于单片机的伪指令 常用的有 7 条 1 ORG 定位伪指令 2 END 结束汇编伪指令 3 EQU 赋值伪指令 4 DB 定义字节伪指令 5 DW 定义数据伪指令 6 DS 定义存储区伪指令 7 BIT 位定义指令 从上边可以看出在伪指令上 两者的区别很大 功能和所要完成的任务几 乎都不相同 DSP 的伪指令要比单片机的复杂 两者的使用格式也不同 DSP 汇编中伪指令的格式是 伪指令 书写上左下角有点 表达式 表达式 如 bss 变量段 该段为未初始化的变量保留空间 单片机汇编中伪指令的格式 是 标号 伪指令 表达式 四 在程序设计方法上的区别四 在程序设计方法上的区别 在 TMS320C54x 汇编语言源程序中 以 asm 为程序扩展名 程序员用 段 伪指令来组织程序的结构 程序一般由数据段 堆栈段和代码段组成 程序的 基本结构有四种 顺序结构 分支结构 循环结构和子程序结构 单片机的汇 编语言 程序设计的基本方法有 5 种 简单程序的设计 分支程序设计 循环 程序设计 子程序设计 查表程序设计 我们来看两者在汇编中相同方式的程序设计方法有什么不同 简单的程序 设计 顺序结构 在 DSP 中顺序结构是最基本 最简单的程序结构形式 程序中的语句或结 构被连续执行 在采用数据结构编程时要注意选取合理的算法 采用合适的寻 址方式进行指令的选取 存储数据和结果时注意内存空间的分配和寄存器的使 用 在单片机中简单的程序是指程序中没有使用转移类指令的程序段 MCS 51 单片机执行这类程序时只需要按照指令存储位置的先后顺序依次执行 中间不 会有任何分支程序 程序中大量使用数据传送指令 程序简单 两者在写的方 法上差距并不大 主要区别是之间讲过的指令使用格式 表达式的操作顺序 分支程序设计 DSP 的程序分支主要是靠条件转移指令实现的 TMS320C54x 有丰富的程序控制和转移指令 分支转移指令如 B BACC BC 等 通过改变 PC 来改变程序的流向 在采用分支结构时应注意正确选择条件运算符 正确选择相应指令 每个分支中要有完整的终结点 对于多分支程序要检查程 序的正确与否 与 DSP 汇编语言的分支程序设计相比 单片机的分支程序设计 特点也是含有转移指令 MCS 51 的条件转移指令共有 13 条 分为累加器 A 判 零条件转移 比较条件转移 减 1 条件转移和控制条件转移等 4 类 两者的设 计方法也大致相同 不同之处在于转移指令和其他指令的选取和使用 循环程序设计 DSP 的循环结构程序设计主要用于某些需要进行重复的操 作 简化了程序并且节约内存 其步骤分为 循环初始状态 循环体和循环控 制条件 1 循环初始状态主要指设置循环次数的初始值 和其他为能使循环体正常 工作而设置的初始状态等 2 循环体是指循环操作部分 包括循环的工作部分及修改部分 循环的工 作部分是实现程序功能的主要程序段 循环的修改部分是指当程序循环 执行时 对一些参数的有规律修正 循环控制部分是循环程序的设计关键 每个循环过程必须选择一个控制循 环程序运行和结束的条件 单片机的汇编语言循环程序设计特点是程序中含有可以重复执行的程序段 步骤和 DSP 的相同 都是经过循环初始化 循环处理 循环控制 循环结束设 计阶段 举一个简单的例子 对于 DSP 要用汇编实现下边的计算式 5 1 i i yx 汇编程序为 bss x 5 bss y 1

温馨提示

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

评论

0/150

提交评论