2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件

上传人:我*** 文档编号:149042654 上传时间:2020-10-24 格式:PPT 页数:35 大小:375KB
返回 下载 相关 举报
2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件_第1页
第1页 / 共35页
2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件_第2页
第2页 / 共35页
2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件_第3页
第3页 / 共35页
2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件_第4页
第4页 / 共35页
2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件》由会员分享,可在线阅读,更多相关《2019年-DSP戴明帧主编第5章汇编语言程序设计ppt课件(35页珍藏版)》请在金锄头文库上搜索。

1、第五章 汇编语言程序设计,概述 程序的控制与转移(重点) 堆栈的使用方法 加、减法和乘法运算(重点) 重复操作(重点) 数据块传送(重点) 双操作数乘法 长字运算和并行运算,2,概述,汇编语言源程序格式:,标号:,助记符,操作数,;注释,用空格或 T 隔开,书写格式规则详见P140,汇编语言程序以.asm为扩展名。一条语句占源程序的一行,汇编器每行最多读200个字符。因此,语句的执行部分必须限制在200个字符以内。,3,5.1程序的控制与转移,4,5.1程序的控制与转移,5,5.1程序的控制与转移,组间条件只能“或” 第一组两类条件可以“与”/“或”,但累加器必须是同一个 第二组三类条件可以各

2、选一个条件“与”/“或” 同组同类条件不能选择两个,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中两个条件相“或”怎么办?,8,循环操作,5.1程序的控制与转移,.bssx, 5 ;为变量x分配5个存储单元 .bssy,1 ;为变量y分配1个存储单元 STM#x, AR

3、1 ; AR1指向x的首地址 STM#4,AR2 ;将操作数#4赋给AR2 LD#0,A ;将累加器A清0 loop:ADD*AR1+, A ;执行加法运算,结果存入累加器A中 BANZloop, *AR2- ; AR2不为0转移,重复执行5次 STLA,y ;将结果(A的低16位)送往变量y存储单元,.title Ex534.asm ;为汇编语言源文件取名 .mmregs ;定义存储器映像寄存器 stack.usectSTACK, 10h ;为堆栈空间分配16个存储单元 .bssx, 5 ;为变量x分配5个存储单元 .bssy,1 ;为变量y分配1个存储单元 .def start ;定义标号

4、start .data ;定义数据代码 table: .word1,2,3,4,5 ;为标号table开始的5个存储单元赋值 .text ;定义文本代码段 start:STM#0, SWWSR ; SWWSR置0,不插等待周期 STM#stack+10h, SP ;设置堆栈指针 CALLinit ;调用子程序init STM#x, AR1 ;将变量x的首地址赋给AR1 STM#4,AR2 ;将操作数#4赋给AR2 LD#0,A ;将累加器A清0 loop:ADD*AR1+, A ;执行加法运算,结果存入累加器A中 BANZloop, *AR2- ; AR2不为0转移,重复执行5次 STLA,y

5、 ;将结果(A的低16位)送往变量y存储单元 init: STM#x, AR1 ; AR1指向x的首地址 RPT#4 ;重复执行下条指令5次 MVPDtable, *AR1+ ;重复传递共5个数据 RET ;子程序返回 .end ;源程序结束,利用CMPR指令进行比较操作 指定的ARx寄存器(x=17)与AR0比较,测试条件成立TC置1。 例:5-3比较操作后条件分支转移,5.1程序的控制与转移,STM #5, AR1 ;(AR1)=5 STM #10, AR0 ; (AR0)=10 loop: MAR *AR1+ ; AR1=AR1+1 CMPR LT, AR1 ;若AR1- AR0 0,则

6、TC=1,否则为0 BC loop, TC ;若AR1- AR0 0,则循环 若AR1=AR0,则顺序执行,5.2堆栈的使用方法,特点: 16位堆栈指针SP 向堆栈中压入数据时,堆栈指针从高地址向低地址移动 压入堆栈时,先SP-1,再压入数据;弹出操作数时,先弹出数据,后SP+1,10,设置好堆栈后,就可以使用堆栈了,如: CALL pmad ;(SP)-1SP, (PC)+2TOS,pmadPC RET ;(TOS)PC,(SP)+1SP,5.3 加、减法和乘法运算,例5-4 计算z=x+y-w 使用:加法指令ADD,减法指令SUB,11,LD x, A ADD y, A SUB w, A

7、STL A, z,;取x值,A=x ;完成x+y运算,A=x+y ;完成x+y-w运算,A= x+y-w ;计算结果(A的低16位)存入变量z中,5.3 加、减法和乘法运算,例5-5 计算y=mx+b 使用:乘法指令MPY,加法指令ADD,12,LD m, T MPY x, A ADD b, A STL A, y,;取系数m值,T=m ;完成mx乘积,A=mx ;完成mx+b运算,A=mx+b ;计算结果B的低16位存入y中,5.3 加、减法和乘法运算,例5-6 计算y=x1*a1+x2*a2 使用:乘法指令MPY,乘法累加指令MAC,13,LD x1, T MPY a1, A LD x2,

8、T MAC a2, A STL A, y STH A, y+1,;取变量值x1,T=x1 ;完成乘法x1a1运算,A=x1a1 ;取变量值x2, T=x2 ;乘法累加,A=x1a1+x2a2 ;计算结果的低字AL存入y中 ;计算结果的高字AH存入y+1中,5.3 加、减法和乘法运算,例5-7 计算 使用:乘法累加指令MAC,重复执行下条指令RPT,14,15,加法/减法,16,.title Ex_543.asm“ ;为汇编语言源文件取名 .mmregs ;定义存储器映像寄存器 stack .usectSTACK, 10H ;为堆栈空间分配16个存储单元 .bssa,4 ;为系数a分配4个存储单

9、元 .bssx,4 ;为变量x分配4个存储单元 .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次 MVPDtable, *AR1+ ;从程序存储器向数据存储器,重复传递共8个数据 C

10、ALLSUM ;调用子程序SUM end: 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存储单元 RET ;子程序返回 .end ;源程序结束,【例5-8】在例5-7的4项乘积ai xi(i=1,2,3,4)中找出最大值,并存放累加器A中。,程序: STM #a, AR1 STM #x, AR2 STM #2, AR3 L

11、D *AR1+,T MPY *AR2+,A loop1: LD *AR1+,T MPY *AR2+,B MAX A BANZ loop1,*AR3-,;系数a的首地址赋给AR1 ;变量x的首地址赋给AR2 ;设置计数器AR3=2 ;取系数T=a1,并修改AR1 ;乘法运算A=a1x1,并修改AR2 ;取系数T=ai,并修改AR1 ;乘法运算B=aixi,并修改AR2 ;求A和B中的最大值 ,结果存入A ;若AR30,则循环,并修改AR3 若AR3=0,则顺序执行,5.3 加、减法和乘法运算,18,5.4 重复操作,例5-9 对一个数组进行初始化X5=0,0,0,0,0,【例5-9】对数组进行初

12、始化,使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+,注意:, 对x5中的5个元素置0,重复次数为4,即执行1次STL A,AR1+指令后,再重复执行4次;, RPTZ指令设定重复次数后,再对累加器清零。,5.4 重复操作,20,块重复操作,例5-10 对数组X5中每个元素加1,例5-10 对数组x5中的每一元素加1。,.bss x, 5 begin: LD #1,B STM #4,BRC STM #x,AR4 RPTB

13、next-1 ADD *AR4,B,A STL A,*AR4+ next: LD #0,B ,;设置数组空间 ;立即数1送入B ;设置重复次数,BRC=4,循环5次 ;数组首地址x送入AR4 ;设置循环结束地址 ;数组数据与B相加,结果存入A中 ;存储数组结果,并修改地址 ;B清0,块重复操作,22,5.5 数据块传送,数据传送指令的特点:,传送速度比加载和存储指令要快; 数据传送不通过累加器; 可寻址程序存储器; 与RPT结合,可实现数据块传送。,23,5.5 数据块传送,例5-11数组X5=1,2,3,4,5初始化(程序存储器和数据存储器之间的数据传送),24,.data TBL: .wo

14、rd 1,2,3,4,5 .bss x,5 .text START: STM #x,AR5 RPT #4 MVPD TBL,*AR5+ ,;定义数据代码段 ;为标号TBL开始的5个存储单元赋初值 ;为变量x分配5个存储单元 ;定义文本代码段 ;将变量x的首地址赋给AR5 ;将下条指令重复执行5次 ;将数据送入X对应地址单元中,5.5 数据块传送,例5-12编写一段程序将数据存储器中的数组x20复制到数组y20。(数据存储器和数据存储器之间的数据传送),25,.bss x,20 .bss y,20 .text LD #x,AR2 LD #y,AR3 RPT #19 MVDD *AR2+,*AR3

15、+ .,;为变量x分配20个存储单元 ;为变量y分配20个存储单元 ;定义文本代码段 ;将变量x的首地址赋给AR2 ;将变量y的首地址赋给AR3 ;将下条指令重复执行20次 ;将(AR2) (AR3),5.5 数据块传送,用双操作数指令编程的特点: 单周期内通过C总线和D总线寻址两个数据 用间接寻址方式获得操作数,且只能用AR2AR5 占用的程序空间小 运行的速度快,26,5.6 双操作数乘法,表5-3 MAC型双操作数指令,寻址方式:*ARn、 *ARn+、 *ARn-、 *ARn+0%,编制求解 的程序段。,27,5.6 双操作数乘法,单操作数指令方案 双操作数指令方案 LD #0,B LD #0,B STM #a,AR2 STM #a,AR2 STM #x,AR3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号