DSP戴明帧主编第5章汇编语言程序设计

上传人:无*** 文档编号:185664641 上传时间:2023-02-05 格式:PPT 页数:35 大小:900.52KB
收藏 版权申诉 举报 下载
DSP戴明帧主编第5章汇编语言程序设计_第1页
第1页 / 共35页
DSP戴明帧主编第5章汇编语言程序设计_第2页
第2页 / 共35页
DSP戴明帧主编第5章汇编语言程序设计_第3页
第3页 / 共35页
资源描述:

《DSP戴明帧主编第5章汇编语言程序设计》由会员分享,可在线阅读,更多相关《DSP戴明帧主编第5章汇编语言程序设计(35页珍藏版)》请在装配图网上搜索。

1、第五章第五章 汇编语言程序设计汇编语言程序设计概述概述程序的控制与转移程序的控制与转移(重点)(重点)堆栈的使用方法堆栈的使用方法加、减法和乘法运算加、减法和乘法运算(重点)(重点)重复操作重复操作(重点)(重点)数据块传送数据块传送(重点)(重点)双操作数乘法双操作数乘法长字运算和并行运算长字运算和并行运算第第5章章 汇编语言汇编语言程程2概述p汇编语言源程序格式:汇编语言源程序格式:标号标号:助记符助记符操作数操作数;注释;注释用空格或用空格或 T 隔开隔开p书写格式规则详见书写格式规则详见P140 汇编语言程序以汇编语言程序以.asm为扩展名。一条语句占源为扩展名。一条语句占源程序的一行

2、,汇编器每行最多读程序的一行,汇编器每行最多读200个字符。因此个字符。因此,语句的执行部分必须限制在,语句的执行部分必须限制在200个字符以内。个字符以内。第第5章章 汇编语言汇编语言程程3分分 类类 指指 令令 说说 明明 无条件无条件分支转移分支转移 BD 用该指令指定的地址加载用该指令指定的地址加载PC PC BACCD 用累加器的低用累加器的低1616位指定的地址加载位指定的地址加载PC PC 条件条件分支转移分支转移 BCD 若满足指令给定条件,用该指令指定的地若满足指令给定条件,用该指令指定的地 址加载址加载PC PC 5.1程序的控制与转移程序的控制与转移第第5章章 汇编语言汇

3、编语言程程4分分 类类 指指 令令 说说 明明 无条件无条件调用调用 CALLD 将返回的地址压入堆栈,并用该指令指定的地址加将返回的地址压入堆栈,并用该指令指定的地址加载载PC CALAD 将返回的地址压入堆栈,用累加器将返回的地址压入堆栈,用累加器A或或B指定的地址指定的地址加载加载PC 条件调条件调用用 CCD 如果满足指令给定条件,将返回的地址压入堆栈,如果满足指令给定条件,将返回的地址压入堆栈,并用该指令指定的地址加载并用该指令指定的地址加载PC分分 类类 指指 令令 说说 明明 无条件返回无条件返回 RETD 将堆栈顶部的返回地址加载到将堆栈顶部的返回地址加载到PC。条件返回条件返

4、回 RCD 如果满足指令给定条件,将堆栈顶部的返回地址如果满足指令给定条件,将堆栈顶部的返回地址加载到加载到PC。5.1程序的控制与转移程序的控制与转移第第5章章 汇编语言汇编语言程程5操作符号操作符号 条条 件件说说 明明操作符号操作符号条条 件件说说 明明AEQA=0累加器累加器A等于等于0 AOVAOV=1 累加器累加器A溢出溢出 BEQB=0累加器累加器B等于等于0 BOVBOV=1 累加器累加器B溢出溢出 ANEQA0累加器累加器A不等于不等于0 ANOVAOV=0 累加器累加器A不溢出不溢出 BNEQB0累加器累加器B不等于不等于0 BNOVBOV=0 累加器累加器B不溢出不溢出

5、ALTA0累加器累加器A小于小于0 CC=1ALU进位位置进位位置1 BLTB0累加器累加器A大于大于0 BIO 低低 信号电平为低信号电平为低 BGTB0累加器累加器B大于大于0 NBIO 高高 信号电平为高信号电平为高 AGEQA0累加器累加器A大于等于大于等于0 UNC无无无条件操作无条件操作 BGEQB0累加器累加器B大于等于大于等于0 BIOBIOBIOBIO5.1程序的控制与转移程序的控制与转移第第5章章 汇编语言汇编语言程程第第1组组第第2组组A类类B类类A类类B类类C类类EQ,NEQ,LTLEQ,GT,GEQOVNOVTCNTCCNCBIONBIO5.1程序的控制与转移程序的控

6、制与转移第第5章章 汇编语言汇编语言程程例例5-1 5-1 条件分支转移条件分支转移 RC TC CC sub,BNEQ BC new,AGT,AOV;TC=1返回,返回,TC=0继续继续;B0,调用,调用sub,B=0继续继续;A0且溢出且溢出(“与与”的关系的关系),转至,转至new,否则继续,否则继续5.1程序的控制与转移程序的控制与转移 BC new,AGT BC new,AOV ;A0,转至,转至new,否则继续,否则继续 ;A溢出,转至溢出,转至new,否则继续,否则继续若例若例1中两个条件相中两个条件相“或或”怎么办?怎么办?第第5章章 汇编语言汇编语言程程8循环操作5.1程序的

7、控制与转移程序的控制与转移.bssx,5 ;为变量为变量x分配分配5个存储单元个存储单元.bssy,1 ;为变量为变量y分配分配1个存储单元个存储单元 STM#x,AR1 ;AR1指向指向x的首地址的首地址STM#4,AR2 ;将操作数将操作数#4赋给赋给AR2LD#0,A ;将累加器将累加器A清清0loop:ADD*AR1+,A ;执行加法运算,结果存入累加器执行加法运算,结果存入累加器A中中BANZloop,*AR2-;AR2不为不为0转移,重复执行转移,重复执行5次次STLA,y ;将结果(将结果(A的低的低16位)送往变量位)送往变量y存储单元存储单元.title Ex534.asm

8、;为汇编语言源文件取名为汇编语言源文件取名.mmregs ;定义存储器映像寄存器定义存储器映像寄存器stack.usectSTACK,10h ;为堆栈空间分配为堆栈空间分配16个存储单元个存储单元.bssx,5 ;为变量为变量x分配分配5个存储单元个存储单元.bssy,1 ;为变量为变量y分配分配1个存储单元个存储单元 .def start ;定义标号定义标号start .data ;定义数据代码定义数据代码table:.word1,2,3,4,5 ;为标号为标号table开始的开始的5个存储单元赋值个存储单元赋值 .text ;定义文本代码段定义文本代码段start:STM#0,SWWSR

9、;SWWSR置置0,不插等待周期,不插等待周期STM#stack+10h,SP ;设置堆栈指针设置堆栈指针 CALLinit ;调用子程序调用子程序init STM#x,AR1 ;将变量将变量x的首地址的首地址赋给赋给AR1STM#4,AR2 ;将操作数将操作数#4赋给赋给AR2LD#0,A ;将累加器将累加器A清清0loop:ADD*AR1+,A ;执行加法运算,结果存入累加器执行加法运算,结果存入累加器A中中BANZloop,*AR2-;AR2不为不为0转移,重复执行转移,重复执行5次次STLA,y ;将结果(将结果(A的低的低16位)送往变量位)送往变量y存储单元存储单元init:STM

10、#x,AR1 ;AR1指向指向x的首地址的首地址RPT#4 ;重复执行下条指令重复执行下条指令5次次MVPDtable,*AR1+;重复传重复传递递共共5个数据个数据 RET ;子程序返回子程序返回 .end ;源程序结束源程序结束第第5章章 汇编语言汇编语言程程利用利用CMPR指令进行比较操作指令进行比较操作指定的指定的ARx寄存器(寄存器(x=17)与)与AR0比较,测试条件成立比较,测试条件成立TC置置1。例:例:5-3比较操作后条件分支转移比较操作后条件分支转移 5.1程序的控制与转移程序的控制与转移 STM#5,AR1 ;(AR1)=5 STM#10,AR0 ;(AR0)=10 lo

11、op:MAR *AR1+;AR1=AR1+1 CMPR LT,AR1 ;若若AR1-AR0 0,则则TC=1,否则为否则为0 BC loop,TC ;若若AR1-AR0 0,则循环则循环 若若AR1=AR0,则顺序执行则顺序执行第第5章章 汇编语言汇编语言程程5.2堆栈的使用方法堆栈的使用方法10第第5章章 汇编语言汇编语言程程5.3 加、减法和乘法运算加、减法和乘法运算11第第5章章 汇编语言汇编语言程程5.3 加、减法和乘法运算加、减法和乘法运算12第第5章章 汇编语言汇编语言程程5.3 加、减法和乘法运算加、减法和乘法运算13第第5章章 汇编语言汇编语言程程5.3 加、减法和乘法运算加、

12、减法和乘法运算14第第5章章 汇编语言汇编语言程程15加法/减法指定堆栈空间指定堆栈空间为变量预留空间为变量预留空间初值序列初值序列初始化变量初始化变量设置堆栈指针设置堆栈指针利用利用MAC和和RPT求乘累加和求乘累加和第第5章章 汇编语言汇编语言程程16.title Ex_543.asm“;为汇编语言源文件取名为汇编语言源文件取名.mmregs ;定义存储器映像寄存器定义存储器映像寄存器stack.usectSTACK,10H ;为堆栈空间分配为堆栈空间分配16个存储单元个存储单元.bssa,4 ;为为系数系数a分配分配4个存储单元个存储单元.bssx,4 ;为变量为变量x分配分配4个存储单

13、元个存储单元.bssy,1 ;为变量为变量y分配分配1个存储单元个存储单元.defstart ;定义标号定义标号start.data ;定义数据代码定义数据代码table:.word1,2,3,4 ;为标号为标号table开始的开始的.word8,6,4,2 ;8个存储单元赋值个存储单元赋值.text ;定义文本代码段定义文本代码段start:STM#0,SWWSR ;SWWSR置置0,不插等待周期,不插等待周期 STM#stack+10H,SP;设置堆栈指针设置堆栈指针 STM#a,AR1 ;AR1指向指向a的首地址的首地址 RPT#7 ;重复执行下条指令重复执行下条指令8次次 MVPDta

14、ble,*AR1+;从程序存储器向数据存储器,从程序存储器向数据存储器,重复传重复传递递共共8个数据个数据 CALLSUM ;调用子程序调用子程序SUMend:Bend ;循环等待循环等待SUM:STM#a,AR3 ;将系数将系数a的首地址的首地址赋给赋给AR3 STM#x,AR4 ;将变量将变量x的首地址的首地址赋给赋给AR4 RPTZA,#3 ;将累加器清将累加器清0,重复执行下条指令,重复执行下条指令4次次 MAC*AR3+,*AR4+,A;执行乘法累加运算,结果存入累计器执行乘法累加运算,结果存入累计器A中中 STLA,y ;将结果(将结果(A的低的低16位)送往变量位)送往变量y存储

15、单元存储单元 RET ;子程序返回子程序返回.end ;源程序结束源程序结束第第5章章 汇编语言汇编语言程程【例例5 5-8-8】在例】在例5-75-7的的4 4项乘积项乘积a ai i x xi i(i i=1,2,3,4)=1,2,3,4)中找出最中找出最大值,并存放累加器大值,并存放累加器A A中。中。程序:程序:STM#a,AR1 STM#x,AR2 STM#2,AR3 LD *AR1+,T MPY *AR2+,Aloop1:LD *AR1+,T MPY *AR2+,B MAX A BANZ loop1,*AR3-;系数系数a a的首地址赋给的首地址赋给AR1AR1;变量变量x x的首

16、地址赋给的首地址赋给AR2AR2;设置计数器设置计数器AR3=2AR3=2;取系数取系数T=aT=a1 1,并修改并修改AR1AR1;乘法运算乘法运算A=aA=a1 1x x1 1,并修改并修改AR2AR2 ;取系数取系数T=T=aiai,并修改并修改AR1AR1;乘法运算乘法运算B=B=a ai ix xi i,并修改并修改AR2AR2 ;求求A A和和B B中的最大值中的最大值 ,结果存入,结果存入A A;若若AR30,AR30,则循环则循环,并修改并修改AR3AR3 若若AR3=0AR3=0,则顺序执行则顺序执行5.3 加、减法和乘法运算加、减法和乘法运算第第5章章 汇编语言汇编语言程程

17、185.4 重复操作重复操作例例5-9 对一个数组进行初始化对一个数组进行初始化X5=0,0,0,0,0第第5章章 汇编语言汇编语言程程【例例5-9】对数组进行初始化,使】对数组进行初始化,使x5=0,0,0,0,0。.bss x,5 STM#x,AR1 LD#0,A RPT#4 STL A,*AR1+.bss x,5 STM#x,AR1 RPTZ A,#4 STL A,*AR1+5.4 重复操作重复操作第第5章章 汇编语言汇编语言程程20块重复操作例例5-10 对数组对数组X5中每个元素加中每个元素加1第第5章章 汇编语言汇编语言程程例例5 5-10-10 对数组对数组x5x5中的每一元素加

18、中的每一元素加1 1。.bss x,5begin:LD#1,B STM#4,BRC STM#x,AR4 RPTB next-1 ADD *AR4,B,A STL A,*AR4+next:LD#0,B 块重复操作第第5章章 汇编语言汇编语言程程225.5 数据块传送数据块传送数据传送指令的特点数据传送指令的特点:传送速度比加载和存储指令要快;传送速度比加载和存储指令要快;数据传送不通过累加器;数据传送不通过累加器;可寻址程序存储器;可寻址程序存储器;与与RPTRPT结合,可实现数据块传送。结合,可实现数据块传送。第第5章章 汇编语言汇编语言程程235.5 数据块传送数据块传送第第5章章 汇编语言

19、汇编语言程程24.dataTBL:.word 1,2,3,4,5 .bss x,5 .textSTART:STM#x,AR5 RPT#4 MVPD TBL,*AR5+5.5 数据块传送数据块传送第第5章章 汇编语言汇编语言程程25.bss x,20 .bss y,20 .textLD#x,AR2LD#y,AR3RPT#19MVDD *AR2+,*AR3+.5.5 数据块传送数据块传送第第5章章 汇编语言汇编语言程程265.6 双操作数乘法双操作数乘法指令指令功能功能 MPY Xmem,Ymem,dst dst=Xmem*Ymem MAC Xmem,Ymem,scrdst dst=scr+Xme

20、m*Ymem MAS Xmem,Ymem,scrdst dst=scr-Xmem*Ymem MACP Smem,Pmad,scrdst dst=scr+Smem*Pmad表表5-3 MAC型双操作数指令型双操作数指令寻址方式:寻址方式:*ARn、*ARn+、*ARn-、*ARn+0%第第5章章 汇编语言汇编语言程程275.6 双操作数乘法双操作数乘法 单操作数指令方案单操作数指令方案 双操作数指令方案双操作数指令方案 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 R

21、PTB done-1 LD *AR2+,T MPY *AR2+,*AR3+,A3T MPY *AR3+,A 2T ADD A,B ADD A,Bdone:STH B,y done:STH B,y STL B,y+1 STL B,y+1 节省的总机器周期数节省的总机器周期数=1T*N(迭代次数迭代次数)=NT。第第5章章 汇编语言汇编语言程程285.6 双操作数乘法双操作数乘法STM#x,AR2STM#a,AR3RPTZ A,#19 ;2 个机器周期个机器周期MAC *AR2+,*AR3+,A ;1 个机器周期个机器周期STH A,ySTL A,y+1 第第5章章 汇编语言汇编语言程程29作业第

22、第5章章 汇编语言汇编语言程程pC54x305.7 长字运算和并行运算长字运算和并行运算 长字指令长字指令 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 单周期单周期第第5章章 汇编语言汇编语言程程p长操作数在存储器的排列方法长操作数在存储器的排列方法p 偶地址排列法偶地址排列法p奇地址排列法奇地址排列法315.

23、7 长字运算和并行运算长字运算和并行运算第第5章章 汇编语言汇编语言程程325.7 长字运算和并行运算长字运算和并行运算 偶地址排列法举例偶地址排列法举例 DLD *AR3+,A 执行前:执行前:执行后:执行后:A=00 0000 0000 A=00 6CAC BD90AR3=0100 AR3=0102(0100h)=6CAC(高字)(高字)(0100h)=6CAC(0101h)=BD90(低字)(低字)(0101h)=BD90 奇地址排列法举例奇地址排列法举例 DLD *AR3+,A 执行前:执行前:执行后:执行后:A=00 0000 0000 A=00 BD90 6CAC AR3=0101

24、 AR3=0103 (0100h)=6CAC(低字)(低字)(0100h)=6CAC (0101h)=BD90(高字)(高字)(0101h)=BD90第第5章章 汇编语言汇编语言程程335.7 长字运算和并行运算长字运算和并行运算p同时利用同时利用D总线和总线和E总线总线p4种并行运算指令:种并行运算指令:p 并行并行加载加载和和乘法乘法指令指令p 并行并行加载加载和和存储存储指令指令p 并行并行存储存储和和乘法乘法指令指令p 并行并行存储存储和和加加/减法减法指令指令并行指令均为单字单周期指令;并行指令均为单字单周期指令;并行指令先存储,后加载或算术运算;并行指令先存储,后加载或算术运算;并

25、行指令的操作均在累加器的高位中进行,并且大多数指并行指令的操作均在累加器的高位中进行,并且大多数指令受令受ASMASM位的影响。位的影响。第第5章章 汇编语言汇编语言程程345.7 长字运算和并行运算长字运算和并行运算 例例5-16 编写计算编写计算 z=x+y 和和 f=e+d 程序段程序段.bss x,3.bss d,3STM#x,AR5STM#d,AR2LD#0,ASMLD *AR5+,16,AADD *AR5+,16,AST A,*AR5|LD *AR2+,BADD *AR2+,16,BSTH B,*AR2本章总结本章总结概述概述程序的控制与转移程序的控制与转移(重点)(重点)堆栈的使用方法堆栈的使用方法加、减法和乘法运算加、减法和乘法运算(重点)(重点)重复操作重复操作(重点)(重点)数据块传送数据块传送(重点)(重点)双操作数乘法双操作数乘法长字运算和并行运算长字运算和并行运算

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!