3-3-汇编伪指令

上传人:小** 文档编号:43355029 上传时间:2018-06-05 格式:PPT 页数:95 大小:1.39MB
返回 下载 相关 举报
3-3-汇编伪指令_第1页
第1页 / 共95页
3-3-汇编伪指令_第2页
第2页 / 共95页
3-3-汇编伪指令_第3页
第3页 / 共95页
3-3-汇编伪指令_第4页
第4页 / 共95页
3-3-汇编伪指令_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《3-3-汇编伪指令》由会员分享,可在线阅读,更多相关《3-3-汇编伪指令(95页珍藏版)》请在金锄头文库上搜索。

1、1DSP技术及应用D Digital S Signal P Processor数字信号处理器2DSP汇编伪指令4.3 coff 段4.5 汇编伪指令4.6 宏语言4.7 链接伪指令3汇编语言程序的编辑、汇编和链接过程44.5 汇编伪指令 汇编命令是用来为程序提供数据和控制汇编进程的。 C54x汇编器共有64条汇编命令,根据它们的功能,可以 将汇编命令分成8类: (1)对各种段进行定义的命令。 (2)对常数(数据和存储器)进行初始化的命令。 (3)调整SPC(段寄存器)的指令。 (4)对输出列表文件格式化的命令。 (5)引用其它文件的命令。 (6)控制条件汇编的命令。 (7)在汇编时定义符号的命

2、令。 (8)执行其它功能的命令。5 4.5 4.5 汇编伪指令汇编伪指令 1 1 、段定义伪指令、段定义伪指令 2 2、 常数初始化伪指令常数初始化伪指令 3 3、 段程序计数器定位指令段程序计数器定位指令.align.align 4 4、 输出列表指令输出列表指令6例4-1 编写计算y=a1*x1+a2*x2+a3*x3+a4*x4的汇编源程序 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * * * * * * * * * * *

3、 * * * * * * * * * * * * * * * * * * * * * *.title “example.asm” ;为汇编源程序取名.mmregs ;定义存储器映象寄存器 STACK .usect “STACK”,10h ;分配10h个单元的堆栈空间.bss a,4 ;为系数a分配4个单元的空间.bss x,4 ;为变量x分配4个单元的空间.bss y,1 ;为结果y 分配1个单元的空间.def start ;定义标号start .data ;定义数据代码段 table: .word 1,2,3,4 ;在标号table开始的8个单元中.word 8,6,4,2 ;为这8个单元赋

4、初值7.text ;定义文本代码段 start:STM #0,SWWSR ;软件等待状态寄存器置0,不设等待STM #STACK+10h,SP ;设置堆栈指针初值STM #a,AR1 ;AR1 指向 a的地址RPT #7 ;从程序存储器向数据存储器MVPD table,*AR1+ ;重复传送 8个数据CALL SUM ;调用 SUM 实现乘法累加和的子程序 end: B end ;循环等待 SUM:STM #a,AR3 ;将系数a的地址赋给AR3STM #x,AR4 ;将变量x的地址赋给AR3RPTZ A,#3 ;将A清0,并重复执行下条指令4次MAC *AR3+,*AR4+,A ;执行乘法并

5、累加,结果放在A中STL A,y ;将A的低字内容送结果单元yRET ;结束子程序 .end ;结束全部程序81、段(sections)的概念 特点定义 分段的优点:在目标文件中将放置程 序、数据、变量的代码分开,便于在链 接时作为一个单独的部分分配存储器。 由于大多数系统都有好几种形式的存储 器,通过对各个段重新定位,可以使目 标存储器得到更为有效的利用。 段是在存储储器图图中占据相 邻邻空间间的代码码或数据块块 。 一个目标标文件中的每一个段 都是分开的和不相同的。 目标文件中的段与目标存 储器之间的关系92汇编器对段的处理 用于定义段 的汇编命令.bss 未初始化段 .usect 未初始

6、化自定义段 .text 已初始化程序正文段 .data 已初始化程序数据段 .sect 已初始化自定义段如果汇编语汇编语 言程序中一个段命令都 没有用,那么汇编汇编 器把程序中的内 容都汇编汇编 到.text段。注意10(1)未初始化段 未初始化段由.bss和.usect命令建立 位置为变量保留存储储器空间间作用通常将它们们定位到RAM区 使用方法 .bss 符号 , 字数 符号 .usect “段名”,字数对应于保 留的存储 空间第一 个字的变 量名称 程序员为员为 自定义义未 初始化段起的名字 11例4-1 编写计算y=a1*x1+a2*x2+a3*x3+a4*x4的汇编源程序 * * *

7、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.title “example.asm” ;为汇编源程序取名.mmregs ;定义存储器映象寄存器 STACK .usect “STACK”,10h ;分配10h个单元的堆栈空间.bss a,4 ;为系数a分配4个单元的空间.bss x,4 ;为变量x分配4个单元的空间.

8、bss y,1 ;为结果y 分配1个单元的空间.def start ;定义标号start 12(2)已初始化段 已初始化段是由.text、.data的.sect命令建立 位置包含有可执执行代码码或初始化数据 作用通常将它们们定位到EPROM区 使用方法.text 段起点 .data 段起点 .sect “段名”,段起点 段程序计计 数器(SPC )定义义的 一个起始 值值。 程序员为员为 自定义义已 初始化段起的名字 13例4-1 编写计算y=a1*x1+a2*x2+a3*x3+a4*x4的汇编源程序 * * * * * * * * * * * * * * * * * * * * * * *

9、* * * * * * * * * * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.title “example.asm” ;为汇编源程序取名.mmregs ;定义存储器映象寄存器 STACK .usect “STACK”,10h ;分配10h个单元的堆栈空间.bss a,4 ;为系数a分配4个单元的空间.bss x,4 ;为变量x分配4个单元的空间.bss y,1 ;为结果y 分配1个单元的空间.def start ;定义标号st

10、art .data ;定义数据代码段 table: .word 1,2,3,4 ;在标号table开始的8个单元中.word 8,6,4,2 ;为这8个单元赋初值14(3)段程序计数器(SPC) 编址 过程表示一个程序代码段或数据段的当前地址 作用一开始,汇编器将每个SPC置0。当汇编 器将程序代码或数据加到一个段内时, 相应的SPC就增加。如果再继续对某个 段汇编,则相应的SPC就在先前的数值 上继续增加。链接器在链接时要对每个 段进行重新定位。15(4).段定义举例列表文件 TMS320C54x COFF Assembler Version 3.70 Tue Oct 19 12:42:59

11、 2004 Copyright (c) 1996-2001 Texas Instruments Incorporated example.asm PAGE 11 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 *3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *5 .mmregs ;定义存储器映象寄存器6 000000 STACK .usect “STACK“,10h ;分配10个单元的堆栈空间7 000000 .bss a,4 ;为系数a分配4个单元的空间8 000004 .bss x,4 ;为变量x分配4个单元的空间9 000008 .bss y,1 ;为结果y 分配1个单元的空间10 .global _c_int00 ;定义标号列表文件中包括源程序语语句和目标标代 码码 Field 1源程序语句的行 号,用十进制数表示 Field 2段程序计计数器(SPC) ,用十六进进制数表示 Field 4: 源程序语 句 1611 000000 .data ;定义数据代码段12 000000 0001 tabl

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号