实验三 DSP汇编语言基本程序设计1
- 格式:docx
- 大小:461.71 KB
- 文档页数:10
DSP基本算法源程序(汇编语言)DSP基本算法源程序Example1实验程序:****************************************** 计算y=mx+b ******************************************.title "example1.asm".mmregsSTACK .usect "STACK",10H ;堆栈的设置.bss m,1 ;为变量分配4个字的存储空间.bss x,1.bss b,1.bss y,1.def start.datatable: .word 3,15,20 ;m,x,b.textstart:STM #0,SWWSR ;插入0个等待状态STM #STACK+10H,SP ;设置堆栈指针STM #m,AR1 ;AR1指向mRPT #2 ;把下一条指令重复执行3遍MVPD table,*AR1+ ;把程序存储器中的数据转移到数据存储器CALL SUend: B endSU: LD *(m),TMPY *(x),AADD *(b),ASTL A,*(y)RET.end/*vectors.asm*/.title "vectors.asm".ref start.sect ".vectors"B start.end/*example1.cmd*/vectors.objexample1.obj-o example1.out-m example1.map-estartMEMORY{PAGE 0:EPROM:org=00090H len=0F70H VECS: org=00080H len=0010H PAGE 1:SPRAM:org=1000H len=1000H DARAM:org=2000H len=2000H }SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SPRAM PAGE 1STK :>DARAM PAGE 1.vectors:>VECS PAGE 0}Example2实验程序:****************************************** 计算y=x1*a1+x2*a2 ******************************************.title "example2.asm".mmregsSTACK .usect "STACK",10H ;堆栈的设置.bss x1,1 ;为变量分配5个字的存储空间.bss x2,1.bss a1,1.bss a2,1.bss y,1.def start.datatable: .word 3,5,15,20 ;x1,x2,a1,a2.textstart:STM #0,SWWSR ;插入0个等待状态STM #STACK+10H,SP ;设置堆栈指针STM #x1,AR1 ;AR1指向x1RPT #3 ;移动4个数据MVPD table,*AR1+ ;把数据从数据存储器存入程序存储器CALL SUMend: B endSUM: LD *(x1),TMPY *(a1),BLD *(x2),TMAC *(a2),BSTL B,*(y)STH B,*(y+1)RET .end/*vectors.asm*/.title "vectors.asm" .ref start.sect ".vectors"B start.end/*example2.cmd*/vectors.objexample2.obj -o example2.out-m example2.map-estart MEMORY {PAGE 0:EPROM:org=0090H len=0F70HVECS: org=0080H len=0010HPAGE 1:SPRAM:org=1000H len=1000HDARAM:org=2000H len=2000H}SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SPRAM PAGE 1STACK :>DARAM PAGE 1.vectors:>VECS PAGE 0 }example3实验程序:******************************************** ** 计算 * ********************************************.title "example3.asm".mmregs STACK .usect "STACK",10H ;堆栈的设置.bss a,4;为变量分配9个字的存储空间41i i i y a x ==∑.bss x,4.bss y,1.def start.datatable: .word 1,5,3,4 ;a1,a2,a3,a4.word 8,6,7,2 ;x1,x2,x3,x4.textstart:STM #0,SWWSR ;插入0个等待状态STM #STACK+10H,SP ;设置堆栈指针STM #a,AR1RPT #7MVPD table,*AR1+CALL SUMend: B endSUM: STM #a,AR3STM #x,AR4RPTZ A,#3MAC *AR3+,*AR4+,ASTL A,*(y)RET。
实验二基本算术运算实验一、实验目的:1:通过本实验,熟悉指令系统,初步掌握汇编语言程序设计的基本方法;2.熟悉CCS5000开发环境;3了解DSP54XX的数据格式,4:了解DSP的汇编语言实现算术乘除运算5掌握TMS320C54xxDSP程序空间及数据空间的分配;6.掌握COFF格式文件及配置文件。
二、实验原理DSP 中数据的格式有多种,包括16 位有符号数、16 位无符号数、32 位无符号数、32 位有符号数、32 位浮点数、32 位IEEE 浮点数等各种形式。
由于数据所设置的小数点位置的不同,即使同一类型的数据也会出现不同的数值。
这一点是程序设计中尤其需要注意的地方。
如果采用C 语言编写程序,CCS 会自动去管理各种数据;但如果采用汇编语言编写程序,对于各种数据的管理将显得尤其麻烦,然而在许多DSP 的应用场合,采用纯汇编编写程序是必须的,所以对于DSP 中数据各种格式的情况最好还是需要了解。
DSP中定点数据表示方法:DSP 表示整数时,有两种格式,有符号数和无符号数,如果作为有符号数表示时,其最高位表示符号,最高位为0 表示其为正数,为1 表示其为负数,最低位表示1,次低位表示2 的1 次方,次高位表示2 的14 次方。
无符号数表示时,最高位仍然作为数值位计算。
例如,有符号数所能够表示的最大的正数为07FFFH,等于32767(10 进制),而0FFFFH表示最大的负数-1;无符号数不能表示负数,其所能够表示的最大的数为0FFFFH,等于十进制数的65535。
DSP表示小数时,其符号和上面整数的表示一样,但是必须注意如何安排小数点的位置,原则上小数点的位置根据程序员的爱好可以安排在任何位置,为了便于数据处理一般安排在最高位后(以下我们仅以小数点在最高位的形式进行讨论),则最高位表示符号位,这样次高位表示0.5,然后是0.25,依次减少一半。
例如:4000H表示小数0.5,1000H表示小数0.25,而0001H表示16位定点DSP表示的最小的小数(有符号)0.000030517578125。
实验五:汇编语言程序设计(1)——定点数除法实验一、实验目的:1.熟悉 C54x 指令系统,掌握常用汇编指令,学习设计程序和算法的技巧。
2.学习用减法和移位指令实现除法运算。
二、实验仪器:安装 CCS3.1(CodeComposerStudioV3.1)的 PC 机。
三、实验内容:编写一个 16 位的定点除法子程序。
四、实验步骤:1.以Simulator的方式启动CCSv3.1。
2.在D:\Lab05_Divisio建立工程,工程名为“div”。
3.新建div.asm,编辑内容如下:4.新建div.cmd,编辑内容如下:5.汇编/编译与连接执行Project→Rebuild All 编译链接.如果未对汇编语言修改编译连接环境(参见实验 2),编译时将出现如下错误:warning:entry point symbol _c_int0 undefined出错原因:缺省时CCS设置项目程序为 C 语言编译,因此当我们编译汇编程序时,要对项目作适当配置。
发现错误要及时修改,修改方法与实验 2 相似:执行Project→Build Options…打开编译选项;在linker 属性页上单击,把Autoinit Model栏选择为 No Autoinitialization;按“确定”保存对配置的修改。
6. 装载程序准备运行调试(1)执行 File→Load Program 装载程序,装载完程序后,CCS把指针指向程序区 0000 处。
为了执行我们的程序代码,需要修改 DSP 的 PC 值;执行ViewÆCPU RegistersÆCPU Registers 打开寄存器窗口;双击窗口中的 PC 标号,CC 弹出修改对话框供修改寄存器;在对话框中输入”start“,程序将处于我们的程序入口点上。
(2)在div.asm窗口中NUMERA变量名上双击鼠标左键,再单击鼠标右键,选择“Add to Watch Window”,在观察窗口中出现 NUMERA 变量,请将窗口中变量名(Name)由“NUMERA”改成“(int*)NUMERA”;“Radix”由“hex”改成“dec”,结果如下:(3)重复(1)的操作,加入 DENOM、QUOT 和 ARIT 四个变量。
DSP汇编实验一新手上路]初学者编写的第一个程序通常是控制XF引脚的变化,然后用示波器测量XF脚波形或观察与相接的LED。
这个程序也常常用来测度一下DSP能否正常工作。
实验1.1最简单的程序:控制XF引脚周期性变化实验目的:通过简单的程序了解DSP程序的结构,熟悉CCS开发环境。
**最简单的程序:TestXF1.asm*循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化*常用于检测DSP是否工作。
*.mmregs;预定义的寄存器.def CodeStart;定义程序入口标记.text;程序区CodeStart:;程序入口SSBX XF;XF置1 RPT#999;重复执行1000次空指令产生延时NOP RSBX XF;XF清0 RPT#999;重复执行1000次空指令产生延时NOP BCodeStart;跳转到程序开头循环执行.end NOP指令执行时间为一个时钟周期,设DSP工作频率是50MHz,可以估算出XF引脚电平的变化频率约为:50M/2000=25kHz在没有示波器的情况下,就要将程序1.1稍作改进,增加延时,用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化,程序如下:实验1.2子程序调用实验目的:学习子程序的调用**TestXF2.asm*对TestXF1.asm稍作改进,用延时子程序设置较长的延时,*可以用试验板上的LED看到XF引脚电平的变化*.mmregs;预定义的寄存器.def CodeStart;定义程序入口标记.text;程序区CodeStart:;程序入口SSBX XF;XF置1 CALL Delay;调用延时程序RSBX XF;XF清0 CALL Delay;调用延时程序B CodeStart;跳转到程序开头循环执行**延时子程序:Delay*用两级减一计数器来延时。
调整AR1和AR2的大小LED闪烁的频率不同*Delay:STM#999,AR1;循环次数1000 LOOP1:STM#4999,AR2;循环次数5000 LOOP2:BANZ LOOP2,*AR2-;如果AR2不等于0,AR2减1,再判断BANZ LOOP1,*AR1-;如果AR1不等于0,AR1减1,跳转到LOOP1 RET.end**注意这种延时方法并不精确,需要精确定时必须用定时器。
实验三汇编语言程序设计(1)一.实验目的:1.熟悉TMS320C54x软件开发过程(小数乘法、加法、乘加结果是否溢出的处理):2.熟悉CCS的调试手段(运行时间、单步运行确定程序的流程和指令作用)和参考资料来理解程序指令功能。
3.由已有资料修改程序二.实验内容1.熟悉书上第5章例17所示的“64位加法和减法运算”,具体工程建立和调试过程如本实验附录所示:步骤(3)、步骤(7)和步骤(8)提到的问题;2.完成书节例19程序的验证,并说明结果;3.完成书节例13、14程序的验证,验证书上所述结论。
三.实验步骤(1)打开“Setup CCS 2 ('C5000)”,配置为“C54xx Simulator”,并保存配置;(2)进入CCS,建立工程,并建立""和""文件(源代码如下),将两文件添加到工程中:1)源代码:.title "".mmregsSTACK .usect "STACK", 10h.bss w3,2,1,2.bss w1,2,1,2.bss x3,2,1,2.bss x1,2,1,2.bss y3,2,1,2.bss y1,2,1,2.bss z3,2,1,2.bss z1,2,1,2.def main.datatable: .long 54210AB2h.long 0A10B1984h.long 0A20C8747h.long 0B50C8743h.long 98410AB8h.long 475624F1h.textmain: STM #w3,AR1RPT #11MVPD table,*AR1+ ;初始化w、x、yLD #0,A ;累加器A清零LD #0,B ;累加器B清零DLD @w1,A ;累加器A装载w低32位,即w1、w0DADD @x1,A ;加上x1、x0,即A=w1w0+x1x0DLD @w3,B ;累加器B装载w高32位,即w3、w2STM #x3,AR3 ;令AR3指向x3ADDC *AR3(1),B ;累加器B加上x2及低32位的进位,即B=w3w2+x2+CADD @x3,16,B ;累加器B加上(x3左移16位),即B=w3w2+x3x2+C,至此求出了w+xDSUB @y1,A ;累加器A减去y1y0,产生借位C',即A=w1w0+x1x0-y1y0DST A,@z1 ;将低32位结果存储,即z1z0=w1w0+x1x0-y1y0STM #y3,AR3 ;令AR3指向y3SUBB *AR3(1),B ;累加器B减去y2及低32位的借位,即B=w3w2+x3x2+C-y2-C'SUB @y3,16,B ;累加器B减去(y3左移16位),即B=w3w2+x3x2+C-y3y2-C',至此求出了w+x-yDST B,@z3 ;将高32位结果存储,即z3z2=w3w2+x3x2+C-y3y2-C'done: B done ;进行死循环2)源代码:-e mainMEMORY{PAGE 0 :EPROM: org=0E000h, len=100hVECS: org=0FF80h, len=04hPAGE 1 :SPRAM: org=0060h, len=20hDARAM: org=0080h, len=100h}SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SPRAM PAGE 1STACK :>DARAM PAGE 1.vectors :>VECS PAGE 0}(3)按图1中的“Rebuild All”编译工程,如图2所示的编译结果可以看出存在一警告,消除这一警告可以通过选择工程的“Build Options”调出如图3所示的对话框,按照图3所示将Autoinit Model改为“No Autoinitialization”,重新编译链接,从编译结果可以看出警告不存在了,尝试解释这一问题:图1图2图3(4)执行Debug->Reset CPU,然后执行File->Load Program,在随后打开的对话框中选择刚刚建立的文件;(5)执行View->Memory,在打开的对话框中将Address改为“w3”;执行View->Registers ->CPU Registers,在随后打开的对话框中将Address改为“w3”;设置完成后应有如图4所示的结果:在Memory窗口中所有变量为0,因此时还没有赋值;在CPU Registers窗口中红色字体表示CPU重启后对这些寄存器做了改变;图4(6)按F10将程序运行到LD #0, A处,结果如图5所示,注意运行过程中查看Memory窗口的变化,可以发现运行完MVPD table, *AR1+指令后w、x、y得到了初始化,同时Memory 窗口对应处变红;可以用表格表示为表1图5表13 2 1 1w 54210AB2A10B1984x A20C8747B50C8743y 98410AB8475624F1(7)按照步骤(6)的方法继续运行,结合程序注释、Memory窗口和CPU Registers窗口内容变化来理解程序,尝试用表格画出累加器A、B在整个程序运行过程中的变化情况;(8)修改table数值,尝试其他数据来理解程序。
dsp实验报告Dsp实验报告班级:电信08-1学号:80811121姓名:黄伟实验⼀CCS(Code Composer Studio 2.0)安装与认识⼀、实验⽬的⼆、1.掌握 Code Composer Studio 2.0 的安装和配置。
三、2.了解 Code Composer Studio 2.0 软件的操作环境和基本功能。
四、 3. 了解 CCS环境下软件⼯程的建⽴,编译、⽇案件调试运⾏的基本⽅法。
⼆、实验设备要求安装CCS2(Code Composer Studio 2)的PC机。
三、实验步骤1、安装ccs软件打开CCS软件安装⽬录(CCS 开发软件),所有的开发软件都放在这个⽬录下。
请选择 CCS 5000.EXE ⽂件,双击CCS5000进⾏安装,如图2-1,2-2,2-3,2-5,2-6所⽰。
图2-1 CCS安装⽂件夹图2-3图2-4图 2-5 CS5000 软件安装⽰意图3图 2-4 CS5000 软件安装⽰意图3图 2-3 CCS5000 软件安装⽰意图2图 2-2 5000 软件安装⽰意图 1安装完毕CCS5000,再安装升级补丁C5000-2.20.00-FULL-to-C5000-2.21.00-FULL.exe ,2、配置ccs 软件我们做的实验是使⽤c5416模拟仿真,所以配置时选择C5416 Device Simuliator 驱动程序,其图如下(启动setup ccs )图2-9确认选择c5416 Device Simulator图2-6 开发软件图标3、创建新的⼯程(截图略)4、编辑源⽂件源⽂件需要两种:⼀种是实现功能的源程序,⼀种是连接的命令⽂件(1)C 语⾔源程序volume.c#include "volume.h"int inp_buffer[BUF_SIZE]; /* BUF_SIZE 的定义见volume.h */ int out_buffer[BUF_SIZE];int *input; int *output;int volume = 1;struct PARMS str = { 2934,9432,213,9432,&str };/***************************************************************************//* */ /* NAME: read_signals() *//* *//* FUNCTION: read input signal. */ /* *//* PARAMETERS: none. */ /* */图2-10 关闭配置窗⼝/* RETURN VALUE: TRUE. */ /**//************************************************************************** */int read_signals(int *input){/* read reference signal *//* read input signal */r eturn(TRUE);}/************************************************************************** *//**//* NAME: write_buffer() */ /**//* FUNCTION: write to the output buffer. Use the volume variable */ /* to control the volume. */ /**//* PARAMETERS: input , output, num. *//**//* RETURN VALUE: TRUE. *//**//************************************************************************** */ int write_buffer(int *input,int *output,int count){w hile( count--){*output++ = (*input++) * volume;}r eturn(TRUE);}/************************************************************************** */ /**//* NAME: main() *//**//* FUNCTION: Volume Control: Read input buffer *//* multiply by volume coeficient and write to *//* output buffer.*//*/* PARAMETERS: none. *//**//* RETURN VALUE: none. */ /**//************************************************************************** */ main(){i nt num = BUF_SIZE;while(TRUE) /* loop forever */{input = &inp_buffer[0];output = &out_buffer[0];/* read input signals from PC file */read_signals(input);/* write to output buffer */write_buffer(input, output, num);}}(2)命令⽂件和命令⽂件volume.cmdMEMORY{PAGE 0:VECT : o=80h,l=80hPRAM : o=100h,l=1f00hPAGE 1:DRAM : o=2000h,l=1000h}SECTIONS{.text : {}> PRAM PAGE 0.data : {}> PRAM PAGE 0.cinit : {}> PRAM PAGE 0.switch : {}> PRAM PAGE 0.const : {}> DRAM PAGE 1.bss : {}> DRAM PAGE 1.stack : {}> DRAM PAGE 1.vectors: {}> VECT PAGE 0}5、编译源⽂件,产⽣公共⽬标⽂件源程序需要编译/汇编/链接,产⽣⽬标代码。
DSP 控制器汇编语言程序设计摘要:在当今的数字化时代背景下,DSP 控制器在数字信号处理中起着重要的作用。
本论文概括介绍了TMS320C6XDSP 的硬件结构,并对TMS320C6XDSP 的汇编语言指令系统做了重点说明。
在具备以上知识的基础上,详细介绍了基于DSP 的高速数据采集和IIR 数字滤波器在DSP 上的实现,通过这两个应用实例了解DSP 汇编语言程序开发的方法。
关键字: TMS320C6X DSP 汇编语言 IIR数字滤波器高速数据采集Abstract :In digitized time ,DSP plays an important role in the digital signal processing. This paper summarily describes the hardware structure of theTMS320C6XDSP,and It introduced in detail the assembly language introductions.On the basis of having all above knowledge, a high speed data acquisition system based on DSP and using DSP to IIR Digital filter design was introduced,in order to understand the DSP assembly language program development method.Keyword: TMS320C6X DSP the assembly language IIR Digital filter designa high speed data acquisition system前言数字信号处理是一种将现实世界中的连续信号转换为计算机能够处理的信息的过程。
实验三简单程序的编写与调试一&实验目的1.进一步熟悉DEBUG命令;2.熟悉汇编指令的功能及应用;3.掌握简单的汇编语言程序编写与调试。
二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三&实验要求1.熟练掌握常用DEBUG命令;2.熟练掌握数据传送指令、比较指令、转移指令和循环指令并能够进行简单程序设计;3.用DEBUG的有关命令调试简单程序。
四&实验内容1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。
试编写此程序段。
2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。
3、将存储器中从DS:1000H单元开始的10个字节的数据累加求和。
4、使用DEBUG对上述编写的程序进行调试。
五&实验步骤1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。
试编写此程序段。
1)程序:cmp ax,bxjge next0xchg ax,bxnext0: cmp ax,cxjge next1xchg ax,cxnext1: …2)使用DEBUG调试:使用r reg命令在ax、bx、cx中预置三个大小不同的数。
使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。
使用t命令单步执行,再使用r命令可观察到程序全部执行后,ax中内容为最大数。
2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。
1)程序:mov cx,8lea bx,arrayrotate: inc word ptr [bx]add bx,2loop rotate2)使用DEBUG调试:使用e命令从某一内存单元开始预置一个8个字的数组。
使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。
DSP实验汇编语言程序参考答案EDA实验室编写西安文理学院实验一数据存储实验源程序(exp01_memory.asm文件):.title "exp01_memory.asm".mmregssize .set 16stack: .usect "STK", sizeSTM #stack+size, SP.bss DATA_1, 8.bss DATA_2, 8.def _c_int00.text_c_int00: STM #DATA_1,AR1RPT #7ST #0xAAAA, *AR1+**************以上指令将0xAAAAh写入01000h开始的单元。
*STM #DATA_1, AR1STM #DATA_2, AR2STM #7,BRCRPTB NEXT-1LD *AR1+, ASTL A, *AR2+NOPNOPNEXT B NEXT ———————————————————————————————————————命令文件(exp01_memory.cmd文件)debug\exp01_memory.obj-o exp01_memory.out-m exp01_memory.mapMEMORY{PAGE 0 :ROM: org=0200h, len=100h PAGE 1 :RAM: org=1000h, len=100h }SECTIONS{.text : > ROM.bss : > RAMSTK : > RAM}源程序(exp02_io.asm文件):.title "exp02_io.asm".mmregs.def _c_int00PA .set 0x0200.bss input_data,1.text_c_int00: STM #0FFA0h,PMSTSTM #input_data,AR1 loop: PORTR PA, *AR1PORTW *AR1, PAB loop.end命令文件(exp02_io.cmd文件)debug\exp02_io.obj-o exp02_io.out-m exp02_io.mapMEMORY{PAGE 0 : PARAM: org=0180h, len=0100hPAGE 1 : DARAM: org=80h, len=0100h }SECTIONS{.text :> PARAM.bss :> DARAM}源程序1(exp03_timer.asm)************************************************************ * 利用定时器延迟发光二极管循环显示 * ************************************************************ .title "exp03_timer.asm".mmregs.def _c_int00.def t1_counter,counter,send_datasize .set 50stack .usect "STK", size.bss send_data,8t1_counter .usect "vars",1counter: .usect "vars",1.datatable .word 007Fh.word 00BFh.word 00DFh.word 00EFh.word 00F7h.word 00FBh.word 00FDh.word 00FEh.text_c_int00: STM #stack+size,SPSTM #07FA0h,PMST***************************************************STM #send_data,AR2RPT #7MVPD table,*AR2+****************************************************ST #80,*(t1_counter)ST #0, *(counter)****************************************************STM #0000H, SWWSRSTM #0010H, TCRSTM #30D3H, PRDSTM #0C2FH, TCRSTM #0008H, IFRSTM #0008H, IMRRSBX INTM*****************************************************end: B end.end源程序2 (int_19.asm).title "int_19".mmregs.def int_revPA .set 0x0200.ref send_data,t1_counter,counter**************************************************************** .textint_rev: RSBX CPLADDM #-1, *(t1_counter)CMPM *(t1_counter), #0BC still_wait, NTCST #80, *(t1_counter)**************************************************************** LD #send_data,AADD *(counter),ASTLM A,AR1PORTW *AR1, PAADDM #1, *(counter)CMPM *(counter), #8BC still_wait, NTCST #0, *(counter)still_wait: RETE.end源程序3 (exp03_v.asm).title "exp03_v.asm".ref int_rev.sect ".vectors"B int_rev.end命令文件(exp03_timer.cmd)debug\exp03_timer.objdebug\exp03_v.objdebug\int_19.obj-o exp03_timer.out-m exp03_timer.mapMEMORY{PAGE 0 : PAROM: org=0180h, len=0100hVECS: org=7FCCh, len=04PAGE 1 : DARAM: org=80h, len=0200h }SECTIONS{.text :> PAROM.data :> PAROM.bss :> DARAMvars :> DARAMSTK :> DARAM.vectors :> VECS}教材例3-1 y=a1*x1+a2*x2+a3*x3+a4*x4 源程序:example.asm.title "example.asm".mmregsSTACK .usect ".STACK",10h.bss a,4.bss x,4.bss y,1.def _c_int00.datatable: .word 1,2,3,4.word 8,6,4,2.text_c_int00: STM #0,SWWSRSTM #00A0h,PMSTLD #a,DPSTM #STACK+10h,SPSTM #a,AR1RPT #7MVPD table,*AR1+CALL SUMend: B end.sect ".text:_sum" SUM: STM #a,AR3STM #x,AR4RPTZ A,#3MAC *AR3+,*AR4+,ASTL A,@yRET.end命令文件:example.cmddebug\example.objdebug\examp_v.obj-o example.out-m example.mapMEMORY{PAGE 0 : EPROM : org=0E000h,len=100hVECS : org=0FF80h,len=04h PAGE 1 : SPRAM : org=0060h, len=20hDARAM : org=0080h, len=100h }SECTIONS{.text : > EPROM.data : > EPROM.bss : > SPRAM.STACK : > DARAM.vectors : > VECS}。