部分汇编语言程序设计.ppt
《部分汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《部分汇编语言程序设计.ppt(71页珍藏版)》请在三一办公上搜索。
1、1,数字信号处理器 Digital Signal Processor第六部分 汇编语言程序设计,纪震博士Dr.Ji ZhenShenzhen Univ.-Texas Instruments DSPs Lab2003.01,Dr.JI ZHEN,2,C54x汇编语言程序设计的基本方法(1)程序的控制与转移(2)堆栈的使用方法(3)加、减法和乘法运算(4)重复操作(5)数据块传送(6)双操作数乘法(7)长字运算和并行运算(8)小数运算(9)除法运算(10)浮点运算,Dr.JI ZHEN,3,1 程序的控制与转换,基本的程序控制指令,Dr.JI ZHEN,4,1 程序的控制与转换,条件算符,组间条件
2、只能“或”第一组两类条件可以“与”/“或”,但累加器必须是同一个第二组三类条件可以各选一个条件“与”/“或”同组同类条件不能选择两个,Dr.JI ZHEN,5,1 程序的控制与转换,例1,RCTC;TC=1返回,TC=0继续CCsub,BNEQ;B0,调用sub,B=0继续BCnew,AGT,AOV;A0且溢出(“与”的关系),转new,否则继续,若例1中两个条件相“或”怎么办?,分写成两条指令:BC new,AGTBC new,AOV,Dr.JI ZHEN,6,1 程序的控制与转换,计算y=xi(i=1,2,5),主要程序如下:.bssx,5.bssy,1STM#x,AR1STM#4,AR2
3、LD#0,Aloop:ADD*AR1+,ABANZ loop,*AR2-STLA,y,利用BANZ指令进行循环操作,Dr.JI ZHEN,7,1 程序的控制与转换,指定的ARn寄存器(n=17)与AR0比较,测试条件成立TC置1 STM#5,AR1 STM#10,AR0 loop:MAR*AR1+CMPR LT,AR1 BC loop,TC,利用CMPR指令进行比较操作,Dr.JI ZHEN,8,2 堆栈的使用方法,堆栈的设置:size.set100stack.usectSTK,sizeSTM#stack+size,SP堆栈用法:CALLPC+1(N)放入堆栈,SP-1SPRET 弹出PC,S
4、P+1 SP注意:在链接命令文件中要为堆栈区定位,例如STK:DARAMPAGE1见EXAMPLE.ASM和EXAMPLE.CMD,Dr.JI ZHEN,9,链接命令文件 example.cmd,vectors.objexample.obj-o example.out-m example.map-e startMEMORY PAGE 0:EPROM:org=0E000h,len=100h VECS:org=0FF80h,len=80h PAGE 1:SPRAM:org=0060h,len=20h DARAM:org=0080h,len=100h,Dr.JI ZHEN,10,链接命令文件 exa
5、mple.cmd(续),SECTIONS.text:EPROM PAGE 0.bss:SPRAM PAGE 1.data:DARAM PAGE 1 STACK:DARAM PAGE 1 Vectors:VECS PAGE 0,Dr.JI ZHEN,11,example.asm程序清单,*example.asm y=a1*x1+a2*x2+a3*x3+a4*x4*.title example.asmSTACK usect STACK,10h;allocate space for stack.bss x,4;allocate 9 word for variables.bss a,4.bss y,1
6、.def start.data table:.word 1,2,3,4;data follows.word 8,6,4,2,Dr.JI ZHEN,12,example.asm程序清单(续),.text;code follows.start:STM#STACK+10h,SP;set stack pointer STM#table,AR1;AR1 point to table STM#x,AR2;AR2 point to x STM#7,AR0 LD#0,Aloop:LD*AR1+,A;move 8 values STL A,*AR2+;from program memory BANZ loop,
7、*AR0-;into data memory CALL SUM;call SUM subroutineend:B end,Dr.JI ZHEN,13,example.asm程序清单(续),.SUM:STM#a,AR3;The subroutine;implement STM#x,AR4;multiply-;accumulate RPTZ A,#3 MAC*AR3+,*AR4+,A STL A,y RET.end,Dr.JI ZHEN,14,3 加、减法和乘法运算,例:z=x+y-wLD x,AADD y,ASUB w,ASTL A,z例:y=mx+bLD m,TMPYx,AADD b,ASTL
8、 A,y,Dr.JI ZHEN,15,3 加、减法和乘法运算,例:y=x1*a1+x2*a2 LD x1,TMPYa1,BLD X2,TMACa2,BSTL B,ySTH B,y+1,Dr.JI ZHEN,16,3 加、减法和乘法运算,例:例8 在表31的4项乘积 aixi(i=1,2,3,4)中 找出最大值,并放在累加器A中 STM#a,AR1 STM#x,AR2 STM#2,AR3 LD*AR1+,T MPY*AR2+,A;第一个乘积在累加器A中loop1:LD*AR1+,T MPY*AR2+,B;其它乘积在累加器B中 MAX A;累加器A和B比较,选大的存在A中 BANZ loop1,*
9、AR3-;此循环中进行3次乘法和比较,Dr.JI ZHEN,17,4重复操作,C54x有3条重复操作指令:RPT(重复下一条指令)RPTZ(累加器清0并执行下一条指令)RPTB(程序块重复指令)利用这些指令进行循环,比BANZ指令快,Dr.JI ZHEN,18,4.1 重复执行单条指令,例:对一个数组进行初始化:x5=0,0,0,0,0.bss x,5STM#x,AR1LD#0,ARPT#4STLA,*AR1+或者.bssx,5STM#x,AR1RPTZA,#4STL A,*AR1+,Dr.JI ZHEN,19,4.1 关于重复单条指令,重复指令只需取指一次,进行循环比BANZ效率高重复执行n
10、次,指令中计数值设为n-1重复操作使多周期指令(MAC、MVDK和MVPD等)变成单周期指令重复操作期间,CPU不响应中断(RS除外),Dr.JI ZHEN,20,4.2 程序块重复操作,程序块重复操作指令RPTB将重复操作的范围扩大到任意长度的循环路,循环开销为0循环起始地址为下一行的地址块重复操作前,必须先将迭代次数加载到BRC(块重复计数器)RPTB指令可以响应中断,Dr.JI ZHEN,21,4.2 程序块重复操作举例,例:.bssx,5begin:LD#1,16,BSTM#4,BRC;BRC 4RPTB next-1;next-1为循环结束地址ADD*AR4,16,B,ASTHA,*
11、AR4+Next:LD#0,B,Dr.JI ZHEN,22,4.2 三重循环嵌套结构举例,Dr.JI ZHEN,23,4.2 三重循环的开销,Dr.JI ZHEN,24,5 数据块传送,C54x有10条数据传送指令(见下页中的表),这些指令的特点如下:传送速度比加载和存储指令要快;传送数据不需要通过累加器;可以寻址程序存储器;与RPT指令相结合(重复时,这些指令都变成单周期指令),可以实现数据块传送。,Dr.JI ZHEN,25,5.1 数据传送指令,Dr.JI ZHEN,26,5.2 程序存储器数据存储器,例:数组x5=1,2,3,4,5初始化。程序存储器.dataTBL:.word 1,2
12、,3,4,5.sect“.vectors”B START.bss x,5.textSTART:STM#x,AR5 RPT#4 MVPD TBL,*AR5+,dataPM bssDM,Dr.JI ZHEN,27,5.2 数据存储器数据存储器,例:编写一段程序将数据存储器中的数组x20复制到数组y20.bss x,20.bss y,20.text LD#x,AR2 LD#y,AR3 RPT#19 MVDD*AR2+,*AR3+,Dr.JI ZHEN,28,6 双操作数乘法,单周期内通过C总线和D总线寻址两个数据用间接寻址方式获得操作数,且只能用AR2AR5占用的程序空间小运行的速度快,Dr.JI
13、ZHEN,29,6.1 MAC型双操作数指令,Dr.JI ZHEN,30,6.2 单、双操作数乘法的区别,如果要求y=mx+b,单操作数方法和双操作数方法分别为:,如用双操作数指令编程的特点为:用间接寻址方式获得操作数,且只能用AR2AR5;占用的程序空间小;运行的速度快。,Dr.JI ZHEN,31,6.3 双操作数乘法(例),编制求乘法累加和的程序段,Dr.JI ZHEN,32,6.3 双操作数乘法(例),Dr.JI ZHEN,33,7.长字运算,c54x可以利用长操作数(32位)进行长字运算。长字指令如:DLD Lmem,dst;dst=LmemDST src,Lmem;Lmem=src
14、DADD Lmem,src,dst;dst=src+LmemDSUB Lmem,src,dst;dst=src-LmemDRSUB Lmem,src,dst;dst=Lmem-src,Dr.JI ZHEN,34,7.长字运算,长操作数在存储器的排列方法偶地址排列法奇地址排列法长操作数地址排列法指令中给出的地址为偶地址存储器中低地址存放高16位存储器中高地址存放底16位,Dr.JI ZHEN,35,偶地址排列法举例DLD*AR3+,A 执行前:执行后:A=00 0000 0000 A=00 6CAC BD90 AR3=0100 AR3=0102(0100h)=6CAC(高字)(0100h)=6C
15、AC(0101h)=BD90(低字)(0101h)=BD90,7.1 长操作数在存储器的排列方法,奇地址排列法举例DLD*AR3+,A 执行前:执行后:A=00 0000 0000 A=00 BD90 6CAC AR3=0101 AR3=0103(0100h)=6CAC(低字)(0100h)=6CAC(0101h)=BD90(高字)(0101h)=BD90,Dr.JI ZHEN,36,7.2 长字运算(例),例:计算 Z32=X32+Y32标准运算长字运算LDxhi,16,ADLDxhi,AADDSxlo,ADADD yhi,AADDyhi,16,ADST A,zhiADDSylo,A(3个字
16、,3个T)STHA,zhiSTLA,zlo(6个字,6个T),符号位不扩展的加法,Dr.JI ZHEN,37,8.并行运算(例),同时利用D总线和E总线4种并行运算指令:并行加载和乘法指令并行加载和存储指令并行存储和乘法指令并行存储和加/减法指令,Dr.JI ZHEN,38,8.1 并行运算(例),例:编写计算 z=x+y 和 f=e+d 程序段.bssx,3.bssd,3STM#x,AR5STM#d,AR2LD#0,ASMLD*AR5+,16,AADD*AR5+,16,AST A,*AR5|LD*AR2+,BADD*AR2+,16,BSTH B,*AR2,Dr.JI ZHEN,39,8.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部分 汇编语言 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6146782.html