DSP基于CCS向量文件编写和汇编语言设计实验.docx

上传人:b****6 文档编号:16596648 上传时间:2023-07-15 格式:DOCX 页数:22 大小:147.97KB
下载 相关 举报
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第1页
第1页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第2页
第2页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第3页
第3页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第4页
第4页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第5页
第5页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第6页
第6页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第7页
第7页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第8页
第8页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第9页
第9页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第10页
第10页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第11页
第11页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第12页
第12页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第13页
第13页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第14页
第14页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第15页
第15页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第16页
第16页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第17页
第17页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第18页
第18页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第19页
第19页 / 共22页
DSP基于CCS向量文件编写和汇编语言设计实验.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DSP基于CCS向量文件编写和汇编语言设计实验.docx

《DSP基于CCS向量文件编写和汇编语言设计实验.docx》由会员分享,可在线阅读,更多相关《DSP基于CCS向量文件编写和汇编语言设计实验.docx(22页珍藏版)》请在冰点文库上搜索。

DSP基于CCS向量文件编写和汇编语言设计实验.docx

DSP基于CCS向量文件编写和汇编语言设计实验

实验三、向量文件的编写及多个文件的链接

一、实验目的

1.编写复位向量文件vectors.asm。

2.多个文件的链接。

3.编写复位和中断向量文件。

4.仿真外部中断。

二、实验条件

Iab3.asm和Iab3.cmd文件

三、实验步骤

1.双击桌面上CCS2图标,启动CCS集成开发环境。

2.建立新工程,并将Iab3.asm和Iab3.cmd添加入工程。

3.按照3.6.4节中的例子,编写复位向量文件vectors.asm并将该文件添加入工程。

4.为了将Iab3和vectors两个文件相链接,对Iab3.asm和

Iab3.cmd文件进行必要的修改。

5.用菜单命令对工程的所有文件进行汇编、编译、链接生成输出文件。

6.加载程序并单步执行Iab3.out文件,仔细观察复位向量的作用。

7.参看教材4.4节中的内容,仿真外部中断INT2:

1在Iab3.asm中,增加一段中断服务子程序INT_2.dat,其内

容将累加器A变负

2修改Iab3.asm,开放INT2中断。

3修改vectors.asm,增加INT2中断向量。

4编写仿真外部中断用的数据文件,文件名为INT_2.dat,每隔

100个时钟周期向CPU发出一次中断请求,直到仿真结束。

5对工程中所有文件重新汇编、编译、链接生成新的输出文件。

6执行前,从Tool菜单中选择,用鼠标选中要连接PinName再按connect按钮,选择输入文件INT_2与INT2引脚相连,单击打开按钮。

7加载程序,并利用单步方式执行程序,注意观察中断向量在程序执行过程中的作用。

四、实验程序

************************************************

lab3.asm

y=a1*x1+a2*x2+a3*x3+a4*x4

************************************************

.def

INT_2

.data

;定义数据段

.mmregs

table:

.word

123,4

;为标号table开始的

.word

8,6,4,2

;8个存储单元赋初值

.text

;定义文本段

start:

STM

#STACK+10h,SP

;设置堆栈指针

STM

#table,AR1

;AR1指向table的首地址

STM

#x,AR2

;AR2指向x的首地址

STM

#7,AR0

;将AR0赋7

LD

#40h,A

;将立即数40h加载到A累加

as.器

STM

#0,SWWSR

;SWWSR置0,不插等待周期

RSBX

INTM

;开放全部可屏蔽中断

STM

#04h,IMR

;开放INT2中断

loop:

LD

*AR1+,A

;将AR1中数据加载到A累加

as.器

STL

A,*AR2+;将A低16位送往AR2寄存器所指地

BANZ

loop,*AR0-

;重复执行7次

CALL

SUM

;调用SUM子程序

end:

B

end

;循环等待

SUM:

STM

#a,AR3;AR3指向a的首地址

STM

#x,AR4;AR4指向x的首地址

RPTZ

A,#3;将A清零,重复执行下条指令3

 

MAC

*AR3+,*AR4+,A相乘累加存入A累加器

STL

A,*AR2将A的低16位送往AR2所指向的地址

RET

;子程序返回

INT_2:

NEGA

;将A累加器变负

RETE

;开中断,从中断返回

.end

;程序结束

五、实验现象

每隔100个时钟周期来一次中断,累加器A中的数值变负

 

六、实验体会

学习了如何设置中断,及源程序和向量文件的链接,编写仿真外

部中断的数据文件,更直观的认识到程序是如何执行中断的

实验四汇编语言程序设计

一、实验目的

通过实验熟悉指令系统,初步掌握汇编语言程序设计的基本方法和技巧。

二、实验条件

在第五章基础上进行。

三、实验内容

5

萨二〉aixi

1•编写实验r小数乘法累加的汇编语言程序Iab4a.asm。

其中a二{0.1,020.3,0.4,0.5卜

2.将第五章例9和例10组合成一个程序Iab4b.asm,实现对一个

数组x[5]={1000h,2000h,3000h,5000h}进行初始化,并利用块重复操作指令将该数组每个元素加一。

3.将第五章中的例20或例21,分别编写成完整的除法运算程序

Iab4c1.asm禾口Iab4c2.asm。

4.编写实现两个64位数相加的汇编语言程序Iab4d.asm

5•在设计好上述每一个汇编语言程序的同时,均应设计相应的链

接命令文件Iab4x.cmd,并利用CCS进行调试

四、实验程序

Iab4a

*****************************************************

Iab4a.asm

y=a1*x1+a2*x2+a3*x3+a4*x4+a5*x5

*****************************************************

.title"Iab4a.asm"

.mmregs

.data

table:

.word1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10

;为标号table开始的10个存储单元赋初值。

.word1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10

;分别是0.1,0.2,0.3,0.4,0.5,0.1,0.2,0.3,0.4,0.5

start:

SSBX

FRCT

;将小数方式位状态寄存器置一

STM

#STACK+10h,SP;设置堆栈指针

STM

#table,AR1

;AR1指向table的首地址

STM

#x,AR2

;AR2指向x的首地址

STM

#9,AR0

LD

#0,A

loop:

LD

*AR1+,A

;将AR1中数据加载到A累加

STL

A,*AR2+;

将A低16位送往AR2寄存器所指地

BANZ

loop,*AR0-

;重复执行9次

CALL

SUM

;调用SUM子程序

end:

B

end

;循环等待

SUM:

STM

#a,AR3

;AR3指向a的首地址

STM

#x,AR4

;AR4指向x的首地址

RPTZ

A,#4

;将A清零,重复执行下条指令4

MAC

*AR3+,*AR4+,A相乘累加存入A累加器

STH

A,y

;将A的高16位送往y

RET

;子程序返回

.end

;程序结束

Iab4b

.title"Iab4b.asm"

.mmregs

;定义存储器映像寄存器

;给x分配5个存储单元

.bss

x,5

.def

start

;疋义标号start

.data

;定义数据段

table

.word

1000h,2000h,3000h,4000h,5000h

;为标

:

号table开始的

5个存储单元赋初值。

.text

;定义文本段

start:

STM

#x,AR2

;AR2指向x的首地址

RPT

#4

;重复下条指令4次

MVPDtable,*AR2+

;重复传递共5个数据

next:

LD

#1,16,B

;将1左移16位加载到B累加器

STM

#4,BRC

;将块重复计数器赋值为4

STM

#x,AR4

;AR4指向x的首地址

RPTB

end-1

;循环执行下面语句,end-1为结束地

ADD

*AR4,16,B,A

将AR4中数据左移16位加B赋给A

STH

A,*AR4+;

将A高16位送往AR4寄存器所指地

end:

B

end

;循环等待

.end

;程序结束

Iab4c1

・**************

;*lab4c1.ASM

・**************

.def

start

STACK

.usect

"STACK",100;给堆栈分配

.bss

num,1

.bss

den,1

.bss

quot,1

.data

table:

.word

-128;4*32768/10

;为标号

table开始的4个存储单元赋初值

.word

1024;-8*32768/10

.title"lab4c1.asm"

100个存储单

;分别是-128,0.4,1024,-0.8

.text

start:

STM#num,AR1

RPT#1;重复执行下条语句1次

MVPDtable,*AR1+;传送2个数据至分子、分母单元

LDden,16,A;将分母移到A累加器(31-16)

MPYAnum

;(num)*(A(32-16))移到B,获取商的符号

ABSA

STHA,den

LDnum,16,A

ABSA

RPT#14

SUBCden,A

XC1,BLT

NEGA

STLA,quot

done:

Bdone

;分母取绝对值

;分母绝对值存回原处

;分子移到A(32-16)

;分子取绝对值

;15次减法循环,完成除法

;有条件减法

;如果B<0(商是负数),则需要变

;将A累加器变负

;将A的低16位送往quot

.end

Iab4c2

・**************

J

;*lab4c2.ASM

・**************

.title"lab4c2.asm"

.defstart

 

.bssnum,1

.bssden,1

.bss

quot,1

.data

table:

.word16384;66*32768/100

;为标号table开始的4个存储单元赋初值

.word512;-33*32768/100

分别是16384,0.66,512,

-0.33

.text

STM

#num,AR1

RPT

#1

;重复执行下条语句1次

MVPD

table,*AR1+

;传送2个数据至分子、分母单元

LD

den,16,A

;将分母移到A累加器(31-16)

MPYA

num

;(num)*

(A(32-16))移到B,获取商的符号

ABS

A

;分母取绝对值

STH

A,den

;分母绝对值存回原处

LD

num,A

;分子移到A

ABS

A

;分子取绝对值

SUB

den,A

;从累加器A中减去den中数据

start:

BCnext,ALT

;条件分支转移,A<0,则执行next子程序

ADD

den,A

;在累加器A中加上den中数据

RPT

#15

;重复下条语句15次

B

next1

;执行next1子程序

next:

LD

num,16,A

;分子移到A(32-16)

ABS

A

;分子取绝对值

RPT

#14

;重复下条语句14次

SUBC

den,A

;有条件减法

nextl:

XC

1,BLT

;如果B<0(商是负数),则需要变

NEG

A

;将A累加器变负

STL

A,quot

;将A的低16位送往quot

done:

B

done

.end

Iab4d

;lab4d.asm

.title

"lab4d.asm"

.def

start

table:

.word

4000h

;x3

.word

OfOOOh

;x2

.word

OfOOOh

;x1

.word

OfOOOh

;x0

.word

4000h

;y3

.word

3000h

;y2

.word

2000h

;y1

.word

1000h

;y0

.bss

x,4

.bss

y,4

.bss

乙4

.text

start:

STM

#x,AR1

;AR1指向x的首地址

RPT

#7

;重复执行下条语句7次

MVPDtable,*AR1+

;将table中的8个数据送往x,y

LD

#x,DP

;将x的立即数加载到页指针

DLD

x+2,A

;将x的后两个数据合并加载到A

DADDy+2,A

;C16=1,将y高低位和A高低位分别相加

DLD

x,B

;将x的前两个数据合并加载到B

 

ADDCy+1,B;将y的中间两个数据合并与B带进位相加

ADD

y,16,B

;将y第一个数据左移

16位与B相加

STL

A,z+3

;将A的低位赋给z的

(0~15)

STH

A,z+2

;将A的高位赋给z的

(16~31)

STL

B,z+1

;将B的低位赋给z的

(32~47)

STH

B,z

;将B的高位赋给z的

(48~63)

B

here

.end

五、实验结果

Lab4a

OuOO&OQOGA

0^0000

OkOOOO

C>mO€00

oxoooooosn

0x0000

OxOdOO

0x0000

OxOOOOOOCO

■«・

=

OxOOOOOO^O

OxOCCC

0x1^99

0x2<€€

0^000"0

0X3333

OmIO-OO

03C0000004S

OxOCCC

0X1»99

0x2««6

OacOO&OOOCG

0x3333

0x4000

03COOOOOO€A

7

0x00^0

Ox4CCS

0tcO<5O0OO-€B

nd,s-nd

OacDOOOQO^B

0XDOOQ

OXQOOO

OXQCOO

DsOOODOC«E

O3ff0O"OO

OkO&OO

0x0000

0x00000071

0x0000

0x0000

□xOCOO

O3cO0^OOOT4

Dx.00OO

OmO^OO

0>c0000

OmOO^OOOT?

DxOOOO

OxO^OD

OxOOCO

0X00^000TA

0x0000

OMOO0O

^XOCOO

owoooooo^r

OkOOOO

0x0000

f)wOCJOO

oacDCOOQoeo

STACK

OacOG&OOOSO

OmOOOO

OkOOOO

OscOCOO

•*

fi-^nnnin

A

ftvH^firi

z

丿回1叫1

BBit-y|jTlat〒|

uKyj

Lab4b

IdsGO

d

0x00000060

xrbss

$-bss

O曲口008"

OitlOOL

OjtSOOl

Oit^OOl

>1

OKOOOOOQg^

QJC4O0L

QJC4OC1

-

0x0000006S

_*Eid,e

nd

zd

Oj£OOCOOO€»

OjicOOOO

OjtOOOO

Oi&COOO

□Kjoooooee

OjeOOOO

OjcOOOO

OxCODO

0x0ODO00€B

0x0000

OjcOOOO

DxOCig

OjmdDOOOOOCE

0x0000

0x0000

0xCQ0O

0x00000071

oxoooa

0x0000

OxCODO

CkO0000074

owoona

OxCOOO

0x0000

Ox€0000077

OjlOOOO

OjtOOOO

0xOOOO

0XSOOOOO7A

OmOOOO

OxCOOC

0x0000

OkCOOOOOTD

OsrOOOO

OkCOOO

0wOOOO

oxooocooe^

OjLOOQD

ojacood

OXCOOO

OxOOOOOOS^

OmOOOD

OkOOOC

oxoaoo

Ox^OOOOOtC

0x0000

OkOOOO

Om-COOO

QXQQQOQQS?

0X0口i□口

QXOQDQ

QKQ口口口

0x000000BC

OxOCOD

0x0000

OkOOOO

Om^OOOOOSF

OxODOO

OkOOOQ

OkCOOO

"T

0x^0000092

OkOCOO

0x0000

OwCOOD

M

已ennnnnet

nTnnnn^

n

Pi停門门

」菅晦i

6Bii*|Data仃|

Lab4c1

Lab4c2

jOxfiO

OxOOOOOOGO

tlushfbi

5sr„bss

X

&xOOOOOOGG

0jk4OOO

DkOOCODOEI

den

DxOOOOOOEL

OirOSOQ

Dm:

OOOOOQ£2

EJUOt

OmO0000062

OjtOOZO

oxoocoocfia

_jandfend

OxOOOOOOGS

oxoooa

OkOOOO

0cx€000

OxOOCOOOG€

0x0000

0x0000

0x0000

OxOOOOOO£»

0x0000

O-xOOOO

0x0000

0x000000GC

0x0000

0x0000

0x0000

&X0000006F

OjcOOOO

OxOCOO

CxCOOO

0x00000072

OjeOOOC

OicD匚DO

OjcCODO

&X0000007&

OjeOODC

OjcOl00

OjcOCOC

GxOOOOOOTS

0^0000

OjcOCDC'

OjhlCQDC

DkOOCODOIb

OjxOOGO

OjcDCOD

OjcCODO

OxOOCODfl7E

0^0000

OjcDOOO

OKOOoocaeo

STACK

OmOOCODO^O

OjeOOOO

OkDCOO

O-kOOOO

T-

oxooooooes

OjcOOOO

Ox0C0O

OjpOOOO

ftvrtmnririo-c

Hjrnnn

nv^nrbnfi

ftv/^nnn

|He^1

6EitTpJataT

Lab4d

OjlOOOOODGO

Hr_-t]S3

X

Djtoocooaei?

0X4OOQ

DjeFODO

CjhlFQDO

0x00000053

OxFOOO

&XOOCOOOG4

y

OxOOOOOOn4

0x4000

Ojc3COO

Ojt^OOO

&X.OOOOOOS7

OjkIOOO

&xOOOOOOG£

z

DkOOCODOG^

OjcEODI

DjcZCDL

OjcIODI

OmOOCJODOEE

0^0000

0x0000006C

_end.

end

GxOOOOOOGC

0x0000

OkOOOO

OkOCDO

OxOOOOaOGF

0x0000

0x0000

0x0000

0x00000072

OjcOOOO

OjcOOOD

OxCOOO

OitOOOODOIS.

OxDOOO

OjcCODC

0^00000078

OaOQOO

QxQQOj

iJjlCCDC

DmOOOOOOVB

DjeOOOO

DjeOOOO

OjcOOOO

0x000000TE

0x0000

OkOCOO

O-xCOOO

OxOOCOOOBL

0x0000

0x0000

0x0000

0x00000064

0x0000

0x0000

0x0000

«>xOOCOOO07

OjtOOOO

OjcOOOD

OxCODO

*

nvnnriA

z

J旨|H*论贺韭二二

六、实验体会

实验熟悉了小数运算,块重复操作,当被除数>(<)除数时的除

法运算,及两个64位数相加如何处理进位问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2