- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计实验
实验一 程序的控制与转移
一、实验目的
1、掌握条件算符的使用。
2、掌握循环操作指令(BNAZ)
二、实验设备
计算机、DSP实验箱、ccs5000软件。
三、实验内容:
编写程序,实现计算的值。
四、实验步骤
1、用仿真器将计算机与DSP实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。
2、新建一个项目:点击Project-New,将项目命名为example2,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。
3、新建一个源文件:点击File-New-Source File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example2),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为example2.asm 。
4、在项目中添加源文件:在新建了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example2.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example2.asm 文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击example2.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
.title example2.asm
.mmregs
STACK .usect STACK,10H ;堆栈的设置
.bss x,5 ;为变量分配6 个字的存储空间
.bss y,1
.def _c_int00;start
.data
table: .word 10,20,3,4,5 ;x1,x2,x3,x4,x5
.text
;start: STM #0,SWWSR ;插入0 个等待状态
_c_int00: STM #0,SWWSR
STM #STACK+10H,sp ;设置堆栈指针
STM #x,AR1 ;AR1指向x
RPT #4 ;下一条被重复执行5 遍
MVPD table,*AR1+ ;把程序存储器中的数据传送到数据存储器
LD #0,A ;A清零
CALL SUM ;调用求和函数
end: B end
SUM: STM #x,AR3 ;AR3指向x
STM #4,AR2 ;AR2=4
loop: ADD *AR3+,A ;*AR3+A--A,然后AR3+
BANZ loop,*AR2- ;如果AR2 的值不为0,则跳到loop 处;
;否则执行下一条指令
STL A,*(y) ;把A 的低16 位赋给变量y
RET
.end
提示:
(1)源代码的书写有一定的格式,初学者往往容易忽视。每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。指令区在标号区之后,以空格或TAB 格开。如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶格开始。
(2)一般区分大小写,除非加编译参数忽略大小写。
(3)标点符号有时不注意会打成中文全角版本号导致错误。
6、编写链接配置文件:
只有汇编源程序是不够的,一个完整的DSP 程序至少包含三个部分:主程序、中断向量表、链接配置文件(*.cmd)。这里先介绍一下链接配置文件。
链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:1.存贮器的分配 2.标明程序入口。
由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考与本书配套的相应例程来完成:
/*example2.cmd */
vectors.obj /*中断向量的目标文件*/
example2.obj /*产生目标文件*/
-o example2.out /*产生可执行下载文件,文件名可以根据不同项目而定*/
-m example2.map /*产生存储器映射文件,文件名可以根据不同项目而定 */
MEMORY
{
PAGE 0: /*定义程序存贮区*/
EPROG: origin = 0x4000, len = 0x3f80
VECT: origin = 0x7f80, len = 0x80
PAGE 1: /*定义数据存贮区*/
SYSREGS: origin = 0x00,
文档评论(0)