版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章TMS320C54x汇编语言程序设计,4.1 TMS 320 c 54 x汇编语言程序设计的基本概念,4.2 TMS 320 c 54 x汇编语言程序设计的基本方法,4.3 TMS 320 c 54 x汇编语言程序设计的编辑、汇编和链接过程,4.4汇编程序4.5链接器4.6汇编程序实例,1汇编语言源程序的语法格式和要点,每行由4个部分组成。请注意,中的内容是可选部分,供本程序或其他程序调用。标签是可选的,后面可以跟冒号“:”。4.1 TMS 320 C 54X汇编语言的基本概念如下:1 .标签必须从列开始;2.标签最多可包含32个字符,可以是az、AZ、0 9、_、和$,但标签的第一个字
2、符不能是数字。3.引用标签时,标签的大小写必须一致。4.标签的值是程序段计数器SPC的值。5.如果没有使用标签,第一个字母必须是空格、分号或星号(*)。要点,建议,标签:空间助记符空间操作数空间;注释,可以是助记指令、汇编指令、宏指令和宏调用命令。1.助记指令,通常大写;2.汇编命令和宏命令,以句号开始。通常是小写的。关键点,标签:空间助记符空间操作数空间;注:1 .指令中的操作数或汇编命令中定义的内容;2.操作数必须用逗号分隔。1。从分号“;”开始2。它可以放在指令或汇编命令之后,也可以放在单独的一行或多行上。要点,2个汇编语言源程序的数据类型,二进制:如1110001b或1111001B;
3、八进制:226或572;十进制:1234或1234或-1234(默认)十六进制:0A40h或0A40H或0 xA40浮点数:1.623e-23(仅在C语言程序中可用,但在汇编程序中不可用)字符:D,每个字符由8位ASCII码表示;字符串:“这是一个字符串”,符号用作标签、常量和替代符号。符号名称可以是字母(az,AZ)、数字(09)加$或下划线(_)最多200个字符。第一个字符不能是数字,符号之间不能有空格。符号区分大小写,例如:Abc。3汇编语言源程序符号,4表达式1)影响表达式运算顺序的三个主要因素是圆括号、优先级和同级运算顺序。括号中的表达式首先起作用,不能被或()替换。TMS320C5
4、4x汇编程序的优先级与C语言相似,高优先级的操作先执行。表4-1显示了表达式中可用的运算符和优先级。表4-1运算符和表达式的优先级;2)表达式的合法性当使用符号时,汇编程序对表达式中符号的使用有一些限制。由于符号的不同属性(即不同的定义),该表述存在合法性问题。符号根据其属性可分为三种类型:外部符号、可重定位符号和绝对符号。外部符号是在一个模块中定义并被另一个模块引用的符号。(一般定义为。全局)在汇编和执行阶段,可重定位符号在符号值和符号地址上是不同的,相同的是绝对符号。在包含乘法和除法的表达式中只能使用绝对符号(它们的值不能更改)。表达式中不能使用未定义的符号。表4-2表达式符号的合法性,4
5、.1.3 TMS320C54x伪指令TMS320C54x伪指令为程序提供数据并控制装配过程。具体任务如下:(1)将数据和代码组装成特定的段。(2)为未初始化的变量保留存储空间。(3)控制扩展列表的形式。(4)初始化存储器。(5)装配条件块。(6)定义全局变量。(7)指定汇编程序可以从中获取宏的特定库。(8)检查符号调试信息。表4-3经常使用伪指令,定义一个段有五个伪指令:bss(未初始化的段)。数据(初始化的段)。部分(初始化的段)。文本(初始化的段)。usect(未初始化的段),1)未初始化的段。bss和。使用ct命令建立未初始化的段。那个。bss伪指令在。未初始化变量的bss部分;那个。u
6、sect指令在未初始化的自定义段中保留空间。那个。usect伪指令类似于。但是它可以将保留空间与。bss段。这两个命令的语法如下:bss符号,单词编号符号。使用“段名”,字数,2)初始化段。文本。数据和。sect命令创建初始化段。这三个命令的语法如下:文本段落起点。数据段起点。章节段落名称、段落起点和。文本后面是汇编语言程序的主体。组装后。文本是可执行的程序代码,通常存储在程序存储区。之后。数据是初始化数据,它有两种数据形式:int和word。定义的数据可以通过命令文件存储在程序或数据存储器中。sect创建包含代码和数据的自定义段,通常用于定义中断向量表。2个常量初始化指令(1)。贝斯和。空间
7、。汇编程序用0填充这些保留位,并将位数乘以16以实现保留字。标签与一起使用时。空格,标签指向保留位的第一个字;标签与一起使用时。bes,标签指向保留位的最后一个字。(2)。字段.该指令可以将多个字段打包成一个字,并且汇编程序在一个字被填充之前不会增加SPC值。(3)。漂浮着。xfloat。这两条指令将32位浮点数存储在当前段的连续字中,并且首先存储高位字。那个。浮点伪指令可以根据长字(偶数地址)边界自动排列。xfloat不能。(4)。漫长而。xlong。这两个指令在当前段的连续字中存储32位,先存储高位字。那个。长伪指令可以根据长字(偶数地址)边界自动排列,但是。xlong不能。(5)。字符串
8、和。pstring。字符串类似于。字节,它将8位字符放入当前段的连续字中,每8位字符占用一个字。(6)。例如,“表格:int 1,2,3,4 或 table:单词8,6,4,2”。3段程序计数器定位伪指令段程序计数器定位伪指令的语法如下:以位为单位对齐大小此指令将段程序计数器SPC与1128个字的边界对齐,以确保此指令后面的代码从一个字或一页的边界开始。不同的操作数代表不同的含义:“1”表示将统计过程控制与字边界对齐2”表示将程控与长字/偶数地址边界对齐128”表示将SPC与页面边界对齐。什么时候?align没有操作数,其默认值为128,即与页面边界对齐。4条件汇编伪指令条件汇编伪指令在以下两
9、种情况下介绍。(1)第一种情况:如果定义明确的表达式。否则,如果定义明确的表达式。else.endif,(2)第二种情况:循环定义明确的表达式。中断定义明确的表达式。结束循环,4.1.4 TMS320C54x宏命令TMS320C54x汇编程序支持宏语言。宏命令是源程序中一段具有独立功能的程序代码,用户可以根据自己的需要使用它来创建自己的指令。一旦定义了宏命令,它就可以在以后的程序中被多次调用,从而简化和缩短了源程序。宏定义宏命令可以在源程序中的任何地方定义,但必须在调用宏之前定义。宏定义也可以嵌套。定义如下:宏命令名。宏;宏观主体;endm,2定义宏命令后,可以使用宏命令名称作为在源程序中调用
10、宏的指令。格式如下:宏命令名称,3宏扩展当宏命令在源程序中被调用时,宏命令将在汇编过程中被扩展。当宏被扩展时,汇编程序将实际参数传递给形式参数,然后用宏定义替换宏调用语句并进行汇编。,1 * 2 3 * add 3 4 * 5 * ADDRP=P1 P2 P3;解释宏函数6 7 add3。宏p1、p2、p3、ADDRP定义宏8 9 LD p1,A;给A 10添加p2,A参数1;将参数2和A添加到11 ADD p3,A;将参数3和A添加到12 STL A,ADDRP将结果a的低位字保存在参数4 13中。endm结束宏14 15 16。全球abc、def、ghi、adr定义全局符号17 18 00
11、0000 add3 abc、def、ghi、adr。呼叫宏1 1 000000 1000!美国律师协会;宏扩展1 000001 0000!添加定义,A 1 000002 0000!加吉,A 1 000003 8000!示例4-2宏定义、宏调用和宏扩展的示例。4.2 TMS 320 C 54 X汇编语言编程的基本方法,数字信号处理器软件开发一般有以下几种方式:(1)直接编写汇编语言源程序;(2)编译C语言程序;(3)混合编程(C代码和汇编代码)。4 . 2 . 1 TMS 320 C 54X汇编语言源程序的完整结构在汇编语言源程序中,asm是程序的扩展,程序员使用“段”伪指令来组织程序的结构。程
12、序通常由数据段、堆栈段和代码段组成。数据用于存储具有初始值的数据块;usect用于为堆栈保留存储空间;文本用于设置代码段。此外。bss用于为变量保留存储空间;section通常用于定义中断向量表。程序有四种基本结构:序列结构、分支结构、循环结构和子程序结构。4.2.2序列结构序列结构是程序结构最基本和最简单的形式,其中语句或结构被连续执行。示例1尝试编译一个程序,在下面的公式中找到z的值。z=(x y)8w源程序编译如下:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * EX41.打开堆栈空间。bss x,1;变量被分配
13、了一个4个字的空间。bss y,1。bss w,1。bss z,1。推迟开始。数据,表:单词6,7,9。文本开始3360 STM # 0,SWWSR零等待状态。设置堆栈指针STM #x,AR1AR1指向x RPT # 2;将三个值从程序存储器转移到数据存储器MVPD表,AR1 LD x,A,ADD y,A;A=x y LD A,3;A=(x y)*8 SUB w,A;A=(x y)*8-w STL A,z端: B端。最后,在使用序列结构编程时,要注意:合理选择算法;采用合适的寻址方式选择指令;存储数据和结果时,请注意内存空间的分配和寄存器的使用。4.2.3分支结构程序的分支主要通过条件分支指令
14、来实现。TMS320C54x富含程序控制和转移指令,可用于执行分支转移、循环控制和子程序操作。分支指令(如B、BACC、公元前等。)通过重写PC来改变程序的流向。分支结构也称为条件结构。试着编译一个程序,找到一个数字的绝对值,然后把它送回原来的地方。源程序编译如下:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * EX42。正或负* * * * * *。打开堆栈空间。bss x,1;变量被分配了一个字空间。def start . datatable
15、: word-7 . text,start:stm # 0,SWWSR零等待状态。设置堆栈指针STM #x,AR1 MVPD表,*AR1 LD *AR1,A BC端,AGT;如果是A0,转到结尾;否则,执行防抱死制动系统。结束,并注意:使用分支结构编程时正确选择条件运算符;正确选择相应的指令;每个分支中必须有一个完整的端点;对于多分支程序,检查每个程序是否正确。4.2.4循环结构程序循环结构程序设计主要用于一些需要重复的操作,简化了程序,节省了内存。循环结构程序的设计可分为三个部分:设定循环初始状态、循环体和循环控制条件。循环初始状态主要是指设置循环数的初始计数值,以及设置其他初始状态使循环正常工作(如缓冲区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《药物分析实验》2022-2023学年第一学期期末试卷
- 石河子大学《现代教育技术》2023-2024学年第一学期期末试卷
- 石河子大学《纪录片赏析》2023-2024学年第一学期期末试卷
- 沈阳理工大学《自动检测技术》2022-2023学年第一学期期末试卷
- 沈阳理工大学《色彩构成》2021-2022学年第一学期期末试卷
- 沈阳理工大学《建筑力学》2021-2022学年第一学期期末试卷
- 沈阳理工大学《后期特效》2023-2024学年第一学期期末试卷
- 沈阳理工大学《电工与电子技术实验》2021-2022学年期末试卷
- 沈阳理工大学《测量学》2021-2022学年第一学期期末试卷
- 海商法修改船舶融资租赁合同
- 《市场营销》教案(第3周)市场营销环境分析
- 租地种香蕉合同
- 上海市虹口区2024学年第一学期期中考试初三物理试卷-学生版
- 旧市场提升改造方案
- 湖北汉江王甫洲水力发电限责任公司公开招聘工作人员【6人】高频难、易错点500题模拟试题附带答案详解
- 统编版 七年级上册(2024修订) 第四单元 13 纪念白求恩 课件
- 外汇兑换居间劳务协议
- 国开(甘肃)2024年春《地域文化(专)》形考任务1-4终考答案
- 档案整理及数字化服务方案(技术标 )
- 《宏观经济学乘数论》PPT课件.ppt
- 警务监督员表态发言(共4篇)
评论
0/150
提交评论