第5章39;C54x的汇编语言程序设计2009.
第5章 TMS320C54x汇编语言程序设计
第5章 TMS320C54x汇编语言程序设计 TMS320C54x汇编语言程序设计
5.4.1 加、减法和乘法运算
4
【例5.4.3】计算 y = ∑ a x 5.4.3】
i =1
i i
程序: 程序: table:
start:
end:
.word 1,2,3,4 .word 8,6,4,2 .text STM #0,SWWSR STM #STACK+10h,SP STM #a,AR1 RPT #7 MVPD table,*AR1+ CALL SUM B end
; 变量初始化
; 插入0个等待状态 插入0 ; 设置堆栈指针 ; AR1指向a AR1指向 指向a ; 移动8个数据 移动8 ; 从程序存储器到数据存储器 ; 调用SUM子程序 调用SUM SUM子程序
第5章 TMS320C54x汇编语言程序设计 TMS320C54x汇编语言程序设计
5.4.1 加、减法和乘法运算
第5章 TMS320C54x汇编语言程序设计 TMS320C54x汇编语言程序设计
5.4.1 加、减法和乘法运算
4
【例5.4.3】计算 y = ∑ a x 5.4.3】
i =1
i i
程序: 程序: ******************************************** * example.asm * ******************************************** “example.asm” example.asm” .title .mmregs “STACK”,10h ;为堆栈指定空间 STACK” stack .usect 为变量分配9 ;为变量分配9个字的空间 .bss a,4 .bss x,4 .bss y,1 .def start .data
第5章TMS320C54x的汇编语言程序设计报告
5.1.1 汇编语言源程序格式
汇编语言程序以.asm为扩展名,可以用任 意的编辑器编写源文件。 一句程序占源程序的一行,每行字符最多 200个,如果长度超过200,则汇编器截去 行尾的多余字符,并发出一个警告。
⑵ 操作数区 操作数区是跟在助记符区后面的一系列操作 数,由一个和多个空格分开。 操作数可以是符号、常数或是符号与常数组 合的表达式。操作数之间一定用逗号“,”分开。 对操作数前缀的规定。汇编器允许将常数、 符号或表达式作为地址、立即数或间接地址。指 令操作数遵循以下规定: ◇前缀“#”后面的操作数是一个立即数。 ◇前缀“*”后面的操作数是一个间接地址。
① 源文件格式 助记符指令源语句的每一行通常包含4个部分: 标号区、助记符区、操作数区和注释区。 助记符指令语法格式如下:
[label][:] 标号区 mnemonic 助记符区 [operand list] [;comment] 操作数区 注释区
例 助记符指令源语句举例。
NANHUA .set 1 ;符号NANHUA=1 Begin: LD #NANHUA,AR1; 将1加载到AR1 汇编语句书写格式应遵循一定规则。这些规则如下: ① 所有语句必须以一个标号、空格、星号或分号开始; ② 标号是可选项,若使用标号,则标号必须从第一列开 始; ③ 包含有一个汇编伪指令的语句必须在一行完全指定; ④ 每个区必须用一个或多个空格分开,Tab字符与空格 等效。 ⑤ 程序中注释是可选项。在第一列用*号或;号,其它 列用;号。 ⑥ 若源程序很长,需要书写若干行,可在前一行用反斜 杠(\)结束,余下接着在下一行继续书写。
第5章TMS320C54x的汇编语言程序设计基础资料
2020年10月9日
DSP原理及应用
14
第5章 TMS320C54x的汇编语言程序设计 基础
5.2.1 COFF文件的基本单元
1. 段(sections)
5.1 汇编语言程序的编辑、汇编、链接过程
3. 链接
所谓链接,就是利用’C54x的链接器LNK500 ,根据链接器命令文件(.cmd)对已汇编过的一个或 多个目标文件(.obj)进行链接,生成输出文件 (.out)和存储器映像文件(.map) 。
常用的汇编器命令:
lnk500 %1.cmd
l%n1k.5c0m0d: 调 链用 接链 命接 令器文命件令名,该文件须指明目标文件、 输入文件、输出文件、链接选项和存储器配置要求等。
2020年10月9日
DSP原理及应用
20
第5章 TMS320C54x的汇编语言程序设计 基础
5.2.2 汇编器对段的处理
1. 未初始化段 未初始化段就是在’C54x存储器中的保留空间
,通常将它们定位在RAM区。 在目标文件中,这些段中没有确切的内容。 由这些段定义的空间仅作为临时存储空间,在
程序运行时,可以利用这些存储空间存放变量。 未初始化段分为默认的和命名的两种,分别由
链接器的任务:即分配存储单元,将目标文件中的段重 新定位到目标系统的存储器中,这一过程称为定位或分配。
2020年10月9日
DSP原理及应用
18
第5章 TMS320C54x的汇编语言程序设计 基础
3. 段与目标存储器的对应关系
目标文件中的段与目标存储器之间的关系
C54x第五章 程序设计
5)找出小xi*yi乘积项的最大值 结合讲义配套例程5-3程序,要读懂并学会编写简单 运算程序
本章主要内容
程序的控制和转移 堆栈的使用 基本运算—加法、减法、乘法 数据块传送※ 双操作数乘法 长字运算 小数运算 除法运算 浮点运算 汇编与C的混合编程
数据块传送指令 1)主要使用指令有: 数存与数存之间:注意dmad和Smem MVDK Smem,dmad ;目的操作数使用绝对寻址 MVKD dmad,Smem ;源操作数使用绝对寻址 MVDD Xmem,Ymem 数存与MMR之间: 数存单元操作数只能绝对寻址 MVDM dmad,MMR ; MVMD MMR,dmad MVMM MMR,MMR
4
循环操作 –单指令重复
由BANZ构成的循环 单指令重复 √ 块重复操作 循环的嵌套
单指令重复
种类:有RPT 和RPTZ两条指令 指令格式:PRT #n ;将该指令后面的指令重复 执行n+1次 RPTZ A,#n;在重复执行前,将累加 器A清零 使用寄存器:该指令使用16位RC寄存器,最 大重复次数为65536,即设置的n的最大值为 65535。 优点:重复操作可以使乘法/累加、数据块传 送等多周期指令转化为单周期指令来提高执行 速度。 如: RPT #99;重复执行100次 MVPD 指令 MVPD Pmad,Smem 注意:单指令重复过程中不能响应中断。
长字运算※ 小数运算 除法运算 浮点运算 汇编与C的混合编程
长字运算与并行运算 2)长字指令 (1)长字指令有பைடு நூலகம் 指令 DLD Lmem,dst DST src,Lmem
功能 dst=Lmem Lmem =src
DADD Lmem,arc[,dst]
DSUB Lmem,src[,dst] DRSUB Lmem,src[,dst]
第五章--TMS320C54x-DSP的汇编语言程序设计.
5.1 汇编语言程序编写方法
2. 操作码项 在语句中一定有的是操作码项,用来说明所有进行的操作。 操作项是一个操作码的助记符,助记符包含指令性语句、伪
指令和宏命令。 对于指令性语句,一般用大写,汇编程序将其翻译为机器语
言指令。对于伪指令,汇编程序将根据其所要求的功能进 行处理,可以形成常数和变量,当用它控制汇编和链接过 程时,可以不占存储空间。对于宏命令,则将根据其定义 展开。伪指令和宏命令均以西文句号(.)开始,且为小写。
第五章 320C54x 的汇编语言程序设计
第五章 320C54x 的汇编语言程序设计 5.1汇编语言程序编写方法 5.2汇编语言的指令系统 5.3320C54x 汇编语言的编辑、汇编与链接过程 5.4汇编器 5.5链接器
第五章 320C54x 的汇编语言程序设计
的软件开发一般有以下几种方式: (1)直接编写汇编语言源程序; (2)编写C语言程序; (3)混合编程(既有C代码,又含汇编代码)。
5.1 汇编语言程序编写方法
表中运算符从上到下对应优先级由高到低。
表达式的执行顺序是先执行优先级高的运算后执行
优先级低的运算,圆括号内的表达式最先运算。
表达式溢出
在汇编过程中执行算术运算后,汇编器将检查溢出
状态,表达式值的有效范围为-32768~32767,超出此范围
就会改变溢出状态,出现溢出时,汇编器会发出值被截断
5.1 汇编语言程序编写方法
一、汇编语言源程序格式 汇编语言源程序中的每个语句可以由四项组成: [名字][:] 操作码 [操作数1,操作数2,…] [;注释]
其中,[ ]为可选项。 1. 名字项 名字项可以是标号或变量,用来表示本语句的符号地址,只有
汇编语言程序设计教程第4版课件第5章
汇编语言程序设计教程
18
根据关键字分支的跳转表结构
2018/9/26
汇编语言程序设计教程
19
5.4 循环程序设计
5.4.1 简单循环程序设计 5.4.2 多重循环程序设计
2018/9/26
汇编语言程序设计教程
20
循环程序设计
• 采用循环结构,可简化程序书写形式,缩 短程序长度,减少占用的内存空间。 • 但要注意,循环结构并不简化程序的执行 过程,相反,增加了一些循环控制环节, 使总的程序执行语句和执行时间不仅无减, 反而有增。
第5章 汇编语言程序设计
5.1 5.2 5.3 5.4 汇编语言程序设计概述 顺序程序设计 分支程序设计 循环程序设计
2018/9/26
汇编语言程序设计教程
1
5.1 汇编语言程序设计概述
• 汇编语言是面向机器的低级程序设计语言, 它可以直接控制硬件的最底层,如寄存器、 标志位、存储单元等。 • 进行汇编语言程序设计时,首先应理解和 分析题目要求,选择适当的数据结构及合 理的算法,然后再考虑用语言来实现。 • 汇编语言面向机器的特点使得程序员在编 写程序时必须严格遵守其语法及程序结构 方面的规定。
2018/9/26
汇编语言程序设计教程
15
根据表内地址分支跳转
• 根据表内地址分支时,跳转表内连续存放 的是一系列跳转地址,即各分支程序的入 口地址。 • 当各分支程序均属于近程跳转时,跳转表 中装入的是各分支程序的入口偏移地址; 当各分支程序都属于远程跳转时,跳转表 中装入的是各分支程序的段地址和偏移地 址。
2018/9/26
汇编语言程序设计教程
4
汇编语言程序质量的评价标准
• • • • 程序的正确性和完整性。 程序的易读性。 程序的执行时间和效率。 程序所占内存的大小。
汇编语言程序设计第四版
汇编语言程序设计第四版汇编语言是一种低级编程语言,它允许程序员直接使用机器指令来编写程序。
由于其与硬件的紧密关联,汇编语言通常用于对性能要求极高的系统编程、嵌入式系统开发以及操作系统内核编写等场景。
《汇编语言程序设计》第四版作为该领域的教材,不仅更新了内容以适应最新的硬件发展,还增加了一些新的编程技术和实践。
第一章:汇编语言概述本章介绍了汇编语言的基本概念,包括它的定义、特点以及与其他编程语言的比较。
同时,阐述了汇编语言在现代计算机系统中的重要性和应用领域。
第二章:计算机系统基础在深入学习汇编语言之前,了解计算机系统的工作原理是非常必要的。
本章详细介绍了计算机的硬件组成、指令执行过程以及内存管理等基础知识。
第三章:汇编语言的语法和指令集这一章是汇编语言编程的核心,涵盖了汇编语言的基本语法规则、指令集以及操作数的使用。
通过本章的学习,读者将能够理解汇编指令的结构,并开始编写简单的汇编程序。
第四章:汇编程序的编写与调试本章介绍了如何使用汇编器将汇编语言代码转换为机器代码,以及如何使用调试工具来测试和调试汇编程序。
此外,还讨论了程序的优化技巧,帮助读者提高程序的执行效率。
第五章:高级汇编语言技术随着硬件技术的发展,汇编语言也在不断进步。
本章介绍了一些高级汇编语言技术,如宏指令、条件汇编和重复汇编等,这些技术可以显著提高编程的灵活性和效率。
第六章:输入输出和中断处理在计算机系统中,输入输出操作和中断处理是不可或缺的。
本章讲解了如何使用汇编语言来控制硬件设备,实现数据的输入输出,以及处理各种中断事件。
第七章:汇编语言在操作系统中的应用操作系统是计算机系统中最为关键的软件之一,而汇编语言在操作系统的开发中扮演着重要角色。
本章探讨了操作系统中的一些关键组件,如进程调度、内存管理和文件系统等,并展示了如何使用汇编语言来实现这些功能。
第八章:汇编语言在嵌入式系统中的应用随着嵌入式系统的普及,汇编语言在这一领域的应用也越来越广泛。
【2019-2020年整理】第5章-'C54x的汇编语言程序设计a
5.4 算术运算程序
5.5 重复操作程序
5.6 数据块传送程序
5.7 小数运算程序
5.8 浮点运算程序
Wednesday, January 09, 2019 DSP原理及应用 2
第5章 TMS320C54x汇编语言程序设计
5.1 概述
5.1.1 汇编语言源程序格式
# stack + size,SP 保留区的高地址赋给SP,
作为堆栈的栈底
在数据RAM空间开辟一个堆栈区。 设置好堆栈后,就可以使用堆栈了,如: CALL pmad ;(SP)-1 →SP,(PC)+ 2→TOS,pmad→PC 设置堆栈指针, # stack + size→SP。 RET ;(TOS)→PC,(SP)+1→SP
用累加器的低23位指定的地址加载PC和XPC
DSP原理及应用 8
Wednesday, January 09, 2019
第5章 TMS320C54x汇编语言程序设计
1. 分支转移程序
无条件分支转移:无条件执行分支转移; 条件分支转移:要在满足用户一个或多个条件时 才执行分支转移; 远程分支转移:允许分支转移到扩展存储器。
【例5.3.1】 分支转移举例。 STM #1000H,AR0 LD #88H,A zhong: SUB *AR0,A
;将操作数#88H装入AR0 ;将操作数#1000H装入ACC
;将A中的内容减去AR0中的
;内容结果装入A ;若累加器A>0且溢出, ;则转至zhong,否则往下执行
9
BC
Wednesday, January 09, 2019
子程序返回
第5章 TMS320C54x高级C语言程序设计
C54x的程序设计有两种语言:汇编 语言和C语言。 汇编语言程序的特点: 效率高; 硬件定时准确; 不够直观; 设计周期较长; 可移植性和可维护性差 。
第5章 C54x高级C语言程序设计
C语言程序的特点:
可移植性好; 可维护性好;
可生成代码执行效率较高的
价于算术右移
第5章 C54x高级C语言程序设计
3)DSP C语言关于变量的特殊规定
③ 除法和取余
DSP的C语言做了如下规定: 10/-3==-3 ; 10%-3==1 ; -10/3==-3 ; -10%3==-1 即:余数的符号与被除数的符号保持一致。
第5章 C54x高级C语言程序设计
3)DSP C语言关于变量的特殊规定
未初始化段 .bss
.stack .system
全局和静态变量
软件堆栈 动态存储空间
代码段 void main( ) { sum=a+b; } 已初始化数据段 int a=10; int b=20;
段是代码或数据块 的组合,它最终将 在存储器中占据一 个连续的空间 目标文件的每一个 段都是各自独立的
第5章 C54x高级C语言程序设计
5.1 C54x C语言介绍
5.1.1 C54x C与ANSI C的相同点
只要与硬件不是特别相关的部分
都是它们的相同点。
第5章 C54x高级C语言程序设计
5.1.1 C54x C与ANSI C的相同点
① 以函数作为基本单位。 ② 函数的定义和引用方式完全一致。
第5章 C54x高级C语言程序设计
5.2 C54x C语言编程
5.2.1 C54x C语言开发的存储器结构 1. C54x C语言开发的段结构
第5章 C54x的汇编语言程序设计
1
第5章 TMS320C54x汇编语言程序设计 TMS320C54x汇编语言程序设计
9
第5章 TMS320C54x汇编语言程序设计 TMS320C54x汇编语言程序设计
4. 局部标号
【例5.1.4】合法、非法局部标号$n举例。 5.1.4】合法、非法局部标号$ 举例。 假设符号ADDRA ADDRB,ADDRC已经在前面作了定义。 假设符号ADDRA,ADDRB,ADDRC已经在前面作了定义。 ADDRA, 已经在前面作了定义 Label1: Label1: LD ADDRA,A SUB ADDRB,A BC $1,ALT LD ADDRB,A B $2 $1 LD ADDRA,A $2 ADD ADDRC,A .newblock BC $1,ALT BC STL $1,ALT A,ADDRC STL A,ADDRC $1 NOP $1 NOP
11
第5章 TMS320C54x汇编语言程序设计 TMS320C54x汇编语言程序设计
2. 堆栈区大小的确定 堆栈区的大小可以按照以下步骤来确定: 堆栈区的大小可以按照以下步骤来确定:
① 先开辟一个较大的堆栈区,用已知数充填,如: 先开辟一个较大的堆栈区,用已知数充填, LD STM MVMM loop: loop: STL BANZ # -9224,B 9224, length, # length,AR1 SP, SP,AR4 B,*AR4B,*AR4loop,*AR1loop,*AR1数据RAM 数据 ;堆栈区要充填的数0DBF8h加载B 堆栈区要充填的数0DBF8h加载 加载B
DSP技术及应用习题答案
《DSP技术及应用》习题答案第1章绪论1.1 DSP的概念是什么?本书说指的DSP是什么?答:DSP有两个概念。
一是数字信号处理(Digital Signal Processing),指以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理;二是数字信号处理器(Digital Signal Processor),指是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。
本书中的DSP主要指后者,讲述数字信号处理器的应用。
1.2 什么是哈佛结构和冯•诺伊曼结构?它们有什么区别?答:(1)冯·诺伊曼(Von Neuman)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
(2)哈佛(Harvard)结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
1.3 已知一个16进制数3000H,若该数分别用Q0、Q5、Q15表示,试计算该数的大小。
答:3000H=12288。
若用Q0表示,则该数就是12288;若用Q5表示,则该数就是12288*2-5=384;若用Q15表示,则该数就是12288*2-15=0.3751.4 若某一个变量用Q10表示,试计算该变量所能表示的数值范围和精度。
答:Q10能表示的数值范围是-32~31.9990234,其精度为2-101.5 若x=0.4567,试分别用Q15、Q14、Q5将该数转换为定点数。
答:Q15:x*215=int(0.4567*32768)=14965;Q14:x*214=int(0.4567*16384)=7482;Q5:x*25=int(0.4567*32)=14。
汇编语言程序设计(第四版)第5章【课后答案】
汇编语言程序设计第四版【课后习题答案】--囮裑為檤第五章高级汇编语言程序设计5.1 条件表达式中逻辑与“&&”表示两者都为真,整个条件才为真,对于程序段:.if (X==5) && (ax!=bx)inc ax.endif请用转移指令实现上述分支结构,并比较汇编程序生成的代码序列。
解:cmp X, 5je abcjmp doneabc: cmp ax, bxjne cdejmp donecde: inc axdone:....5.2条件表达式中逻辑与“||”表示两者之一为真,整个条件就为真,对于程序段:.if (X==5) || (ax!=bx)inc ax.endif请用转移指令实现上述分支结构,并比较汇编程序生成的代码序列。
解:cmp X, 5je abcjmp donecmp ax, bxjne abcjmp doneabc: inc axdone: ....5.3、对于程序段:.while ax!=10mov [bx],axinc bxinc bxinc ax.endw请用处理器指令实现上述循环结构,并比较汇编程序生成的代码序列。
5.4、对于程序段:.repeatmov [bx],axinc bxinc bxinc ax.until ax==10请用处理器指令实现上述循环结构,并比较汇编程序生成的代码序列。
5.5、宏是如何定义、调用和展开的?解:宏定义采用一对伪指令实现,格式如下(其中方括号表示可选):宏名macro [形参表]宏定义体endm宏调用时,利用宏名带上实参即可,格式如下:宏名[实参表]5.6、宏定义中的形式参数有什么特点,它是如何进行形参和实参结合的?解:宏的参数功能非常强大,即可以没有参数,也可以带有一个或多个参数;而且参数的形式非常灵活,可以是常量、变量、存储单元、指令或它们的一部分,还可以是表达式等。
宏展开时的形参与实参结合是用位置匹配的实参对形参进行取代。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
; 将16位值0,1,2放入标号为 label1的当前段连续字中
; 将3放入标号为label2的字中
; 定义X的值 ; 有效定义的表达式 ; 引用已定义的所有局部标号 ; 有效定义的表达式
22
5.1.4 汇编源程序中的表达式
5. 可重新定位符号和合法表达式
对于绝对符号、可重新定位符号以及外部符号的有效操作,可参 见下表。
2018年9月21日 DSP原理及应用 5
1. 源文件格式
语句的书写规则:
④ 各部分之间必须用空格分开,Tab字符与空 格等效; ⑤如果源程序很长,需要书写若干行,可以在 前一行用反斜杠字符(\)结束,余下部分接着 在下一行继续书写。
2018年9月21日
DSP原理及应用
6
2.标号
所有汇编指令和大多数汇编伪指令都可以选用标 号,供本程序或其它程序调用。 ① 标号必须从语句的第1列写起,其后的冒号 “:”可任选; ②标号是由字母、数字以及下划线和美元符号 等组成,最多可达32个字符,但第一个字符不 能是数字; ③标号分大小写。
DSP原理及应用
20
5.1.4 汇编源程序中的表达式
3. 有效定义的表达式 某些汇编器要求有效定义的表达式作为操作数。 操作数是汇编时间常数或链接时可重定位的符号。
有效定义的表达式是指表达式中的符号或汇编时
间常数在表达式之前就已经被定义。
有效定义的表达式的计算必须是绝对的。
2018年9月21日
DSP原理及应用
2018年9月21日 DSP原理及应用 11
5.1.2 汇编语言中的常数与字符串
汇编器可支持8种类型的常数(常量)。
数据类型 二进制 八进制 十进制 十六进制 浮点数 举 226q或572Q 1234或+1234或-11234 0A40h或0A40H或0xA40 1.623e-23 缺省型 例 说 明 1110001b或1110001B
从左到右运算。具有相同的优先级,按从左 按位异或运算 从左至右 ∧ 到右的顺序计算。 | 按位或运算 从左至右
DSP原理及应用
2018年9月21日
19
5.1.4 汇编源程序中的表达式
1. 运算符 2. 条件表达式 3. 有效定义的表达式 4. 表达式上溢和下溢 5. 可重新定位符号和合法表达式
2018年9月21日
2018年9月21日 DSP原理及应用 8
3.助记符
助记符用来表示指令所完成的操作,可以是汇 编语言指令、汇编伪指令、宏伪指令。 助记符指令:一般用大写,不能从第一列开始 ; 汇编伪指令:用来为程序提供数据和控制汇编进程。 以句号“.”开始,且用小写; 宏 伪 指令:用来定义一段程序,以便宏调用来调用 段程序。以句号“.”开始,且用小写 ;
;定义在现行模块中,可重新定位
;LAB1=2,绝对符号 ;定义在现行模块中,可重新定位
LD
LD
#LAB1+((5+4)*3),A ;LAB1为绝对符号,A=29
#LAB1+3+(4*7),A
;LAB1为绝对符号,A=33
2018年9月21日
DSP原理及应用
25
5. 可重新定位符号和合法表达式
【例5.1.8】 判断下列指令中表达式的合法性。
2018年9月21日 DSP原理及应用 2
5.1 汇编语言源程序格式
汇编语言程序以.asm为扩展名,可以用任意的
编辑器编写源文件。一条语句占源程序的一行,长
度受汇编器的限制,语句的执行部分必须限制在
200个字符以内。
2018年9月21日
DSP原理及应用
3
5.1 汇编语言源程序格式
1. 源文件格式 助记符指令源语句的每一行通常包含4个部分: 标号区、助记符区、操作数区和注释区。 助记符指令语法格式:
从右至左 从左至右 从左至右
10③ 11
加法、减法 3 + 指数 从左到右 4 影响表达式的主要因素: ^ 5 << >> 左移、右移 从左至右 ① 圆括号 () 。圆括号内的表达式最先计算; 6 < <= 小于、小于等于 从左至右 C54x C语言相似的优 7 ② 优先级。’ > >= 大于、大于等于 从左至右 不能用大括号 { }汇编器使用与 或中括号[ ]代替圆括号 ( )。 8 != = 不等于、等于 从左至右 先级,优先级高的先计算; 9 & 按位与运算 从左至右
LD LD LD LD LD
2018年9月21日
extern_1-10,B 10-extern_1,B -(intern_1),B
可重新定位 合法
非法 不可将外部符号变负
非法 可重新定位符号不可变负 extern_1/10,B 非法 可重新定位符号不可乘除 intern_1 + extern_1,B 非法
2018年9月21日 DSP原理及应用 18
5.1.4 汇编源程序中的表达式
表达式可以是常数、符号,或者是由算术运算符 序号 符 号 运算操作 求值顺序 分开的一系列常数和符号。 1 + - ~ ! 取正、取负、按位求补、逻辑负 2 有效表达式的值 * /% 乘法、除法、求模 : -32 768~32 767
2018年9月21日 DSP原理及应用 9
4.操作数
操作数是指指令中参与操作的数值或汇编伪指
令定义的内容,紧跟在助记符的后面,由一个或多个 空格分开。 操作数之间必须用逗号“,”分隔; 操作数可以是常数、符号或表达式; 操作数中的常数、符号或表达式可用来作为 地址、立即数或间接地址;
2018年9月21日 DSP原理及应用 10
例如: 99.e9——有效的数;99e9——非法。 合法:.314 ,3.14 , -.314e-19 。
2018年9月21日 DSP原理及应用 13
5.1.3 汇编源程序中的符号
汇编程序中的符号用于标号、常数和替代字符。
由字母、数字以及下划线和美元符号(A~Z, a~z,0~9,_和$)等组成; 符号名最多可长达200个字符; 在符号中,第1位不能是数字,并且符号中不 能含空格。
2018年9月21日 DSP原理及应用 15
5.1.3 汇编源程序中的符号
2. 符号常数 符号也可被设置成常数值。为了提高程序的可读 性,可以用有意义的名称来代表一些重要的常数值。 伪指令.set和.struct/.tag/.endstruct可以 用来将常数赋给符号名。 注意:符号常数不能被重新定义。
A-B为… 绝对 非法 非法 可重新定位 绝对 非法 外部 非法 非法
23
DSP原理及应用
5. 可重新定位符号和合法表达式
表达式不能包含可重新定位符号和外部符号的乘 或除;
单操作数运算仅能应用于绝对符号,不能应用于 可重新定位符号; 表达式简化为仅含有可重新定位符号是非法的。 所有合法表达式可以化简为两种形式:
2018年9月21日
DSP原理及应用
7
2.标号
在使用标号时,标号的值是段程序计数器SPC的 当前值。 例如,若使用.word伪指令初始化几个字,则标 号将指到第一个字。
【例5.1.2】 标号格式举例。 … … 9 000000 ;假设汇编了某个其他代码 10 000040 000A Start: .word 0Ah,3,7 000041 0003 标号,值为40h 000042 0007
带有绝对符号和可重新定位符号的表达式 并且B为… 绝对 外部 可重新定位 绝对 可重新定位 外部 绝对 可重新定位 外部 A+B为… 绝对 外部 可重新定位 可重新定位 非法 非法 外部 非法 非法 如果A为… 绝对 绝对 绝对 可重新定位 可重新定位 可重新定位 外部 外部 外部
2018年9月21日
5. 注释
用来说明指令功句首或句尾,位于句首时,以 “*”或“;”开始,位于句尾时,以分号“;”开 始。 注释可单独一行或数行; 例如:
11 00000 .bss sym, ; 保留空间于.bss ************************************** * 改变段,允许第五个‘mylab’定义 * **************************************
字符
字符串
‘D’
“this is a string”
汇编时间常 Nan .set 18 数 Aux .set AR1
2018年9月21日 DSP原理及应用
赋给符号的是绝对 值或寄存器名
12
5.1.2 汇编语言中的常数与字符串
浮点数
浮点整型常量由一串十进制数字组成,可以带小 数点、分数和指数部分。 浮点数的表示方法: [±][n].[n] [E | e] [±] [n] n—— 为一串十进制数,浮点数前可带加减号 ( + 或-),且小数点必须指定。
[标号][:]
Begin: 标
2018年9月21日
助记符
LD 助记符
[操作数]
[; 注释]
【例5.1.1】 助记符指令源语句举例。 #1,AR1 操作数
DSP原理及应用
; 将1加载到AR1
号
注
释
4
1. 源文件格式
语句的书写规则:
① 所有语句必须以标号、空格、星号或分号 (*或;)开始; ② 标号和注释是可选项,若使用标号,则标 号必须从第一列开始;如果注释在第一列开始 ,前面必须标上星号或分号,在其他列开始的 注释前面必须以分号开头; ③ 所有包含有汇编伪指令的语句必须在一行 完成指定;
号。和符号常数不同,替代符号可以被重新定义。可
在程序中的任何地方将变量赋给替代符号。
例如:
2018年9月21日
.asg "high",AR2