第4章 TMS320C54x汇编语言程序设计PPT课件

合集下载

第4章TMS320C54XDSP指令系统10PPT课件

第4章TMS320C54XDSP指令系统10PPT课件
56
57
中断指令同样可以改变程序指针PC的值,使程序从一个地址跳转 到另一个地址执行。但与调用指令一样,DSP在执行完中断服务程序 后要返回发生中断的地方继续执行原来的程序。当发生中断时,DSP 会置INTM为1,屏蔽所有可屏蔽中断,并在中断标志寄存器IFR中设 置相应的中断标志。
INTR指令使ST1的INTM位(bit11)置1关中断
14
算术运算类指令
’c54x的算术运算指令丰富,且运算能力强大。算术运 算指令用于完成加减乘除等算术运算。按照功能可将算术运算 类指令分为7组:
(1)加法指令(Add) (2)减法指令(Subtract) (3)乘法指令(Multiply) (4)乘加指令(Multiply-accumulate) (5)乘减指令(Multiply-subtract) (6)双字指令(32比特操作数) (7)专用指令(Application-specific)
25
举例:应用 SUBC DATA, A 计算( 8/2)
................................
stm #1001h , AR3 stm #1002h , AR4 ld #20h , DP st #0002h , 00h ld #0008h , A
rpt #15 subc 00h, A stl A,*AR3
;将相减的结果(高16位) ;存入1063地址单元
23
24
利用SUBC实现除法运算
在‘C54X中没有提供专门的除法指令, 一般有两种方法来完成除法。
一种是用乘法来代替,除以某个数相当于乘以其倒 数,所以先求出其倒数,然后相乘。这种方法适用于 除以一个常数。
另一种方法是使用SUBC(条件移位减法)指令, 重复16次减法操作完成一次除法运算。

第4章 TMS320C54x应用程序开发过程[DSP技术与应用实例(第3版)]课件

第4章  TMS320C54x应用程序开发过程[DSP技术与应用实例(第3版)]课件

常用的汇编命令:
汇编命令
作用
举例
.title
紧跟其后的是用双引号括起的源程序名
.title "example.asm"
.end
结束汇编命令,汇编程序将忽略此后的任何源 语句,所以它应是程序的最后语句
放在汇编语言源程序的最后
.text
紧跟其后的是汇编语言程序正文
.text段是源程序正文。经汇编后,紧随.text后的是可执 行程序代码
计算顺序
从右到左 从左到右 从左到右 从左到右 从左到右 从左到右 从左到右 从左到右 从左到右
2.表达式上溢和下溢
在汇编时,执行算术操作后,汇编器检查上溢和下溢的条件。 一旦上溢和下溢出现,它就发出截断了的警告。汇编器不检查乘法的 上溢和下溢。
3.合格的表达
某些汇编器要求合格的表达式作为操作数。合格的表达式是指表 达式中的符号或汇编时间常数在遇到它们之前都是已经定义了的, 合格的表达式的计算必须是绝对的。
链接器将输入段组合成一个可执行的目标模块
程序存储器
file1 .text file2 .text file1 .data file2 .data file table_1 file table_2
file2 FFT
没有使用
(mnemonic to algebraic translator utility) (6)建库工具(library-build utility) (7)十六进制转换工具(hex conversion utility )
(8)绝对地址列表器(absolute lister) (9)交叉引用列表器(cross-reference lister)
.def
在此模块中定义,可为别的模块引用

第4章 汇编语言程序开发工具PPT课件

第4章 汇编语言程序开发工具PPT课件

第4章 汇编语言程序开发工具
4.1 TMS320C54x软件开发过程
’C54x的应用软件开发主要完成以下工作: (1) 选择编程语言编写源程序
’C54x提供2种编程语言,即汇编语言和C/C++语言。 对于完成一般功能的代码,这两种语言都可使用,但对 于一些运算量很大的关键代码,最好采用汇编语言来完成, 以提高程序的运算效率。 (2) 选择开发工具和环境 ’C54x提供了两种开发环境。即非集成开发环境和集成 开发环境CCS。
建库实用程序:用来建立用户自己使用的、并用 C/C++语言编写的支持运行的库函数。
十六进制转换程序:可以很方便地将COFF目标 文件转换成TI、Intel、Motorola等公司的目标文件 格式。
2020/8/10
DSP原理及应用
6
第4章 汇编语言程序开发工具
2. ’C54x的开发工具 (2)代码调试工具:
DSP原理及应用
10
第4章 汇编语言程序开发工具
4.2 汇编语言程序的编辑、汇编和链接过程
3. 链接
所谓链接,就是利用’C54x的链接器LNK500 ,根据链接器命令文件(.cmd)对已汇编过的一个或 多个目标文件(.obj)进行链接,生成输出文件 (.out)和存储器映像文件(.map) 。
常用的汇编器命令:
HEX500
2020/8/10
DSP原理及应用
8
第4章 汇编语言程序开发工具
4.2 汇编语言程序的编辑、汇编和链接过程
1. 编辑 利用各种文本编辑器,如笔记本、WORD、
EDIT和TC等,可编写汇编语言源程序。
2. 汇编 当汇编语言源程序编写好以后,可利用’C54x

第4章TMS320C54x汇编指令系统

第4章TMS320C54x汇编指令系统

表4-8 与逻辑运算指令
表4-9 或逻辑运算指令
表4-10 异或逻辑运算指令
表4-11 移位逻辑运算指令
表4-12 测试指令 返回本节
4.2.3 程序控制指令
程序控制指令包括分支转移指令、子程序调用指 令、中断指令、返回指令、重复指令、堆栈操作 指令及混合程序控制指令,分别如表4-13、表414、表4-15、表4-16、表4-17、表4-18及表4-19 所示。
表4-2 加法指令
表4-3 减法指令
表4-4 乘法指令
表4-5 乘加和乘减指令
表4-6 双精度(32位操作数)指令
表4-7 专用指令 返回本节
4.2.2 逻辑运算指令
逻辑指令包括与、或、异或(按位)、移位和测 试指令,分别如表4-8、表4-9、表4-10、表4-11、 表4-12所示。
表4-13 分支转移指令
表4-14 子程序调用指令
表4-15 中断指令
表4-16 返回指令
表4-17 Байду номын сангаас复指令
表4-18 堆栈操作指令
表4-19 混合程序控制指令 返回本节
4.2.4 加载和存储指令
加载和存储指令包括加载指令、存储指令、条件 存储指令、并行加载和存储指令、并行加载和乘 法指令、并行存储和加/减法指令、混合加载和存 储指令,分别如表4-20、表4-21、表4-22、表423、表4-24、表4-25、表4-26及表4-27所示。加 载指令是将存储器内容或立即数赋给目的寄存器; 存储指令是把源操作数或立即数存入存储器或寄 存器。
4.1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
4.2 指令系统
4.2.1 算术运算指令 4.2.2 逻辑运算指令 4.2.3 程序控制指令 4.2.4 加载和存储指令

第4章汇编语言程序设计知识PPT课件

第4章汇编语言程序设计知识PPT课件


(1500H)=72H, (1501H)=34H, (1502H)=00H,
(1503H)=8AH,(1504H)=00H, (1505H)=10H。
(1506H)=00H,(1507H)=48H (H的ASCII值)
第24页/共61页
§4.2 伪指令
7、DS 定义存储空间命 令
格式:DS 表达式 功能:在汇编时,从指定地址开始保留DS之后表达式的值所
第15页/共61页
§4.2 伪指令
1、ORG 汇编起始地址命令
格式:ORG 16位地址
功能:规定该伪指令后面程序的汇编地址,即汇编后生成目
标程序存放的起始地址。
例如:
ORG 2000H
START:MOV A,#64H

规定了START的地址是2000H,又规定了汇编后的第一条指令 码从2000H开始存放。
§4.2 伪指令
例如:
ORG 2000H DB 0A3H
LIST:DB 26H,03H STR: DB ‘ABC’

A3H 26H 03H 41H 42H 43H
2000H 2001H 2002H 2003H 2004H 2005H
经汇编后:(2000H)=A3H, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H,
第31页/共61页
§4.4 汇编语言程序的基本结构
1、顺序程序 2、分支程序 3、循环程序
第32页/共61页
§4.4 汇编语言程序的基本结构
1、顺序程序
顺序程序是最简单的程序结构,也称直线程序。 程序按顺序一条一条地执行指令。这类程序是所有复杂程序的基础。 要写出高质量的程序还是需要掌握一定的技巧,需要熟悉指令系统,正确地选择 指令,最大限度地优化程序。

第4章 TMS320C54x汇编语言程序设计PPT课件

第4章  TMS320C54x汇编语言程序设计PPT课件

2020/8/17
6
⑤ 程序中注释是可选项。如果注释在第一列开始时,前面必 须标上星号“*”或分号“;”,在其他列开始的注释前面必须 以分号“;”开头;
⑥ 如果源程序很长,需要书写若干行,可以在前一行用反斜 杠字符(\)结束,余下部分接着在下一行继续书写。
2020/8/17
7
1.标号 所有汇编指令和大多数汇编伪指令都可以选用标号,供本程序或 其它程序调用。使用标号时应注意: ① 标号必须从语句的第1列写起,标号后可附加冒号“:” ;
2020/8/17
20
【例】 有效定义的表达式。
label1
label2 X goodsym1 goodsym3 goodsym4
.data .word .word .word .word .set .set .set .set
0 1 2 3 50h l00h + X label1 label2-label1
2020/8/17
23
4.2 堆栈的使用方法
当程序调用中断服务程序或子程序时,需要将程 序计数器PC的值和一些重要的寄存器值进行压栈保 护,以便程序返回时能从间断处继续执行。
’C54x提供一个用16位堆栈指针SP寻址的软件 堆栈。
当向堆栈中压入数据时,堆栈是从高地址向低地 址方向填入,堆栈指针SP先减1,然后将数据压入堆 栈。
2020/8/17
10
指令:
❖算术运算指令 ❖逻辑运算指令 ❖程序控制指令 ❖装入和存储指令
2020/8/17
11
伪指令
伪指令为程序提供数据、控制汇编过程。 伪指令在汇编时,不产生目标代码。
2020/8/17
12
3. 操作数
操作数是指指令中参与操作的数值或汇编伪指令定义的内容, 紧跟在助记符的后面,由一个或多个空格分开。

第4章 TMS320C54x汇编指令系统

第4章 TMS320C54x汇编指令系统

(abc)
小括号表示一个寄存器或存储单元的内容
xy
x值被传送到y(寄存器或存储单元)中
r(n-m)
表示寄存器或存储器r的第n~m位
<<nn
移位nn位,nn为正时左移,为负时右移
||
表示两指令并行操作
\\
循环左移
//
循环右移
X
X取反
|X|
X取绝对值
AAH
AA代表一个十六进制数
11
指令系统中的符号、缩写、记号与运算符
1/1
4 ADD Smem [,SHIFT], src[,dst] dst=src+Smem<< SHIFT
操作数移位后加至累加器
2/2
5 ADD Xmem, SHFT, src
src=src+Xmem<< SHFT
操作数移位后加至累加器
1/1
6 ADD Xmem, Ymem, dst
dst=Xmem<<16+Ymem<<16
说明
字数/指 令周期数
1 ADD Smem, src
src=src+Smem
操作数加至累加器
1/1
2 ADD Smem, TS, src
src=src+Smem<<TS
操作数移位后加至累加器
1/1
3 ADD Smem, 16, src [, dst]
dst=src+Smem<<16
操作数左移16位加至累加器
8 5位移位数(-16≤SHIFT≤15)
指令系统中的符号、缩写、记号与运算符
符号
含义
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/8/17
6
⑤ 程序中注释是可选项。如果注释在第一列开始时,前面必 须标上星号“*”或分号“;”,在其他列开始的注释前面必须 以分号“;”开头;
⑥ 如果源程序很长,需要书写若干行,可以在前一行用反斜 杠字符(\)结束,余下部分接着在下一行继续书写。
2020/8/17
7
1.标号 所有汇编指令和大多数汇编伪指令都可以选用标号,供本程序或 其它程序调用。使用标号时应注意: ① 标号必须从语句的第1列写起,标号后可附加冒号“:” ;
2020/8/17
4
助记符指令源语句的每一行通常包含4个部分:标号区、 助记符区、操作数区和注释区。
助记符指令语法格式:
[标号][:] 助记符 [操作数]
【例】 助记符指令源语句举例。
[; 注释]
DIANZI Begin:
标号
.set 1
LD # DIANZI ,AR1
助记符
操作数
; 符号DIANZI =1
使用“#”号作为前缀,汇编器将操作数作为立即数处理。即使 操作数是寄存器或地址,也将作为立即数。
如果操作数是地址,汇编器将把地址处理为一个数值,而不 使用地址的内容。 例如: Label: ADD #99, B ;99+(B)→B
操作数# 99是一个立即数。
2020/8/17
14
② 用“*”作前缀
2020/8/17
16
4.注释 用来说明指令功能的文字,便于用户阅读。 注释是任选项; 注释可单独一行或数行; 注释可位于句首或句尾,位于句首时,以“*”或“;”开 始,位于句尾时,以分号“;”开始。 例如: 11 00000 .bss sym, ; 保留空间于.bss
************************************** * 改变段,允许第五个‘mylab’定义 * **************************************
TMS320C54x汇编语言源程序语句包含汇编语言指令、汇 编伪指令和注释。程序的编写必须符合一定的格式,以便汇编 器将源文件转换成机器语言的目标文件。
汇编语言源程序的格式; 各种常数; 符号; 字符串和表达式的规定。
2020/8/17
3
4.1.1 汇编语言源程序格式
汇编语言程序以 .asm
为扩展名,可以用任意的编辑器编写源文件。 一条语句占源程序的一行,长度可以是源文件编辑器格式允许 的长度,但汇编器每行最多读200个字符。因此,语句的执行 部分必须限制在200个字符以内。
在使用标号时,标号的值是指令在程序存储器中的存放地址, 或者定义的数据在存储器中的存放首地址。
例如,若使用.word伪指令初始化几个字,则标号将指到第一 个字。
2020/8/17
9Hale Waihona Puke 2.助记符 助记符用来表示指令所完成的操作,可以是汇编语言指令、汇 编伪指令、宏伪指令。 助记符指令:一般用大写,不能从第一列开始 ; 汇编伪指令:用来为程序提供数据和控制汇编进程。以英文句 号“.”开始,汇编伪指令用小写字母; 宏伪指令:用来定义一段程序,以便宏调用来调用这段程序。 以英文句号“.”开始,汇编宏指令用小写字母; 宏调用:用来调用由宏伪指令定义的程序段。
2020/8/17
10
指令:
❖算术运算指令 ❖逻辑运算指令 ❖程序控制指令 ❖装入和存储指令
2020/8/17
11
伪指令
伪指令为程序提供数据、控制汇编过程。 伪指令在汇编时,不产生目标代码。
2020/8/17
12
3. 操作数
操作数是指指令中参与操作的数值或汇编伪指令定义的内容, 紧跟在助记符的后面,由一个或多个空格分开。
例如:Label: LD * AR3, B 操作数*AR3指定一个间接地址。该指令将引导汇编器找到寄 存器AR3的内容作为地址,然后将该地址中的内容装入指定的 累加器B中。
2020/8/17
15
③用“@”作前缀
使用“@”符号作为前缀,汇编器将操作数作为直接地址,即 操作数由直接地址码赋值。 例如:Label: LD @ x, A 只要DP=0,将直接地址x中的内容装入指定的累加器A中。
操作数之间必须用逗号“,”分隔;
操作数可以是常数、符号或表达式;
操作数中的常数、符号或表达式可用来作为地址、立 即数或间接地址;
作为操作数的前缀有三种情况:
使用“#”符号作为操作数的前缀;
使用“*”符号作为操作数的前缀;
使用“@” 符号作为操作数的前缀。
2020/8/17
13
① 用“#” 作前缀
第4章 tms320c54X应用程序开发 ——汇编语言程序设计
汇编语言的基本概念 汇编语言程序设计基础 程序基本结构
2020/8/17
1
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
4.1 汇编语言的基本概念
; 将1加载到AR1
注释
2020/8/17
5
语句的书写规则: ① 所有语句必须以标号、或空格、或星号’*’或分号’;’ 开始;
② 标号是可选项,若使用标号,则标号必须从第一列开始,助 记符不能从第一列开始;
③ 所有包含有汇编伪指令的语句必须在一行完成指定;
④ 各部分之间必须用空格分开,Tab字符与空格等效;
指令前的标号后加“:”号, 伪指令前的标号不加“:”号; 例如: DATE1 .set 35
Begin: LD #DATE1, B
2020/8/17
8
② 标号为任选项,若不使用标号,则语句的第一列必须是空 格、星号或分号;
③ 标号是由字母、数字以及下划线和美元符号等组成,最多 可达32个字符;
④ 标号分大小写,且第一个字符不能是数字。
是唯一的。 标号分大小写。例如:ABC,Abc,abc是3个不同的符号。在调用 汇编器时使用-c选项,可以不分大小写。
2020/8/17
17
4.1.2 汇编语言中的符号
汇编程序中的符号用于标号、常数和替代字符。
符号名最多可长达200个字符; 由字母、数字以及下划线和美元符号(A~Z,a~z,0~9,_
和$)等组成; 在符号中,第1位不能是数字,并且符号中不能含空格。
1. 标号
作为标号的符号代表在程序中对应位置的符号地址。 通常,标号是局部变量,在一个文件中局部使用的标号必须
相关文档
最新文档