[工学]第5章 汇编语言程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
符号地址(可作为.global,.ref,.def的操作数)
$n, name? (临时性的标 号,.newblock,.sect,.text,.data,.include,.copy取消)
.set, .struct/.tag/.endstruct (提高可读性) $, 寄存器符号, 其他… 符号替代变量, .asg “high”, AR2(可重新定义)
作为堆栈的栈底
在数据RAM空间开辟一个堆栈区。 设置好堆栈后,就可以使用堆栈了,如: CALL pmad ;(SP)-1 →SP,(PC)+ 2→TOS,pmad→PC 设置堆栈指针, # stack + size→SP。 RET ;(TOS)→PC,(SP)+1→SP
01:52:24
10
第5章 TMS320C54x汇编语言程序设计
替代符号
例如:将常数值18赋给符号bei_hua。
wk.baidu.com
bei_hua
LD
.set .set ARl
AuxRl,SP
18
# bei_hua,A
AuxRl
01:52:24
MVMM
举例
例:符号常数定义 例:局部标号 N .set 512 Label1: buffer .set 4*N nzg1 .set 1 nzg2 .set 2 nzg3 .set 3 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
226q,1001Q,0124(多达6位) (整数) 0DH,123H,0X89,0x0D(多达4位) 1.786e9(浮点数仅在C语言使用)
3
二进制
八进制 十进制 十六进制 浮点数
字符常数
字符串
‘a’,’b’…
“example”
01:52:24
标号
类型 标号 局部标号 符号常数
预定义符号常数
4
含义
1. 分支转移程序 通过传送控制到程序存储器的其他位置,分支转 分 类 指 令 说 明 移会中断连续的指令流。
B[D] 用该指令指定的地址加载PC 无条件 分支转移指令可以改写PC值,使程序改变流向。 分支转移 BACC[D] 用累加器的低16位指定的地址加载PC
01:52:24
9
第5章 TMS320C54x汇编语言程序设计
5.2 堆栈的使用方法
1. 堆栈的设置
若程序中要使用堆栈,必须先进行设置,如:
size
stack
.set
.usect STM
120
“STACK”,size
在RAM中定义一个STACK 的保留空间,共120个单元
# stack + size,SP 保留区的高地址赋给SP,
7
无效定义的表达式举例: .global Y badsym1 .set Y badsym2 .set 50h+Y badsym3 .set 50h+Z Z .set 60h
01:52:24
8
第5章 TMS320C54x汇编语言程序设计
5.2 堆栈的使用方法
当程序调用中断服务程序或子程序时,需要将 程序计数器PC的值和一些重要的寄存器值进行压栈 保护,以便程序返回时能从间断处继续执行。 ’C54x提供一个用16位堆栈指针SP寻址的软件 堆栈。 当向堆栈中压入数据时,堆栈是从高地址向低 地址方向填入,堆栈指针SP先减1,然后将数据压入 堆栈。 当从堆栈中弹出数据时。数据先从堆栈中弹出, 然后堆栈指针SP加1。
◆ 助记符— 不能从第一列开始,否则被认为是标号;指令助记符一般用大
写;汇编伪指令一般为小写,且以“.”开头。
◆ 操作数—操作数列表,可以是常数、符号或常数与符号构成的表达式。操
作数间需用“,”号隔开;三种前缀形式:#, *, @。
01:52:24
常数与字符串
数据类型 举例
10011000B,01111010b(最多16位)
6
01:52:24
有效定义表达式:
有效定义表达式—表达式中的符号或汇编时间常数在表达式之前
就已经被定义。
有效定义的表达式举例: .data label1 .word 0 .word 1 .word 2 label2 .word 3 X .set 50h goodsym1 .set 100h+X goodsym2 .set $ goodsym3 .set label1 goodsym4 .set label2-label1
5
LD ADDRA, A ADD ADDRC, A .newblock BC $1, ALT STL A, ADDRC NOP
01:52:24
汇编语言表达式
表达式—由运算符、常数、符号等组成的一个式子;取值范围为
-32768~32767;优先级和结合性。
序号 1 2 3 4 5 6 7 8 9 10 11 符 号 +-~! */% + ^ << >> < <= > >= != = & ∧ | 运算操作 取正、取负、按位求补、逻辑负 乘法、除法、求模 加法、减法 指数 左移、右移 小于、小于等于 大于、大于等于 不等于、等于 按位与运算 按位异或运算 按位或运算 求值顺序 从右至左 从左至右 从左至右 从左到右 从左至右 从左至右 从左至右 从左至右 从左至右 从左至右 从左至右
5.3 控制程序
’C54x具有丰富的程序控制指令,利用这些指令 可以执行分支转移、子程序调用、子程序返回,条 件执行以及循环等控制操作。
5.3.1 分支操作程序
分支转移程序 子程序调用 子程序返回 条件操作程序
01:52:24
11
第5章 TMS320C54x汇编语言程序设计
5.3.1 分支操作程序
第五章 汇编语言程序设计
概述
汇编语言源程序格式: 助记符指令一般包含4个部分,其一般组成形式为: [标号][:] 助记符 [操作数] [;注释]
2
书写格式规则详见P138,①②③④⑤⑥!
◆ 标号—所有汇编指令和大多数汇编伪指令前面都可以带有标号;必须从第
一列开始书写;最多32个字符;由字母、数字、下划线和$组成,且不能以数字 开头;分大小写;冒号不属于标号名;没有标号的源语句第一列必须为空格、星 号或分号。
相关文档
最新文档