




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1DSP戴明帧主编汇编语言程序设计2分类指令说明无条件分支转移
B[D]
用该指令指定的地址加载PC
BACC[D]
用累加器的低16位指定的地址加载PC条件分支转移
BC[D]
若满足指令给定条件,用该指令指定的地址加载PC5.1程序的控制与转移第1页/共34页3分类指令说明无条件调用
CALL[D]
将返回的地址压入堆栈,并用该指令指定的地址加载PC
CALA[D]
将返回的地址压入堆栈,用累加器A或B指定的地址加载PC条件调用
CC[D]
如果满足指令给定条件,将返回的地址压入堆栈,并用该指令指定的地址加载PC分类
指令
说明
无条件返回
RET[D]
将堆栈顶部的返回地址加载到PC。条件返回
RC[D]
如果满足指令给定条件,将堆栈顶部的返回地址加载到PC。5.1程序的控制与转移第2页/共34页4操作符号条件说明操作符号条件说明AEQA=0累加器A等于0AOVAOV=1累加器A溢出BEQB=0累加器B等于0BOVBOV=1累加器B溢出ANEQA≠0累加器A不等于0ANOVAOV=0累加器A不溢出BNEQB≠0累加器B不等于0BNOVBOV=0累加器B不溢出ALTA<0累加器A小于0CC=1ALU进位位置1BLTB<0累加器B小于0NCC=0ALU进位位置0ALEQA≤0累加器A小于等于0TCTC=1测试/控制标志位置1BLEQB≤0累加器B小于等于0NTCTC=0测试/控制标志位置0AGTA>0累加器A大于0BIO
低
信号电平为低BGTB>0累加器B大于0NBIO
高
信号电平为高AGEQA≥0累加器A大于等于0UNC无无条件操作BGEQB≥0累加器B大于等于05.1程序的控制与转移第3页/共34页第1组第2组A类B类A类B类C类EQ,NEQ,LTLEQ,GT,GEQOVNOVTCNTCCNCBIONBIO组间条件只能“或”第一组两类条件可以“与”/“或”,但累加器必须是同一个第二组三类条件可以各选一个条件“与”/“或”同组同类条件不能选择两个5.1程序的控制与转移第4页/共34页例5-1条件分支转移
RCTCCCsub,BNEQ
BCnew,AGT,AOV
;TC=1返回,TC=0继续;B≠0,调用sub,B=0继续;A>0且溢出(“与”的关系),转至new,否则继续5.1程序的控制与转移
BCnew,AGT
BCnew,AOV
;A>0,转至new,否则继续;A溢出,转至new,否则继续若例1中两个条件相“或”怎么办?第5页/共34页7循环操作5.1程序的控制与转移
.bss x,5;为变量x分配5个存储单元 .bss y,1;为变量y分配1个存储单元
STM #x,AR1;AR1指向x的首地址 STM #4,AR2;将操作数#4赋给AR2 LD #0,A;将累加器A清0loop:
ADD *AR1+,A;执行加法运算,结果存入累加器A中 BANZ loop,*AR2-;AR2不为0转移,重复执行5次 STL A,@y;将结果(A的低16位)送往变量y存储单元 .title "Ex534.asm";为汇编语言源文件取名 .mmregs;定义存储器映像寄存器stack .usect "STACK",10h;为堆栈空间分配16个存储单元
.bss x,5;为变量x分配5个存储单元 .bss y,1;为变量y分配1个存储单元.defstart;定义标号start.data;定义数据代码table:
.word 1,2,3,4,5;为标号table开始的5个存储单元赋值.text;定义文本代码段start:
STM #0,SWWSR;SWWSR置0,不插等待周期 STM #stack+10h,SP;设置堆栈指针
CALL init;调用子程序init
STM #x,AR1;将变量x的首地址赋给AR1 STM #4,AR2;将操作数#4赋给AR2 LD #0,A;将累加器A清0loop:
ADD *AR1+,A;执行加法运算,结果存入累加器A中 BANZ loop,*AR2-;AR2不为0转移,重复执行5次 STL A,@y;将结果(A的低16位)送往变量y存储单元init:STM #x,AR1;AR1指向x的首地址 RPT #4;重复执行下条指令5次 MVPD table,*AR1+;重复传递共5个数据
RET;子程序返回.end;源程序结束第6页/共34页利用CMPR指令进行比较操作指定的ARx寄存器(x=1~7)与AR0比较,测试条件成立TC置1。例:5-3比较操作后条件分支转移5.1程序的控制与转移STM#5,AR1;(AR1)=5
STM#10,AR0;(AR0)=10loop:……MAR*AR1+;AR1=AR1+1……CMPRLT,AR1;若AR1-AR0<0,则TC=1,否则为0
BCloop,TC;若AR1-AR0<0,则循环
若AR1=AR0,则顺序执行第7页/共34页5.2堆栈的使用方法特点:16位堆栈指针SP向堆栈中压入数据时,堆栈指针从高地址向低地址移动压入堆栈时,先SP-1,再压入数据;弹出操作数时,先弹出数据,后SP+1
9设置好堆栈后,就可以使用堆栈了,如:CALLpmad;(SP)-1→SP,(PC)+2→TOS,pmad→PCRET;(TOS)→PC,(SP)+1→SP
第8页/共34页5.3加、减法和乘法运算例5-4计算z=x+y-w使用:加法指令ADD,减法指令SUB10LD@x,AADD@y,ASUB@w,ASTLA,@z;取x值,A=x;完成x+y运算,A=x+y;完成x+y-w运算,A=x+y-w;计算结果(A的低16位)存入变量z中第9页/共34页5.3加、减法和乘法运算例5-5计算y=mx+b使用:乘法指令MPY,加法指令ADD11LD@m,TMPY@x,AADD@b,ASTLA,@y;取系数m值,T=m;完成mx乘积,A=mx;完成mx+b运算,A=mx+b;计算结果B的低16位存入y中第10页/共34页5.3加、减法和乘法运算例5-6计算y=x1*a1+x2*a2使用:乘法指令MPY,乘法累加指令MAC12LD@x1,TMPY@a1,ALD@x2,TMAC@a2,ASTLA,@ySTHA,@y+1;取变量值x1,T=x1;完成乘法x1a1运算,A=x1a1;取变量值x2,T=x2;乘法累加,A=x1a1+x2a2;计算结果的低字AL存入y中;计算结果的高字AH存入y+1中第11页/共34页5.3加、减法和乘法运算例5-7计算使用:乘法累加指令MAC,重复执行下条指令RPT13第12页/共34页14加法/减法指定堆栈空间为变量预留空间初值序列初始化变量设置堆栈指针利用MAC和RPT求乘累加和第13页/共34页15
.title"Ex_543.asm“;为汇编语言源文件取名 .mmregs;定义存储器映像寄存器stack .usect "STACK",10H;为堆栈空间分配16个存储单元 .bss
a,4;为系数a分配4个存储单元 .bss x,4;为变量x分配4个存储单元 .bss y,1;为变量y分配1个存储单元 .def start;定义标号start .data;定义数据代码table: .word 1,2,3,4;为标号table开始的 .word 8,6,4,2;8个存储单元赋值 .text;定义文本代码段start: STM #0,SWWSR;SWWSR置0,不插等待周期 STM #stack+10H,SP;设置堆栈指针 STM #a,AR1;AR1指向a的首地址 RPT #7;重复执行下条指令8次 MVPD table,*AR1+;从程序存储器向数据存储器,重复传递共8个数据
CALL SUM;调用子程序SUMend: B end;循环等待SUM: STM #a,AR3;将系数a的首地址赋给AR3 STM #x,AR4;将变量x的首地址赋给AR4 RPTZ A,#3;将累加器清0,重复执行下条指令4次 MAC *AR3+,*AR4+,A;执行乘法累加运算,结果存入累计器A中 STL A,@y;将结果(A的低16位)送往变量y存储单元 RET;子程序返回 .end;源程序结束第14页/共34页【例5-8】在例5-7的4项乘积aixi(i=1,2,3,4)中找出最大值,并存放累加器A中。
程序:
STM#a,AR1STM#x,AR2STM#2,AR3LD*AR1+,TMPY*AR2+,Aloop1:LD*AR1+,TMPY*AR2+,BMAXABANZloop1,*AR3-;系数a的首地址赋给AR1;变量x的首地址赋给AR2;设置计数器AR3=2;取系数T=a1,并修改AR1;乘法运算A=a1x1,并修改AR2
;取系数T=ai,并修改AR1;乘法运算B=aixi,并修改AR2
;求A和B中的最大值,结果存入A;若AR3≠0,则循环,并修改AR3
若AR3=0,则顺序执行5.3加、减法和乘法运算第15页/共34页175.4重复操作例5-9对一个数组进行初始化X[5]={0,0,0,0,0}第16页/共34页【例5-9】对数组进行初始化,使x[5]={0,0,0,0,0}。.bssx,5STM#x,AR1LD#0,ARPT#4STLA,*AR1+
.bssx,5STM#x,AR1
RPTZA,#4STLA,*AR1+注意:
①对x[5]中的5个元素置0,重复次数为4,即执行1次STLA,AR1+指令后,再重复执行4次;②RPTZ指令设定重复次数后,再对累加器清零。
5.4重复操作第17页/共34页19块重复操作例5-10对数组X[5]中每个元素加1第18页/共34页例5-10对数组x[5]中的每一元素加1。
.bssx,5begin:LD#1,BSTM#4,BRCSTM#x,AR4RPTBnext-1ADD*AR4,B,ASTLA,*AR4+next:LD#0,B…;设置数组空间;立即数1送入B;设置重复次数,BRC=4,循环5次;数组首地址x送入AR4;设置循环结束地址;数组数据与B相加,结果存入A中;存储数组结果,并修改地址;B清0块重复操作第19页/共34页215.5数据块传送数据传送指令的特点:①
传送速度比加载和存储指令要快;②数据传送不通过累加器;③
可寻址程序存储器;④与RPT结合,可实现数据块传送。
第20页/共34页225.5数据块传送第21页/共34页例5-11数组X[5]={1,2,3,4,5}初始化(程序存储器和数据存储器之间的数据传送)23
.data
TBL:.word1,2,3,4,5.bssx,5 .textSTART:STM#x,AR5
RPT#4 MVPDTBL,*AR5+ …;定义数据代码段;为标号TBL开始的5个存储单元赋初值;为变量x分配5个存储单元;定义文本代码段;将变量x的首地址赋给AR5;将下条指令重复执行5次;将数据送入X对应地址单元中5.5数据块传送第22页/共34页例5-12编写一段程序将数据存储器中的数组x[20]复制到数组y[20]。(数据存储器和数据存储器之间的数据传送)24
.bssx,20 .bssy,20 .text LD#x,AR2 LD#y,AR3 RPT#19 MVDD*AR2+,*AR3+…..;为变量x分配20个存储单元;为变量y分配20个存储单元;定义文本代码段;将变量x的首地址赋给AR2;将变量y的首地址赋给AR3;将下条指令重复执行20次;将((AR2))((AR3))5.5数据块传送第23页/共34页用双操作数指令编程的特点:①单周期内通过C总线和D总线寻址两个数据②用间接寻址方式获得操作数,且只能用AR2~AR5③占用的程序空间小④运行的速度快255.6双操作数乘法指令功能MPYXmem,Ymem,dst
dst=Xmem*YmemMACXmem,Ymem,scr[dst]
dst=scr+Xmem*YmemMASXmem,Ymem,scr[dst]
dst=scr-Xmem*YmemMACPSmem,Pmad,scr[dst]
dst=scr+Smem*Pmad表5-3MAC型双操作数指令寻址方式:*ARn、*ARn+、*ARn-、*ARn+0%第24页/共34页编制求解的程序段。265.6双操作数乘法
单操作数指令方案双操作数指令方案LD#0,BLD#0,B STM#a,AR2STM#a,AR2 STM#x,AR3STM#x,AR3 STM#19,BRCSTM#19,BRC RPTBdone-1RPTBdone-1 LD*AR2+,TMPY*AR2+,*AR3+,A3TMPY*AR3+,A2TADDA,B ADDA,Bdone:STHB,@ydone:STHB,@y STLB,@y+1STLB,@y+1
节省的总机器周期数=1T*N(迭代次数)=NT。第25页/共34页进一步优化的程序段。利用双操作数指令进行乘法累加运算,完成N项乘积求和需2N个机器周期。如果将乘法累加器单元、多总线以及硬件循环操作结合在一起,可以形成一个优化的乘法累加程序。完成一个N项乘积求和的操作,只需要N+2个机器周期。程序如下:275.6双操作数乘法
STM#x,AR2STM#a,AR3RPTZA,#19;2个机器周期MAC*AR2+,*AR3+,A;1个机器周期STHA,@ySTLA,@y+1第26页/共34页28作业1、编写的程序,并注释2、编写对数组X[8]={1,2,3,4,5,6,7,8}的初始化程序,并注释第27页/共34页长字运算C54x可以利用长操作数(32位)进行长字运算。295.7长字运算和并行运算
长字指令
DLDLmem,dstDSTsrc,LmemDADDLmem,src[,dst]DSUBLmem,src[,dst]DRSUBLmem,src[,dst];dst=Lmem单周期;Lmem=src双周期;dst=src+Lmem单周期;dst=src-Lmem单周期;dst=Lmem-src单周期第28页/共34页长操作数在存储器的排列方法
偶地址排列法
•指令中给出的地址为偶地址•存储器中低地址存放高16位•存储器中高地址存放底16位奇地址排列法
•指令中给出的地址为奇地址•存储器中低地址存放低16位•存储器中高地址存放高16位305.7长字运算和并行运算第29页/共34页315.7长字运算和并行运算
偶地址排列法举例•DLD*AR3+,A
执行前:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合法的合同范本样书
- 2025标准版合同采购样本
- 2025设备租赁的合同协议
- 靶向治疗概述
- 新员工转正答辩
- 山东省烟台市、德州市2025届高三下学期二模诊断测试 化学试题
- 质子治疗及护理
- 护理文件书写规范与实施要点
- 2025年操作系统期末试题
- 中国社区矫正的现状和弊端
- 暑假假期安全教育(课件)-小学生主题班会
- DB21T 3823-2023 岩土工程监测技术规程
- 《T CPSS 1003-2019-交流输入电压暂降与短时中断的低压直流型补偿装置技术规范》
- 2024年度新能源汽车产业联盟合作协议3篇
- 2024年考研英语一阅读理解80篇试题及答案
- 金属非金属地下矿山紧急避险系统建设规范培训
- 施工现场扬尘污染治理巡查记录
- 《卵巢无性细胞瘤》课件
- 户用光伏逆变器Modbus通讯协议地址定义
- PRP注射治疗膝关节炎
- 2024年会计专业考试高级会计实务试题与参考答案
评论
0/150
提交评论