收藏 分享(赏)

DSP应用技术90750.ppt

上传人:dzzj200808 文档编号:5582924 上传时间:2019-03-08 格式:PPT 页数:34 大小:1.64MB
下载 相关 举报
DSP应用技术90750.ppt_第1页
第1页 / 共34页
DSP应用技术90750.ppt_第2页
第2页 / 共34页
DSP应用技术90750.ppt_第3页
第3页 / 共34页
DSP应用技术90750.ppt_第4页
第4页 / 共34页
DSP应用技术90750.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序,第六章 寻址方式和汇编指令,第6章 寻址方式和汇编指令, 汇编指令是可执行指令,每条指令对应一条机器码,用以控制处理器中的执行部件进行各种操作。 TMS320F281X系列的汇编指令有150多条。 它们支持各种信号处理运算,同时也提供了应用中所需要的多级处理和过程控制功能。 寻址方式是指寻找指令中操作数地址的方式。,6 . 1 寻址方式,第6章 寻址方式和汇编指令,TMS320C28x指令集采用7种寻址方式: 直接寻址方式 堆栈寻址方式 间接寻址方式 寄存器寻址方式 数据/程序/IO空间立即寻址方式 程序空间间接寻址 字节寻址方式,

2、6 . 1 寻址方式,第6章 寻址方式和汇编指令,6 . 1 寻址方式,F2812的大多数指令利用操作码中的位字段来选择寻址方式和对寻址方式进行修改在F2812指令系统中,这个位字段用于以下寻址方式: (1)loc16。为位数据访问选择直接堆栈间接寄存器寻址方式。loc16 表示loc16这种寻址方式对应的16位数据。 (2)loc32。为位数据访问选择直接堆栈间接寄存器寻址方式。 loc32 表示loc32这种寻址方式对应的32位数据。在直接寻址方式下,loc16/loc32指的是一个用标号表示的地址,这个地址由16位的DP寄存器和操作码内8位字段的6位或7位偏移量共同决定。loc16/lo

3、c32表示这个地址对应的16/32位数据。 以上7种寻址方式都与“loc16/loc32”组合起来使用。,第6章 寻址方式和汇编指令,5,第6章 寻址方式和汇编指令,在间接寻址方式下,loc16/loc32表示放在辅助寄存器 (XAR0XAR7)中的一个地址,loc16/loc32表示这个地址对应的16/32位数据。在堆栈寻址方式下,loc16/loc32表示堆栈指针指向的一个堆栈单元,loc16/loc32表示这个单元内的16/32位数据。在寄存寻址方式下, loc16/loc32表示一个16位或32位寄存器(如ACC、P、XT、AH等), loc16/loc32表示这些寄存器内的16/32

4、位数据。指令操作码中对应的8位字段的具体含义如表6-1-1所示。,由于F2812提供了多种寻址方式,因此用寻址方式选择位(AMODE)来选择位字段(loc16/loc32)的解码。该位属于状态寄存器ST1。寻址方式可以大致归类如下: AMODE该方式是复位后的默认方式,也是F2812的C/C+编译器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针偏移量是位(在C2xLP CPU中是位),并且不支持所有的间接寻址方式。 AMODE该方式包括的寻址方式完全与C2xLP 器件的寻址方式兼容。数据页指针的偏移量是位并支持所有C2xLP 支持的间接寻址方式。 对与loc16或者l

5、oc32字段,其可用的寻址方式总结如P202所示,寻址方式选择位,6 . 1 寻址方式,第6章 寻址方式和汇编指令,6 . 1 寻址方式,在F2812间接寻址方式中,使用哪个辅助寄存器指针在指令中并不被明确指出。而在C2xLP的间接寻址方式中,位长度的辅助寄存器指针被用来选择当前使用哪个辅助寄存器以及下次操作将使用哪个辅助寄存器。,第6章 寻址方式和汇编指令,8,第6章 寻址方式和汇编指令,汇编器/编译器对AMODE位的追踪,编译器总是假定AMODE=0,所以它只使用对AMODE=0有效的寻址模式。而汇编器可以通过设置命令行选项实现默认AMODE=0或者AMODE=1。 v28 ;假定AMOD

6、E=0(C28x寻址方式) v28 m20 ;假定AMODE=1(与C2xLP全兼容的寻址方式) 在文件中使用内嵌伪指令 . c28_amode ;告诉汇编器后面的代码段都假定AMODE=0(C28x寻址方式) . lp_amode ;告诉汇编器后面的代码段都假定AMODE=1 (与C2xLP全兼容的 寻址方式), 该寻址方式,16位的DP寄存器被当作一个固定的页指针,在指令中提供位或者位的偏移量,将这些偏移量与DP寄存器中的值相连接构成完整的地址当访问固定寻址的数据结构(比如外围寄存器和C/C+中的全局或静态变量) 时是一种很有效的方法,直接寻址方式,6 . 1 寻址方式,第6章 寻址方式和

7、汇编指令,10,11,比如: 访问数据空间地址0000105DH,00 0000 0001 0000 0101 1101,DP,OFFSET,0041H,1DH,6bit,16bit,AMODE=0:,12,1. 设置数据页面 将当前数据页面载入DP。,使用直接寻址方式访问数据存储器时,必须首先对DP进行设置以确定数据页面,然后再书写进行某种操作的指令,该指令的操作数将确定数据页面内部的特定偏移单元。其步骤如下:,MOVW DP,#0041H ;初始化数据页面指针,2. 设置偏移量 给出6位偏移量作为指令的一个操作数。,ADD AL,1Dh ; AL与当前数据页面内偏移量; 1DH单元的内容相

8、加,结果;存入到AL中,13,00 0000 0001 0000 0101 1101,DP高15位,OFFSET,DP值为 0041H或0040H,5DH,7bit,15bit,AMODE=1:,14,2. 设置数据页面 将当前数据页面载入DP。,SETC AMODE ;令AMODE=1 .lp_amode ;通知编译器AMODE=1,3. 设置偏移量 给出7位偏移量作为指令的一个操作数。,ADD AL,5Dh ; AL与当前数据页面内偏移量; 5DH单元的内容相加,结果;存入到AL中,1. 选择兼容选址模式,MOVW DP,#0041H ;初始化数据页面指针,15,C24X代码:,0001

9、0000 0101 1101,DP,OFFSET,20H,5DH,7bit,9bit,16,1. 设置数据页面 将当前数据页面载入DP。,LDP #20H ;初始化数据页面指针,2. 设置偏移量 给出7位偏移量作为指令的一个操作数。,ADD 5Dh ; 累加器与当前数据页面内偏移量; 5DH单元的内容相加,结果存入到; 累加器中,17,第6章 寻址方式和汇编指令,堆栈寻址方式, SP(堆栈指针):在该方式下,位的SP指针被用于访问软件堆栈的信息F2812的堆栈从存储器的低地址变化到高地址,SP指针总是指向下一个空单元当需要访问堆栈中的数据时,由程序提供位偏移量,SP的值减去这位的偏移量就是被访

10、问的数据的地址,然后修改堆栈指针SP (P205 表6-1-3),XAR0到XAR7(辅助寄存器指针):在这种寻址方式下,位的XARn寄存器被当作一般性数据指针可以通过指令实现对辅助寄存器XARn加,(操作前后)减和变址操作,6 . 1 寻址方式,间接寻址方式,在该寻址方式下,寄存器可以是访问的源操作数,也可以是目标操作数,这样在F2812中就能实现寄存器到寄存器的操作这一方式包括对32位和16位寄存器的寻址。,寄存器寻址方式,第6章 寻址方式和汇编指令,在该寻址方式下,存储器操作的地址就存在于指令中。,6 . 1 寻址方式,数据/程序/IO空间立即寻址方式,程序空间间接寻址方式,某些指令可以

11、通过使用间接指针对程序空间中的存储器进行访问。因为F2812 CPU的存储器是标准一致的,这就使在一个机器周期中进行两次读操作成为可能。,字节寻址方式,第6章 寻址方式和汇编指令,6 . 1 寻址方式,32位操作的定位,由于使用定位于偶数地址的32位数据的最低有效字,所有针对存储器的32位读写操作都被定位于存储器接口的偶数地址边界.地址生成器的输出不需要强制定位,因此指针值保持原值。例如:MOVB AR0,#5 ;MOVL *AR0,ACC ;用户在生成不定位于偶数边界的地址时必须考虑上述内容。32位操作数以下列顺序存放:低位数,015;后续的是高位数,1631;接着是最高的16位地址增量(低

12、位在前的二进制数据格式)。,第6章 寻址方式和汇编指令,汇编语言包括:汇编指令、伪指令和宏指令, 汇编指令 即是指令系统,其在汇编时产生一一对应的目标代码。 伪指令 仅在汇编和连接时提供控制信息和数据,并不产生目标代码。 宏指令 用户创建的“指令”,在汇编时将其展开并汇编为对应的目标代码。,第6章 寻址方式和汇编指令,6 .2 汇编语言指令集,6 .2 汇编语言指令集,指令集概述,28x 指令按功能可分为17 类,共 302 条指令: 寄存器XARn(AR0AR7)的操作 14 条 DP寄存器操作 3 条 SP寄存器操作 34 条 AX寄存器操作(AH,AL) 38 条 16位ACC寄存器操作

13、 26 条 32位ACC寄存器操作 41 条 64位ACC: P寄存器操作 9 条 P或XT寄存器的操作(P,PH,PL,XT,T,TL) 21 条,第6章 寻址方式和汇编指令,指令集概述, 1616乘法操作 20 条 3232乘法操作 13 条 直接存储器操作 17 条 IO空间操作 3 条 程序空间操作 5 条 跳转/调用/返回操作 31 条 中断寄存器操作 9 条 状态寄存器操作(ST0,ST1) 26 条 其他操作 10 条,6 .2 汇编语言指令集,第6章 寻址方式和汇编指令,一些符号描述,6 .2 汇编语言指令集,第6章 寻址方式和汇编指令,一些符号描述,6 .2 汇编语言指令集,

14、第6章 寻址方式和汇编指令,一些符号描述,第6章 寻址方式和汇编指令,一些符号描述,第6章 寻址方式和汇编指令,ARn n为数值07,ARn指定下次的辅助寄存器。 ind 选择以下07中符号之一:*,*+,*-,*0+,*0-,*BR0+,*BR0-。 # 立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为一个立即数。 右移 当使用C28x语法时,64字的数据页通过“”符号来表示。以帮助程序员理解当前正在使用哪种寻址模式。 当使用C28x语法时,128字的数据页通过“”符号来表示。 loc16 16位寻址方式指定地址单元的内容 loc32 32位寻址方式指定地址单元的内容 #16bitS

15、ingned 16位有符号立即数,指令句法描述,6 .2 汇编语言指令集,第6章 寻址方式和汇编指令,指令集,6 .2 汇编语言指令集, 按照字母的顺序对TMS320F2812的指令进行了详细的介绍 分析了各种可用的指令格式以及指令的功能和执行过程、对状态位的影响等,第6章 寻址方式和汇编指令,6 . 3 汇编源程序,汇编语言源程序由源语句(汇编指令、伪指令、宏指令)组成。,源语句语法:,标号 : 助记符 操作数1,操作数2,;注释,标号域 助记符域 操作数域 注释域,注:“ ”表示该项可缺省。,例61,SYM1 set 2 ;符号SYM1等于2,begin : LDP SYM1 ;将2装入D

16、P, word 016H ;初始化一个字为16H,第6章 寻址方式和汇编指令, 标号域 标号域是任选域,可有可无。若使用必须从源语句的第一列开始书写。标号包含132个字母、数字、字符,可识别符号的大小写,且第一个字符不能是数字。标号可以后随冒号。如果不使用标号,则第一个字必须是空格或分号或星号。 助记符域 是关键部分,不能缺省,它表示本指令的操作类型。助记符不能从源语句的第一列开始。它包括下列操作码之一: 汇编指令(例如ABS, MPY, SPH); 伪指令(例如.data, .list, .set); 宏指令(例如.macro, .mexit)。 操作数域 是跟在助记符域后面的操作数列表,可

17、缺省。如果多于两个操作数,则用逗号隔开。它可以是常数、符号和表达式。 注释域 可以从源语句行的任一列开始并直至本行的末尾,即仅包括注释的源语句是有效的。如果它从第一列开始则可以用分号或星号开始;在行的其他地方开始的注释,必须以分号开始。,上述各个域必须用一个或多个空格分开。,6 . 3 汇编源程序,第6章 寻址方式和汇编指令,常数、字符串和符号, 常数 支持六类类型的常数。 二进制整数 八进制整数 十进制整数 十六进制整数 字符常数:包含在单引号中的一个或两个字符的串。每个字符表示为8位ASCII码,如a定义字符a,并在内部用61H表示。 汇编时间常数:用.set伪指令对符号进行赋值,赋值的内

18、容不同,汇编时符号所 表示的含义也就不同。,6 . 3 汇编源程序,第6章 寻址方式和汇编指令, 字符串 字符串是包含在双引号内的一串字符,双引号是字符串的一 部分。字符串用于下列场合: . copy“filename” 中的文件名; . sect“section name” 中的段名; . byte“charstring” 中数据初始化伪指令; . string 伪指令的操作数。, 符号 符号被用做标号、常数及替代符号。符号名最多可由32个字母和数字混合组成(AZ, az, 09,$和_)。符号的第一个字符不能是数字,符号内不能有空格。用户定义的符号分大小写。,字符常数代表一个单独的整数值,而字符串是字符的列表。,常数、字符串和符号,6 . 3 汇编源程序,第6章 寻址方式和汇编指令,表达式由运算符、常数和符号组成。 有效表达式值的范围是-32768+32767。,表达式与运算符,注:(1)同组运算符的优先级以先为优。(2)第1组运算符从右到左求值,其他各组从左到右求值。,6 . 3 汇编源程序,第6章 寻址方式和汇编指令,

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

当前位置:首页 > 生活休闲 > 社会民生

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


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

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

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