ImageVerifierCode 换一换
格式:PPTX , 页数:171 ,大小:1.01MB ,
资源ID:12592265      下载积分:25 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12592265.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(嘉兴学院-必考市公开课特等奖市赛课微课一等奖课件.pptx)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

嘉兴学院-必考市公开课特等奖市赛课微课一等奖课件.pptx

1、第五章 汇编语言编程举例,第一节汇编语言编程基本方法,第二节 DSP浮点运算方法,第三节,DSP在信号发生器上应用,第四节 用DSP实现FIR滤波器,1,第1页,第一节 汇编语言编程基本方法,1堆栈使用,1.压入数据时,堆栈从高地址向低地址增加。,2.压栈时指针先减,SP-1,再压入数据;,3.出栈时,先弹出数据后,再SP+1。,4.如要用堆栈,必须先设置,后使用。,要,点,2,第2页,例5-1,设计一存放空间为100个单元堆栈。,size.set 100 ;设置堆栈空间,;大小为100,stack .usect “STK”,size;设置堆栈段首地址,;和堆栈空间,STM#stack+

2、size,SP;将栈底地址指针送,;SP,对其初始化,3,第3页,2.,堆栈区大小确实定,先开辟一个较大堆栈区,用已知数充填,,如,:,LD#,-9224,B,STM#,length,AR1,MVMM SP,AR4,loop,:,STL B,*AR4-,BANZ loop,,*,AR1,-,堆栈区大小能够按照以下步骤来确定:,;堆栈区要充填数0DBF8h加载B,;设置循环次数,;设置数据指针AR4,SPAR4,;循环,充填数据,数据RAM,D,D,D,D,D,SP,D,DBF8,DBF8,DBF8,DBF8,DBF8,DBF8,AR4,length,4,第4页,2.,堆栈区大小确实定,先开辟一

3、个较大堆栈区,用已知数充填,。,堆栈区大小能够按照以下步骤来确定:,数据RAM,AR4,DBF8,DBF8,DBF8,DBF8,DBF8,SP,DBF8,6B14,0013,SP,运行程序,执行全部堆栈操作。,检验堆栈中数值,。,7AB3,用过堆栈区就是实际需要堆栈空间。,用过栈区,5,第5页,经过传送控制到程序存放器其它位置,分支转移会中止连续指令流。,分支转移指令能够改写,PC,值,使程序改变流向。其指令分为无条件分支转移和条件分支转移两类。,二者都能够带延时操作和不带延时操作。,1.,分支转移程序,分支转移指令,分 类,指 令,说 明,无条件,分支转移,BD,用该指令指定地址加载PC,B

4、ACCD,用累加器低16位指定地址加载PC,条 件,分支转移,BCD,若满足指令给定条件,用该指令指定地址加载PC,BANGD,若当前选择辅助存放器不等于0,用该指令指定地址加载PC,远 程,分支转移,FBD,用该指令指定地址加载PC和XPC,FBACCD,用累加器低23位指定地址加载PC和XPC,分支操作程序,6,第6页,分支操作程序,条 件 算 符,操作符号,条 件,说,明,操作符号,条 件,说,明,AEQ,A=0,累加器,A,等于,0,AOV,AOV=1,累加器,A,溢出,BEQ,B=0,累加器,B,等于,0,BOV,BOV=1,累加器,B,溢出,ANEQ,A,0,累加器,A,不等于,0

5、ANOV,AOV=0,累加器,A,不溢出,BNEQ,B,0,累加器,B,不等于,0,BNOV,BOV=0,累加器,B,不溢出,ALT,A0,累加器,A,小于,0,C,C=1,ALU,进位位置,1,BLT,B0,累加器,A,大于,0,BIO,BIO低,BIO,信号电平为低,BGT,B0,累加器,B,大于,0,NBIO,BIO高,BIO,信号电平为高,AGEQ,A,0,累加器,A,大于等于,0,UNC,无,无条件操作,BGEQ,B,0,累加器,B,大于等于,0,7,第7页,无条件分支转移:无条件执行分支转移;,条件分支转移:要在满足用户一个或多个条件时才执行分支转移;,远程分支转移:允许分支转移

6、到扩展存放器。,1.,分支转移程序,【例5-2】分支转移举例。,STM#88H,AR0,LD#1000H,A,zhong:SUB AR0,A,BC zhong,AGT,AOV,;将操作数#88H,装入,AR0,;将操作数#1000H装入ACC,;将,A,中内容减去,AR0,中,;内容结果装入A,;若累加器,A0,且溢出,,;,则转至,zhong,不然往下执行,分支操作程序,8,第8页,分支操作程序,与分支转移一样,经过传送控制到程序存放器其它位置,子程序调用会中止连续指令流。不过与分支转移不一样是,这种传送是暂时。,当函数子程序被调用时,紧跟在调用后下一条指令地址保留在堆栈中。这个地址用于返回

7、到调用程序并继续执行调用前程序。,子程序调用操作分成两种形式:无条件调用和条件调用,二者都能够带延时操作和不带延时操作。,2.,子程序调用程序,9,第9页,分支操作程序,2.,子程序调用程序,子程序调用指令,分 类,指 令,说 明,无条件,调用,CALLD,将返回地址压入堆栈,并用该指令指定地址加载PC,CALAD,将返回地址压入堆栈,用累加器A或B指定地址加载PC,条件,调用,CCD,假如满足指令给定条件,将返回地址压入堆栈,并用该,指令指定地址加载PC,远程,调用,FCALL D,将XPC和PC压入堆栈,并用该指令指定地址加载PC和XPC,FCALA D,将XPC和PC压入堆栈,用累加器低

8、23位指定地址加载,PC和XPC,10,第10页,分支操作程序,2.,子程序调用程序,无条件调用是指无条件执行,调用。,条件调用和无条件调用操作相同,不过条件调用要在满足一个或多个条件时才执行,调用,。,远,程,调用允许对扩展存放器子程序或函数进行调用。,11,第11页,分支操作程序,2.,子程序调用程序,【例5-3】子程序调用举例。,STM#123H,AR0,LD#456H,AR1,CALL new,LD AR1,16,A,new,:,MPY AR0,AR1,A,RET,;将操作数,#123H,装入,AR0,;将操作数,#456H,装入,AR1,;调子程序,new,;将,AR1,内容左移,1

9、6,位后装入,A,;,AR0,与,AR1,内容相乘,结果放入,A,中,;子程序返回,12,第12页,分支操作程序,子程序返回程序能够使程序重新在被中止连续指令处继续执行。,返回指令经过,将,弹出堆栈值(包含将要执行下一条指令地址),,送,到程序计数器,PC,来实现返回功效。,C54x,能够执行无条件返回和条件返回,而且它们都能够带延时或不带延时,操作,。,3.,子程序返回程序,13,第13页,分支操作程序,3.,子程序返回程序,子程序返回指令,分 类,指 令,说 明,无条件,返回,RETD,将堆栈顶部返回地址加载到PC。,RETED,将堆栈顶部返回地址加载到PC,并使能可屏蔽中止。,RETFD

10、将RTN存放器中返回地址加载到PC,并使能可屏蔽中止。,条件,返回,RCD,假如满足指令给定条件,将堆栈顶部返回地址加载到PC。,远程,返回,FCALL D,将堆栈顶部值弹出加载到XPC,,将堆栈中下一个值弹出加载到PC。,FCALA D,将堆栈顶部值弹出加载到XPC,,将堆栈中下一个值弹出加载到PC,并使能可屏蔽中止。,14,第14页,分支操作程序,C54x,一些指令只有在满足一个或是多个条件后才被执行,,如条件分支转移、条件调用和条件返回等指令。,这些指令,都用条件来限制分支转移、调用和返回操作。这些条件可用条件算符来表示。,4.,条件操作程序,15,第15页,分支操作程序,在,条件操作

11、时也能够要求,有,多个条件,只有全部条件满足时才被认为是满足条件。,这种多个条件组合就组成了指令多重条件。,多重条件算符,第1组,第2组,A类,B类,A类,B类,C类,EQ,NEQ,LEQ GEQ,LT,GT,OV,NOV,TC,NTC,C,NC,BIO,NBIO,16,第16页,分支操作程序,选取,多重,条件时应该注意以下几点:,第,1,组:分为两类,最多可选择两个条件,,组内两类条件能够与/或组成多重条件,但不能用组内同类条件组成,与/或,多重条件。,组与组之间可用或组成多重条件。,当选择两个条件时,累加器必须是同一个。,比如,能够同时选择AGT和AOV,但不能同时选择AGT和BOV,。,

12、第,2,组:分为三类,,最多可选三个条件,,能够在每类中各选一个条件进行与/或组成多重条件,但不能在同类选两个以上条件。,比如,能够同时测试TC、C和BIO,但不能同时测试NTC、C和NC。,17,第17页,分支操作程序,【例5-4】条件,操作程序,。,BC sub,,,BLEQ,;条件分支转移,若累加器B0,则转至sub,,不然,往下执行,CC start,,,AGEQ,,,AOV,;条件调用,若累加器A0且溢出,,,则调用start,不然往下执行,RC NTC,;条件返回,若,TC=0,,则返回,不然往下执行,18,第18页,分支操作程序,注意:,若需要多个条件相与时,用单条指令表示。,如

13、BC new,AGT,AOV,转移条件:,AGT,和,AOV,与逻辑,若需要两个条件相或时,需用两条指令分别表示。,如:,若累加器,A,大于0或溢出,则转移至,sub,转移条件:,AGT,和,AOV,或逻辑,BC sub,AGT,BC sub,AOV,19,第19页,循环操作程序,【例5-5】,.bss x,10 ;,给x保留10个空间,.bss y,1 ;,给y保留1个空间,STM#x,AR1 ;,设置数据段首地址,STM#9,AR2 ;,设置循环计数值,LD#0,A ;,累加器清0,loop:,ADD *AR1+,A ;,累加运算,并修改地址,BANZ loop,*AR2-;,若计数值

14、不为0,则循环,并计数值减1,若计数值为0,则结束循环,STL A,y ;,累加和存入y中,用,AR2,作为循环计数器,由,BANZ,实现程序循环控制。,注意:,BANZ loop,*AR2-;,先判断,再修正,AR2=AR2-1,20,第20页,例5-6,编写求解加、减法程序,计算z=x+y-w。,SUM1:LD x,A ;将x地址内容送A,ADD y,A,;将y地址内容与A中x值相加,SUB w,A,;将A中内容与w 相减,得z,STL A,z ;将A计算值存入z 地址中,例5-7,写求解直线方程程序,计算y=mx+b。,SUM2:LD m,T ;将m 地址内容送T,MPY x,A,;将x

15、 地址内容与T中m相乘,,;结果送A,ADD b,A,;将A中mx与b 地址内容相加,,;结果送A,STL A,y ;将A计算结果存入y 地址中,2 加、减法和乘法运算,21,第21页,【例5-8】,求4项乘积a,i,x,i,(i=1,2,3,4)中最大值,并存放累加器A中。,程序:,STM#a,AR1,STM#x,AR2,STM#2,AR3,LD *AR1+,T,MPY *AR2+,A,loop1:LD *AR1+,T,MPY *AR2+,B,MAX A,BANZ loop1,*AR3-,;,ai,首地址,a,给,AR1,;,xi,首地址,x,给,AR2,;,设置计数器,AR3=2,;,取系

16、数,T=ai,并修改,AR1,;,乘法运算,A=,a,i,x,i,并修改,AR2,;,取系数,T=ai,并修改,AR1,;,乘法运算,B=,a,i,x,i,并修改,AR2,;,求,A,和,B,中最大值,;,若,AR30,则循环,并修改,AR3,若,AR3=0,,则不循环,2 加、减法和乘法运算,22,第22页,传送速度比加载和存放指令要快;,传送数据不需要经过累加器;,能够寻址程序存放器;,与RPT指令相结合(重复时,这些指令都变成单周期指令),能够实现数据块传送。,3 数据块传送,特,点,23,第23页,(1)数据存放器数据存放器,这类指令有:,MVDK Smem,dmad 指令字数/执行周

17、期 2/2,MVKD dmad,Smem;Smem=dmad 2/2,MVDD Xmem,Ymem ;Ymem=Xmem 1/1,(2)程序存放器数据存放器,这类指令有:,MVPD pmad,Smem ;Smem=pmad 2/3,MVDP Smem,pmad ;pmad=Smem 2/4,pmad为16位马上数程序存放器地址;,dmad为16位马上数数据存放器地址;,Smem为数据存放器地址;,Xmem、Ymem为双操作数数据存放器地址,Xmem从DB数据总线上读出。Ymem从CB数据总线上读出。,24,第24页,(3)数据存放器MMR,这类指令有:,MVDM dmad,MMR ;指令字数/

18、执行周期 2/2,MVMD MMR,dmad ;dmad=MMR 2/2,MVMM mmrx,mmry ;mmry=mmrx 1/1,(4)程序存放器(Acc)数据存放器,包含:,READA Smem ;Smem=prog(A)1/5,WRITA Smem ;prog(A)=Smem 1/5,mmrx,mmry为AR0AR7或SP;,MMR为任何一个存放器映象存放器;,25,第25页,例5-9,将数组x5 初始化为1,2,3,4,5。,.data ;定义初始化数据段起始地址,TBL:.word 1,2,3,4,5 ;为标号地址TBL,;开始5个单元赋初值,.sect “.vectors”;定义

19、自定义段,并获,;得该段起始地址,B START;无条件转移到标号为START地址,.bss x,5 ;为数组x分配5个存放单元,.text ;定义代码段起始地址,START:STM#x,AR5 ;将x首地址存入AR5,RPT#4 ;设置重复执行5次下条指令,MVPD TBL,*AR5+,;将TBL开始5个值传给x,(1)程序存放器数据存放器,26,第26页,在数字信号处理时,经常需要将数据存放器中一批数据传送到数据存放器另一个地址空间。,【例5-10】进行,N点FFT运算时,为节约存放空间要用到原位计算,将数组X16赋到数组Y16,计算一个蝶形后,所得输出数据能够马上存入原输入数据所占用存放

20、单元。,.,bss x,,,16,.,bss y,,,16,STM#x,,,AR2,STM#y,,,AR3,RPT#15,MVDD AR2+,,*,AR3,+,(2)数据存放器数据存放器,27,第27页,例5-11,将数据存放器中数组x10复制到数组y10。,.title “cjy1.asm”;为汇编源程序取名,.mmregs ;定义存放器映象存放器,STACK.usect “STACK”,30H;设置堆栈,.bss x,10 ;为数组x分配10个存放单元,.bss y,10 ;为数组y分配10个存放单元,.data,table:.word 1,2,3,4,5,6,7,8,9,10,.def

21、start ;定义标号start,.text,(2)数据存放器数据存放器,28,第28页,start:STM#0,SWWSR ;复位SWWSR,STM#STACK+30H,SP;初始化堆指针,STM#x,AR1;将目标地首地址赋给AR1,RPT#19 ;设定重复传送次数为20次,MVPD table,*AR1+,;程序存放器传送到数,;据存放器,STM#x,AR2;将x首地址存入AR2,STM#y,AR3;将y首地址存入AR3,RPT#19 ;设置重复执行20次下条指令,MVDD *AR2+,*AR3+,;将地址x开始20个值,;复制到地址y开始20个单元,end:B end,.end,29,

22、第29页,用间接寻址方式取得操作数,且辅助存放器只用AR2AR5;,占用程序空间小;,运行速度快。,4双操作数乘法,特,点,例5-12,编制求解 程序。,利用双操作数指令能够节约机器周期。迭代次数越多,节约机器周期数也越多。本例中,在每次循环中,双操作数指令都比单操作数指令少用一个周期,节约总机器周期数=1T*N(迭代次数)=NT。,30,第30页,单操作数指令方案 双操作数指令方案,LD#0,B LD#0,B,STM#a,AR2 STM#a,AR2,STM#x,AR3 STM#x,AR3,STM#19,BRC STM#19,BRC,RPTB done-1 RPTB done-1,LD *AR

23、2+,T,;1T,MPY *AR2+,*AR3+,A;,1T,MPY*AR3+,A,;1T ADD A,B;1T,ADD A,B ;1T,done:STH B,y done:STH B,y,STL B,y+1 STL B,y+1,31,第31页,5长字运算,长字指令:,DLD Lmem,dst,DST src,Lmem,DADD Lmem,src,dst,DSUB Lmem,src,dst,DRSUB Lmem,src,dst,;dst=Lmem 单周期,;Lmem=src 双周期,;dst=src+Lmem 单周期,;dst=src-Lmem 单周期,;dst=Lmem-src 单周期,C5

24、4x能够利用32位长操作数进行长字运算。,32,第32页,长字排列方式,偶地址排列,奇地址排列,(1),偶地址排列,如:,DLD *AR3+,A,执行前:,A,00,0000,0000,AR3,0100,数据存放器,0100h,6,C,A,C,0101h,B,D,9,0,高字,低字,执行后:,A,00,0000,0000,AR3,0100,6CAC,0101,BD90,0102,指令中给出地址为偶地址,则存放器低地址存放高,16,位操作数。,5长字运算,33,第33页,5长字运算,(1),偶地址排列,【例5-12】偶地址排列法举例。,.bss a,2,.bss y,2,.data,table:

25、word 06CACH,0BD90H,.text,STM#a,AR1,RPT#1,MVPD table,*AR1+,STM#a,AR3,DLD,*,AR3,+,,A,执行前:,A,=,00,0000,0000h,AR3,=,0100h,(0100h),=,6CACh(高字),(0101h),=,BD90h(低字),执行,后,:,A,=,00,6CAC,BD90h,AR3,=,0102h,(0100h),=,6CACh,(0101h),=,BD90h,34,第34页,5长字运算,(2),奇地址排列,如:,DLD *AR3+,A,执行前:,A,00,0000,0000,AR3,0101,数据存放

26、器,0100h,6,C,A,C,0101h,B,D,9,0,低字,高字,执行后:,A,00,0000,0000,BD90,6CAC,AR3,0101,0102,0103,指令中给出地址为奇地址,则存放器低地址存放低,16,位操作数。,35,第35页,(2),奇地址排列,【例5-13】奇地址排列法举例。,.bss a,2,.bss y,2,.data,table:.word 06CACH,0BD90H,.text,STM#a,AR1,RPT#1,MVPD table,*AR1-,STM#a,AR3,DLD,*,AR3,+,,A,执行前:,A,=,00,0000,0000h,AR3,=,0101h

27、0100h),=,6CACh(低字),(0101h),=,BD90h(高字),执行,后,:,A,=,00,BD90,6CAC,h,AR3,=,0103h,(0100h),=,6CACh,(0101h),=,BD90h,5长字运算,36,第36页,推荐采取偶地址排列法,将高16位操作数放在偶地址存放单元中。如:,程序存放器,.long 12345678 h ;偶地址:1234,;奇地址:5678,数据存放器,.bss xhi,2,1,1 ;偶地址:xhi,;奇地址:xlo,变量名称 字长 页邻接 偶地址排列法,5长字运算,37,第37页,【例5-14】,计算,Z,32,=,X,32,+,Y,

28、32,。,标准运算,.,bss xhi,1,.,bss xlo,1,.,bss yhi,1,.,bss ylo,1,.,bss zhi,1,.,bss zlo,1,数据,存放器,xhi,X,31,X,16,xlo,X,15,X,0,yhi,Y,31,Y,16,ylo,Y,15,Y,0,zhi,zlo,LD xhi,16,A,ADDS xlo,A,ADD yhi,16,A,ADDS ylo,A,STH A,zhi,STL A,zlo,AG,AH,AL,LD xhi,16,A,X,31,X,16,0,0,0,0,X,31,X,16,0,0,0,0,ADDS xlo,A,+X,15,X,0,X,31

29、X,16,X,15,X,0,X,15,X,0,ADD yhi,16,A,+Y,31,Y,16,0,0,0,0,Z,31,Z,16,X,15,X,0,Z,31,Z,16,X,15,X,0,ADDS ylo,A,+Y,15,Y,0,Z,31,Z,16,Z,15,Z,0,Z,15,Z,0,STH A,zhi,Z,31,Z,16,STL A,zlo,Z,15,Z,0,6字,6T,5长字运算,38,第38页,5长字运算,【例5-14】,计算,Z,32,=,X,32,+,Y,32,。,标准运算,数据,存放器,xhi,X,31,X,16,X,15,X,0,yhi,Y,31,Y,16,Y,15,Y,0,zh

30、i,LD xhi,16,A,ADDS xlo,A,ADD yhi,16,A,ADDS ylo,A,STH A,zhi,STL A,zlo,6字,6T,长字运算,.,bss xhi,2,1,1,.,bss yhi,2,1,1,.bss zhi,2,1,1,DLD xhi,A,DADD yhi,A,DST A,zhi,AG,AH,AL,DLD xhi,A,X,31,X,16,X,15,X,0,X,31,X,16,X,15,X,0,DADD yhi,A,+Y,31,Y,16,Y,15,Y,0,Z,31,Z,16,Z,15,Z,0,Z,31,Z,16,Z,15,Z,0,DST A,zhi,Z,31,Z

31、16,Z,15,Z,0,3字,3T,39,第39页,(1)并行运算指同时利用D总线和E总线。其中,D总线用来执行加载或算术运算,E总线用来存放先前结果。,(2)并行指令都是单字单周期指令。,(3)并行运算时所存放是前面运算结果,存放之后再进行加载或算术运算。,(4)并行指令都工作在累加器高位。,(5)大多数并行运算指令都受累加器移位方式ASM位影响。,6并行运算,特,点,40,第40页,表5-1 并行指令举例,指 令,指 令,举 例,操作说明,并行加载和乘法指令,LDMACR,LDMASR,LD Xmem,dst,MACR Ymem,dst,dst=Xmem(16-ASM),dst=Xmem

32、16-ASM),dst=dst+T*Xmem,并行存放和加/减法指令,STADD,STSUB,ST src,Ymem,ADD Xmem,dst,Ymem=src(16-ASM),dst=dst+Xmem,41,第41页,例5-15,编写计算z=x+y和f=d+e程序段。,在此程序段中用到了并行存放/加载指令,即在同一机器周期内利用E总线存放和D总线加载。数据存放器分配如图5-4所表示。,.title “cjy3.asm”,.mmregs,STACK .usect“STACK”,10H,.bss x,3 ;为第一组变量,;分配3个存放单元,.bss d,3 ;为第二组变量,;分配3个存放单元,

33、def start,.data,table:.word 0123H,1027H,0,1020H,0345H,0,42,第42页,.text,start:STM#0,SWWSR,STM#STACK+10H,SP,STM#x,AR1,RPT#5,MVPD table,*AR1+,STM#x,AR5 ;将第一组变量首地址传给AR5,STM#d,AR2 ;将第二组变量首地址传给AR2,LD#0,ASM ;设置ASM=0,LD *AR5+,16,A;将x值左移16位放入A高端字,ADD *AR5+,16,A;将y值左移16位与A高端字x相加,ST A,*AR5,;将A中和值右移16位存入z中,LD *

34、AR2+,B,;将d值左移16位放入B高端字,ADD *AR2+,16,B;将e值左移16位与B高端字d相加,STH B,*AR2 ;将B高端字中和值存入f中,end:B end,.end,43,第43页,764位加法和减法运算,可利用长字指令可完成64位数加减运算。,【例5-16】,编写完成,Z,64,=,W,64,+X,64,-Y,64,程序,。,运算过程:,W,64,:,X,64,:,w,3,w,2,w,1,w,0,x,3,x,2,x,1,x,0,+,s,1,s,0,C,s,3,s,2,S,64,:,S,64,=s,3,s,2,s,1,s,0,s,1,s,0,=w,1,w,0,+x,1,

35、x,0,s,3,s,2,=w,3,w,2,+x,3,x,2,+C,Y,64,:,y,3,y,2,y,1,y,0,-,z,1,z,0,O,z,3,z,2,Z,64,:,Z,64,=z,3,z,2,z,1,z,0,z,1,z,0,=s,1,s,0,-y,1,y,0,z,3,z,2,=s,3,s,2,-y,3,y,2,-O,44,第44页,因为没有长字带进(借)位加/减法指令,所以上述程序中只能用16位带进(借)位指令ADDC和SUBB。,DLD w1,A,DADD x1,A,DLD w3,B,ADDC x2,B,ADD x3,16,B,DSUB y1,A,DST A,z1,SUBB y2,B,SU

36、B y3,16,B,DST B,z3,;A=w,1,w,0,;A=s,1,s,0,产生,C,;B=w,3,w,2,;B=w,3,w,2,+x,2,+C,;B=s,3,s,2,=w,3,w,2,+x,3,x,2,+C,;A=s,1,s,0,-y,1,y,0,产生,O,;z,1,z,0,=s,1,s,0,-y,1,y,0,;B=s,3,s,2,-y,2,-O,;B=z,3,z,2,;z,3,z,2,=s,3,s,2,-y,3,y,2,-O,45,第45页,【例5-17】,编写完成,W,64,=,X,32,Y,32,程序,。,运算过程:,x,1,x,0,y,1,y,0,x,0,y,0,x,1,y,0

37、y,1,x,0,y,1,x,1,w,0,w,1,w,2,w,3,UU,SU,SU,SS,U,U,U,S,w,0,=x,0,y,0,L,w,1,=x,0,y,0,H+x,1,y,0,L+y,1,x,0,L,w,2,=x,1,y,0,H+y,1,x,0,H+y,1,x,1,L,w,3,=y,1,x,1,H,乘法运算:,UU,SU,SS,乘法指令:,MPYU Smem,dst,;dst=U(T)U(Smem),MACSU Xmem,Ymem,src,;src=U(Xmem)S(Ymem)+src,MAC Xmem,Ymem,src,;src=S(Xmem)S(Ymem)+src,8.32位乘法运算

38、46,第46页,【例5-17】,编写完成,W,64,=,X,32,Y,32,程序,。,STM#x0,AR2,STM#y0,AR3,LD *AR2,T,MPYU *AR3+,A,STL A,w0,LD A,-16,A,MACSU*AR2+,*AR3-,A,MACSU*AR3+,*AR2,A,STL A,w1,LD A,-16,A,MAC *AR2,*AR3,A,STL A,w2,STH A,w3,;AR2,x0,;(w3)A,;AR3y0,;T=x0,;A=u(x,0,)u(y,0,),;(w0)A,;A=x0y0H,;A=y1x0+x0y0H,;A=x1y0+y1x0+x0y0H,;(w1)

39、A,;A=y1x0H+x1y0H,;A=y1x1+y1x0H+x1y0H,;(w2)A,RAM,x0,x1,y0,y1,w0,w1,w2,w3,AR2,AR3,AR3,AR2,AR3,AR3,8.32位乘法运算,47,第47页,9小数运算,整数运算问题,(1)两个16位整数相乘,乘积总是“向左增加”。这意味着屡次相乘后,乘积将会很快超出定点器件数据范围。,(2)保留32位乘积到存放器,要开销2个机器周期以及2个字存放器单元。,(3)因为乘法器都是16位相乘,所以极难在后续递推运算中,将32位乘积作为乘法器输入。,小数运算优点,(1)乘积总是“向右增加”。这就味着超出定点器件数据范围将是不太感兴

40、趣部分。,(2)既能够存放32位乘积,也能够存放高16位乘积,这就允许用较少资源保留结果。,(3)能够用于递推运算。,小数运算与整数运算比较,48,第48页,C54x采取2补码表示小数,其最高位为符号位,数值范围从-11。一个16位2补码小数(Q15格式)每一位权值为:,MSB(最高位)LSB(最低位),-1.1/2 1/4 1/8 2,-15,一个十进制小数乘以32768之后再将其十进制整数部分转换成十六进制数,就能得到这个十进制小数2补码表示了。,1 7FFFh,0.5正数:乘以32768 4000h,0 0000h,-0.5 负数:其绝对值部分乘以32768,再取反加1 C000h,-1

41、 8000h,(1)小数表示方法,49,第49页,在汇编语言中,是不能直接写入十进制小数,可写为整数运算式。,假如要定义一个系数0.707,能够写成:,.word 32768*707/1000,不能写成32768*0.707。,注意,Q格式表示法,在Q格式中,Q之后数字(如Q15格式中15)决定小数点右边有多少位二进制位,故Q15表示在小数点后有15位小数。当用一个16位字来表示Q15格式时,在MSB(最高位)右边有一个小数点,而MSB表示符号位。所以Q15表示数字可表示范围从+1(以+0.999997表示)到-1值。,50,第50页,经过适当Q格式,能够把数值依据所需准确度做适当地转换,方便

42、定点数DSP也能够处理高精度浮点数。下面以Q15为例,说明转换过程。,1),先确定准备转换十进制数值N,是在Q15格式数值范围之间,即-1.000000N+0.999997。,2)数值N乘以2,15,,即N=N2,15,=N32768,3)把步骤2)结果加2,16,,即N=N+2,16,=N+65536。,4)步骤3)结果转换成十六进制,并把第17位舍弃掉,得到结果就是NQ15转换值。,51,第51页,下面经过把-0.2345及+0.2345转换成Q15格式来说明转换方法。,-0.2345转换为:,-0.234532768=-7684.1-7684,-7684+65536=57852,5785

43、2转换成十六进制数值为0E1FCh,所以结果为E1FCh。,+0.2345转换为:,0.234532768=7684.17684,7684+65536=73320,73320转换成十六进制数值为11E04h,并把第17位舍弃掉,结果为1E04h。,52,第52页,以字长为4位和8位累加器为例,先看一个小数乘法例子。,0 1 0 0(0.52,3,0.5=(4),10,=(0100),2,),1 1 0 1,(-0.3752,3,(-0.375)=(-3),10,0 1 0 0,=(1101),补,),0 0 0 0,0 1 0 0,1 1 0 0 (-0100),1 1 1 0 1 0 0(-

44、0.1875=-12/2,6,-12=(1110100),补,),(2)小数乘法与冗余符号位,53,第53页,上述乘积是7位,当将其送到8位累加器时,为保持乘积符号,必须进行符号位扩展,这么,累加器中值为11110100(-0.09375=-12/2,7,),出现了冗余符号位。原因是:,S x x x (Q3),S y y y (Q3),S S z z z z z z (Q6格式),即两个带符号数相乘,得到乘积带有2个符号位,造成错误结果。,一样,对于两个十六位数相乘,乘积只有30位,在最高两位也是符号位,一样会造成错误结果。,54,第54页,处理冗余符号方法是:在程序中设定状态存放器ST1中

45、FRCT(小数方式)位1,在乘法器将结果传送至累加器时就能自动地左移1位,累加器中结果为:zzzzzz0(Q7格式),即11101000(-0.1875=-24/2,7,-24=(11101000),补,),自动地消去了两个带符号数相乘时产生冗余符号位。所以在小数乘法编程时,应该事先设置FRCT位:,SSBX FRCT,MPY *AR2,*AR3,A,STH A,Z,这么,C54x就完成了Q15*Q15=Q15小数乘法。,55,第55页,【例,5-18,】编制计算 程序,a1=0.3 a2=0.2 a3=-0.4 a4=0.1,x1=0.6 x2=0.5 x3=-0.1 x4=-0.2,.bs

46、s a,4,.bss x,4,.bss y,1,.data,table:.word 3*32768/10,.word 2*32768/10,.word -4*32768/10,.word 1*32768/10,.word 6*32768/10,.word 5*32768/10,.word -1*32768/10,.word -2*32768/10,a,x,y,56,第56页,【例,5-18,】编制计算 程序,a1=0.3 a2=0.2 a3=-0.4 a4=0.1,x1=0.6 x2=0.5 x3=-0.1 x4=-0.2,a,x,y,.text,start:SSBX FRCT,STM#x,A

47、R1,RPT#7,MVPD table,*AR1+,0.3,0.2,-0.4,0.1,0.6,0.5,-0.1,-0.2,STM#x,AR2,STM#a,AR3,RPTZ A,#3,MAC *AR2+,*AR3+,A,STH A,y,0.3,done:B done,57,第57页,10 除法运算,条件减法指令功效以下:,SUBC Smem,src;(src)-(Smem)15 ALU,;输出端,假如ALU输出端0,;则(ALU输出端)1+1src,,;不然(src)1src。,方法:减法指令加重复指令实现无符号运算,(1)当被除数除数 此时商为小数。,58,第58页,例5-14,编写0.4(-

48、0.8)程序段。,.title “cjy5.asm”,.mmregs,STACK.usect“STACK”,10H,.bss num,1 ;为分子分配单元,.bss den,1 ;为分母分配单元,.bss quot,1 ;为商分配单元,.data ;定义数据段起始地址,table:.word 4*32768/10 ;在以table为地址,;单元放入 0.4,.word -8*32768/10;在以table为地址,;下一单元放入-0.8,.def start,59,第59页,.text ;定义数据段起始地址,start:STM#num,AR1 ;将分子所在单元地址传给AR1,RPT#1 ;重复

49、执行下一指令2次,MVPD table,*AR1+;传送程序空间2个数据(分子、,;分母)至地址为num开始数据存放器单元,LD den,16,A ;将分母移到累加器A(3116),MPYA num ;(num)*(A(3116)B,,;获取商符号(在累加器B中),ABS A ;分母取绝对值,STH A,den ;分母绝对值存回原处,LD num,16,A ;分子加载到A(3116),ABS A ;分子取绝对值,RPT#14 ;15次减法循环,完成除法,SUBC den,A ;,XC 1,BLT ;假如B0(商是负数),则需要变号 NEG A ;假如B0执行求反,不然跳过此指令,STL A,q

50、uot ;保留商,end:B end,.end,60,第60页,a)被除数除数商为小数 b被除数除数商为整数,61,第61页,10 除法运算,(2)当被除数除数时 商为整数。,例5-15,编写16384512程序段。,将上例程序段仅作两处修改,其它不变,就得本例程序段:,LD num,16,A 改成 LD num,A,RPT#14 改成 RPT#15,本例程序段为:,.title “cjy6.asm”,.mmregs,STACK .usect“STACK”,10H,62,第62页,.bss num,1 ;为分子分配单元,.bss den,1 ;为分母分配单元,.bss quot,1 ;为商分配

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服