DSP戴明帧主编第5章汇编语言程序设计

合集下载

第5章 汇编语言程序设计20PPT课件

第5章 汇编语言程序设计20PPT课件
第5章 汇编语言程序设计
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
汇编语言是一种采用助记符表示的程序设计语言, 即用助记符来表示指令的操作码和操作数,用标 号或符号代表地址、常量或变量。
汇编语言编写的程序能够直接利用硬件系统的特 性直接对位、字节、字寄存器或存储单元、I/O端 口进行处理,同时也能直接使用CPU指令系统提供 的各种寻址方式。
(小于)、GT(大于)、LE(小于等于)、GE (大于等于) (4)分析运算符:SEG、OFFSET、TYPE、SIZE和 LENGTH (5)合成运算符:PTR、THIS、SHORT
5.3 伪指令语句
5.3.1 数据定义伪指令 5.3.2 符号定义伪指令 5.3.3 段定义伪指令 5.3.4 模块定义与连接伪指令 5.3.5 处理器选择伪指令
汇编程序时最早也是最成熟的一种系统软件。 汇编程序的功能如下:
用汇编语言编 写的源程序
汇编程序
目标程序
5.2汇编语言源程序的格式
5.2.1 分段结构 5.2.2 汇编语言语句的类型和格式
5.2.1 分段结构
汇编语言源程序的结构是分段结构形式,一个汇 编语言源程序由若干段(SEGMENT)组成,每个段 以SEGMENT语句开始,以ENDS语句结束。整个源 程序的结尾是END语句。
5.3.1 数据定义伪指令
数据定义伪指令的用途是定义一个变量的类型, 给操作数赋值,或者仅给变量分配存储单元而不 赋予特定的值
数据定义伪指令的一般格式为:
[变量名] 作数……]
伪指令定义符
操作数[,操
数据定义伪指令定义符后面的操作数可以是 常数、表达式或字符串,但每项操作数的值不能 超过由伪指令定义符所定义的数据类型限定的范 围。

第五章DSP汇编语言开发

第五章DSP汇编语言开发

三、COFF文件 汇编器和连接器建立的目标文件,是可以在C54x DSP器件上执行的文件。这些目标文件的格式称为公共目 标文件格式COFF (Common Object File Format )文件。 汇编器建立的是一种相对地址的COFF文件。汇编器根 据汇编命令用适当的段将各部分程序代码和数据连在一起, 构成目标文件。 连接器建立的是一种绝对地址的COFF文件。连接器建 立COFF文件时,要把各部分程序代码和数据段重新定位到 目标存储器中,也就是为各个程序代码或数据分配存储单 元。
③. 自定义段 自定义段,由用户定义的段,和默认的段.text .data .bss 的使用完全相同,而且独立分配,但是自定义段单独被汇 编,不和.text.data .bss混在一起。.usect和.bss类似,.sect 和与.data和.text类似。 语法格式如下: 标号 .usect “段名”,字数 .sect “段名” .asect “段名” ,地址
子段可以单独为其分配存储单元,或在基段之后。
⑤、段程序计数器(SPC)
汇编器为每个段都安排一个单独的程序计数器——段 程序计数器(SPC)。SPC表示一个程序代码段或数据段 内的当前地址。连接器在连接时对每个段进行重新定位。 汇编开始时,汇编器将每个SPC置0。当汇编器将程序 代码或数据加到一个段内时,相应的SPC就增加。如果再 继续对某个段汇编,则相应的SPC就在先前的数值上继续 增加。连接器在连接时要对每个段进行重新定位。
例5-2: 汇编源程序经汇编后的列表文件(段命令的应用):
该例中一共建立了5个段: .text段: 段内有10个字的程序代码。 .data段: 段内有7个字的数据。 vectors段: 是一个用.sect建立的自定义段,段 内有2个字的已初始化数据。 .bss段: 在存储器中为变量保留了10个存储 单元。 newvars段: 用.usect建立的自定义段,在存储器 B y .def x

DSP技术 第5章 TMS320C54x DSP的汇编语言程序设计

DSP技术 第5章 TMS320C54x DSP的汇编语言程序设计
如1682416824表达式表达式2018年1月25日dsp原理及应用10序号序号运算操作运算操作求值顺序求值顺序11取正取负按位求补逻辑负取正取负按位求补逻辑负乘法除法求模乘法除法求模加法减法加法减法指数指数从左到右从左到右55左移右移左移右移小于小于等于小于小于等于大于大于等于大于大于等于不等于等于不等于等于按位与运算按位与运算1010按位异或运算按位异或运算1111按位或运算按位或运算表中运算符的优先级是从上到下同级是从左到右
A B T FRCT
指令执行前 00 0000 1000H 00 0000 0000H
0400H 1
A B T FRCT
指令执行后 00 0000 1000H 00 001A 3800H 0400H 1
【例13】 MACR *AR3+,*AR4+,A,B
A B T FRCT AR3 AR4 数据存储器 0100H 0200H
表5.8 乘加和乘减指令
【例11】 MAC #345H,A,B
A B T FRCT
指令执行前 00 0000 1000H 00 0000 0000H 0400H 0
A B T FRCT
指令执行后 00 0000 1000H 00 000D 2400H 0400H 0
【例12】 MAC #345H,A,B
表达式可以是常数、符号,或者是由算术运算符 分开的一系列常数和符号。
有效表达式的值: -32 768~32 767 影响表达式的主要因素:
① 圆括号( )。圆括号内的表达式最先计算; ② 优不先能级用。大’括C号5{4x}汇或编中器括使号用[ ]代与替C语圆言括相号似( 的)。优
先级,优先级高的先计算;
0101H 0201H

《汇编语言程序设计》第5章基本汇编语言程序设计.ppt

《汇编语言程序设计》第5章基本汇编语言程序设计.ppt
汇编语言程序设计的基本步骤: 1.分析题意,确定数据结构和算法 2.根据算法绘制程序流程图 3.根据流程图编写程序 4.调试程序
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
例5.1 在100个字的无符号整数字中找出最 大数。
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
5.2 顺序结构的程序设计
(2)输出:在8086.8088指令系统中,字符的输出是由 DOS21H中断的02H子功能来实现的,命令序列如下: MOV AH,02H INT 21H 其作用是将寄存器DL中所存放的字符进行显示输出, 故在执行该命令序列之前,应先将被输出字符的ASCII 码存入DL中。
程序的基本结构
1.顺序结构 2.分支结构 3.循环结构
ห้องสมุดไป่ตู้
5.1 汇编语言程序的设计步骤
程序的基本结构 1.顺序结构
5.1 汇编语言程序的设计步骤
程序的基本结构 2.分支结构
5.1 汇编语言程序的设计步骤
程序的基本结构 3.循环结构
5.1 汇编语言程序的设计步骤
第5章基本汇编语言程序设计
1.分析题意,确定数据结构和算法 (1)初始化,建立一个数据指针指向数据区的首
地址; (2)将第一个数存入寄存器(如AX)中; (3)调整数据指针,使其指向下一个数; (4)将数据指针所指的数与寄存器AX的内容相比
较,如果该数较大,则将其存入AX,否则丢掉; (5)重复执行(3)、(4)两步,直至将数组中
分析:比较两数可用CMP指令,而带符号数的比 较结果可由标志位SF、OF来确定,选用的转移 指令应为JG、JL等。
第5章基本汇编语言程序设计
5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计

单片机课件第五章__汇编语言程序设计

单片机课件第五章__汇编语言程序设计

MOV 31H,A ;暂停
开始 取数,A←(30H) A为负数? N Y A←64H
图 例
5-4 4.3
A=0?
N A←X+2 存数,(31H)←A(30H) 结束 A←|X|
程 序 流 程 图
3.多向分支程序设计举例
【例5.4】 根据R0的值转向7个分支程序。
R0<10,转向SUB0; R0<20,转向SUB1;
JMP @A+DPTR ;PC ← A+DPTR TAB: AJMP SUB0 ;转移指令表 AJMP SUB1 AJMP SUB5 AJMP AJMP SUB2 SUB6
开始
K=? K=0 转SUB0 K=1 …… K=6 转SUB1 转SUB6
图5-5 多向分支程序流程图
返回本节
4.2.4 循环程序
5.2.2 顺序程序
5.2.3 分支程序
5.2.4 循环程序
5.2.5 子程序 5.2.6 位操作程序
返回本章首页
5.2.1 汇编语言程序设计步骤
1.分析问题
2.确定算法
3.设计程序流程图 4.分配内存单元 5.编写汇编语言源程序 6.调试程序
返回本节
5.2.2 顺序程序
顺序程序是一种最简单,最基本的程序。
【例5.2】 设X、Y两个小于10的整数分别存于 片内30H、31H单元,试求两数的平方和并将 结果存于32H单元。 解:两数均小于10,可利用乘法指令求平方。 程序流程如图5-2所示。参考程序如下: ORG 2000H
MOV
MOV
A,30H
;取30H单元数据
B,A ;将X送入B寄存器
MUL AB
ONE DATA 30H

15和16:DSP原理及应用——第5章TMS320C54x的汇编语言程序设计第116次课讲稿

15和16:DSP原理及应用——第5章TMS320C54x的汇编语言程序设计第116次课讲稿

S13.2
-8192 ≤x ≤8191.75
Q1
S14.1
《DSP原理及应用Q》0 成都理工大学工S15程.0技T术M 学院 石坚
-16384 ≤x ≤16383.5 -32768 ≤x ≤328767 8
第5章 TMS3250.7C5小4x数的运汇算编程语序言程序设计
定点DSP的小数表示法 基于2的补码形式; 数的定标有Q法和S法; C54X为16位:1位符号位,Q个小数位和15-Q个整数位。
1*32768/10,-2*32768/10
《DSP原理及应用》 成都理工大学工程技T术M 学院 石坚
12
12
start: done:
第5章 TMS.3te2x0tC54x的汇编语言程序设计 SSBX FRCT STM #a, AR1 RPT #7 MVPD table, *AR1+ STM #a, AR3 STM #x, AR4 RPTZ A, #3 MAC *AR3+, *AR4+, A STH A, y B done .end 只能最多用到AR5, 教材代码有误!!!
说明:重复操作期间,除RS外所有中断被禁止,直到重 复循环完成;CPU响应HOLD信号。
《DSP原理及应用》 成都理工大学工程技T术M 学院 石坚
2
2
第5章 单TM指S3令20重C5复4x操的作汇程编序语示言例程:序设计
【例5.5.1】对数组进行初始化,使x[8]={0,0,0,0,0,0,0,0}。
将尾数按指数值进行左
移(指数为负)或右移 指数相加 (指数为正)
暂存乘积指数
浮点运算举例
编写浮点运算程序,完 成x1*x2=0.4*(-0.9)。

【2019-2020年整理】第5章-'C54x的汇编语言程序设计a

【2019-2020年整理】第5章-'C54x的汇编语言程序设计a
5.1 概述 5.2 堆栈的使用方法 5.3 控制程序
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章DSP汇编程序设计与开发10

第5章DSP汇编程序设计与开发10
15
COFF中的 COFF中的初始化段
段有两种基本类型:初始化段和未初始化段。 段有两种基本类型:初始化段和未初始化段。
初始化段包含可执行代码及初始化数据,如:text段、 包含可执行代码及初始化数据, text段
data段以及由汇编伪指令.sect产生的自定义段。 data段以及由汇编伪指令.sect产生的自定义段。 段以及由汇编伪指令.sect产生的自定义段
初始化段存储在目标文件中,每个初始化 Nhomakorabea都可以重新 存储在目标文件中,
定位, 被分配在ROM ROM中 定位,一般被分配在ROM中。 定义初始化段的伪指令有3个:. text、.data和.sect text、.data和.sect“ 定义初始化段的伪指令有3 段名” 段名”。 汇编过程中,遇到新的初始化段伪指令, 汇编过程中,遇到新的初始化段伪指令,汇编器将停止 汇编当前段,并将接下来的代码汇编进新的指定段, 汇编当前段,并将接下来的代码汇编进新的指定段,直到出现 下一个定义初始化段的伪指令。 下一个定义初始化段的伪指令。
11
代码汇编、 代码汇编、链接过程
源程序 汇编器 目标代码 .text段 段 .data段 段 .bss段 段 自定义段
cmd文件 cmd文件
链接器 目标存储器 片内ROM 片内 片外ROM 片外 片内RAM 片内 片外RAM 片外
12
COFF文件中的 COFF文件中的段
• “段”是COFF文件中的最小单位,是目标存储空间中一 COFF文件中的最小单位, 文件中的最小单位 段连续的代码、数据或保留空间。 段连续的代码、数据或保留空间。 • 汇编后的源代码被分类成各个不同的子段,并提供单独 汇编后的源代码被分类成各个不同的子段, 的段程序计数器SPC SPC。 的段程序计数器SPC。 • 按定义方式,“段”可分为标准定义段和自定义段两种: 可分为标准定义段和自定义段两种: .text,和 .bss, .text,和 .data 是标准定义段; .usect是 .sect, .usect是自定义段。 • 按基本类型,“段”可分为已初始化段和未初始化段两 种 .text, .data和 .sect,是已初始化段; .data和 .sect,是 .usect是 .bss 和 .usect是未初始化段。 13

DSP精讲课件第5章 'C54x的汇编语言程序设计

DSP精讲课件第5章 'C54x的汇编语言程序设计

2016年11月11日
DSP原理及应用
7
第5章 TMS320C54x汇编语言程序设计
2. 符号常数
【例5.1.3】 定义符号常数举例。 N .set 512 buffer .set 4 * N nzg1 .set 1 nzg2 .set 2 nzg3 .set 3
2016年11月11日
DSP原理及应用
2016年11月11日 DSP原理及应用 11
第5章 TMS320C54x汇编语言程序设计
4. 局部标号
【例5.1.4】合法、非法局部标号$n举例。 假设符号ADDRA,ADDRB,ADDRC已经在前面作了定义。 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 $1,ALT STL A,ADDRC STL $1 NOP A,ADDRC $1 NOP
1. 源文件格式 助记符指令源语句的每一行通常包含4个部分: 标号区、助记符区、操作数区和注释区。 助记符指令语法格式: [标号][:]
NANHUA
助记符
.set 1
[操作数]
[; 注释]
; 符号NANHUA=1
【例5.1.1】 助记符指令源语句举例。
Begin: 标 号
2016年11月11日
LD #NANHUA,AR1 ; 将1加载到AR1 助记符 操作数 注 释
第5章 TMS320C54x汇编语言程序设计
5. 比较转移程序 例如:比较操作后条件分支转移
STM STM … … … … CMPR BC
2016年11月11日

第五章 汇编语言程序设计.ppt

第五章  汇编语言程序设计.ppt

位运算符:>>(位右移),<<(位左移), ~(位非),| (位或) , & (位与), ∧ (位异或) 赋值运算符:= 作为被赋值对象,一般是用VARIABLE伪 指令定义的变量. 复合赋值运算符:+=,-=,*=,/=, <<=,>>=,&=,|=, ∧ =, 复合赋值运算符是执行相应的运算功能, 再执行赋值功能.其中执行运算功能时,被 赋值对象也参与.
则汇编后上述源代码被替换成:
EQU 0x19 . . . MOV Freg,W XORWF 10 BTFSC STATUS,Z GOTO Continue . . . Continue MOVLW 2 Freg
. . .
0x19单元的内容不等于10H时,执行
在上述替换过程中,实参和形参的对应关系 如下: 实参 Freg 10 Continue
伪指令就是"假"指令的意思,它不是单 片机指令系统中的真实指令,其格式也由4部 分组成,每部分之间至少要有一个空格分隔. 符号名 伪指令助记符 操作数 ;注释 其中的符号名通常是代表专用寄存器名, 通用寄存器变量,常数名,标志位或控制位名, 复位矢量或中断矢量的一个字符串.对符号名 的要求类似于前面标号的要求,从一行中的第 一列开始,不能单独一行. 伪指令是程序设计人员向汇编器发出的
(7)MACRO~ EXITM ~ ENDM 宏定义伪指 令 格式:宏名 MACRO 参数表 <程序段> ENDM 说明:宏是一可被调用的指令序列.MACRO 表示宏定义的开始,ENDM用于通知 MPASM汇编程序结束宏定义.定义后的宏 可以在源程序中用宏名调用,通过宏调用可 以把定义过的宏指令序列源程序代码插入到 源程序中.在一个宏定义程序中可以调用另
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档