汇编语言程序设计《TMS320C54XDSP结构、原理及应用》培训课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.word 1
.word 2
label2 .word 3
X
.set 50h
goodsym1 .set 100h+X
goodsym2 .set $
goodsym3 .set label1
goodsym4 .set label2-label1
无效定义的表达式举例:
.global Y
badsym1 .set Y
十六进制 浮点数
字符常数 字符串
07.10.2020
举例
10011000B,01111010b(最多16位) 226q,1001Q,0124(多达6位) 略
0DH,123H,0X89,0x0D(多达4位) 1.786e9(浮点数仅在C语言使用)
‘a’,’b’… “example”
湖南理工学院 胡文静 博士
4
标号
类型
含义
标号 局部标号 符号常数
符号地址(可作为.global,.ref,.def的操作数)
$n, name? (临时性的标 号,.newblock,.sect,.text,.data,.include,.copy取消)
.set, .struct/.tag/.endstruct (提高可读性)
预定义符号常数
$, 寄存器符号, 其他…
替代符号
符号替代变量, .asg “high”, AR2(可重新定义)
07.10.2020
湖南理工学院 胡文静 博士
5
举例
例:符号常数定义
例:局部标号
N
.set 512
Label1:
buffer .set 4*N
nzg1 .set 1
nzg2 .set 2
nzg3 .set 3
badsym2 .set 50h+Y
badsym3 .set 50h+Z
Z
.set 60h
可重新定位符号及合法表达式 详见表5.1.2(P146)
07.10.2020
湖南理工学院 胡文静 博士
8
有效定义表达式
举例:可重定位符号和绝对符号
.global extern_1
举例:判断下列表达式的合法性
intern_1: .word “D”
C54x具有丰富的程序控制指令,以完成分支操作、条件 操作及循环操作等。
◆ 分支操作 1. 分支转移
分类
无条件 分支转移
条件 分支转移
远程 分支转移
指令
说明
B[D] BACC[D] BC[D] BANG[D] FB[D]
用该指令指定的地址加载PC 用累加器的低16位指定的地址加载PC 若满足指令给定条件,用该指令指定的地址加载PC 若当前选择辅助寄存器不等于0,用该指令指定的地址加载PC 用该指令指定的地址加载PC和XPC
07.10.2020
湖南理工学院 胡文静 博士
6
汇编语言表达式
表达式—由运算符、常数、符号等组成的一个式子;取值范围为-
32767~32768;优先级和结合性。
序号 1 2 3 4 5 6 7 8 9 10 11
符号 +-~! */%
+^
<< >> < <= > >= != =
& ∧ |
运算操作 取正、取负、按位求补、逻辑负 乘法、除法、求模 加法、减法 指数 左移、右移 小于、小于等于 大于、大于等于 不等于、等于 按位与运算 按位异或运算 按位或运算
LD
#0DBF8H, B
STM
#length, AR1 ;length为已分配堆栈长度
MVMM SP, AR4
loop: STL
B, *AR4-
BANZ
loop, *AR1-
② 运行程序;
③ 检查堆栈区的内容,从而确定程序实际使用的堆栈单元个数。
07.10.2020
湖南理工学院 胡文静 博士
10
控制程序
item .struct
.int nzg1
$1
.int nzg2
$2
.int nzg3
tang .endstruct
array .tag
item
.bss
array, tang*N $1
LD SUB BC LD B
ADDRA, A ADDRB, A $1, ALT ADDRB, A $2
LD ADDRA, A ADD ADDRC, A .newblock BC $1, ALT STL A, ADDRC NOP
LD extern_1-10, B
LAB1: .set 2
LD 10-extern_1, B
intern_2 .word 3
LD extern_1/10, B
LD #LAB1+((5+4)*3), A
LD intern_1+extern_1, B
LD #LAB1+3+(4*7), A
07.10.2020
FBACC[D] 用累加器的低23位指定的地址加载PC和XPC
【例】5.3.1பைடு நூலகம்分支转移
07.10.2020
湖南理工学院 胡文静 博士
11
分支操作
2. 子程调用
湖南理工学院 胡文静 博士
9
堆栈操作
◆ 堆栈设置: size .set stack .usect
STM
120
;在RAM区开辟堆栈
“STACK”, size ;区,共120单元;
#stack+size, SP ;将堆栈空间的高地址送堆
;栈指针SP
◆ 堆栈区大小的确定
① 先开辟较大的堆栈区,用已知数填充;
助记符—不能从第一列开始,否则被认为是标号;指令助 记符一般用大写;汇编伪指令一般为小写,且以“.”开头。
操作数—操作数列表,可以是常数、符号或常数与符号构 成的表达式。操作数间需用“,”号隔开;三种前缀形式: #, *, @。
07.10.2020
湖南理工学院 胡文静 博士
3
常数与字符串
数据类型 二进制 八进制 十进制
第六章 汇编语言程序设计
主讲:胡文静 博士
2
概述
汇编语言源程序格式:
助记符指令一般包含4个部分,其一般组成形式为:
➢ [标号][:] 助记符 [操作数] [;注释]
书写格式规则详见P138,①②③④⑤⑥!
标号—所有汇编指令和大多数汇编伪指令前面都可以带有 标号;必须从第一列开始书写;最多32个字符;由字母、数 字、下划线和$组成,且不能以数字开头;分大小写;冒号 不属于标号名;没有标号的源语句第一列必须为空格、星号 或分号。
求值顺序 从右至左 从左至右 从左至右 从左到右 从左至右 从左至右 从左至右 从左至右 从左至右 从左至右 从左至右
07.10.2020
湖南理工学院 胡文静 博士
7
有效定义表达式:
有效定义表达式—表达式中的符号或汇编时间常数在表达式之前
就已经被定义。
有效定义的表达式举例:
.data
label1 .word 0