资源描述:
《DSP戴明帧主编第5章汇编语言程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第五章汇编语言程序设计★概述★程序的控制与转移(重点)★堆栈的使用方法★加、减法和乘法运算(重点)★重复操作(重点)★数据块传送(重点)★双操作数乘法★长字运算和并行运算2概述汇编语言源程序格式:[标号][:]助记符[操作数][;注释]用空格或T隔开书写格式规则详见P140汇编语言程序以.asm为扩展名。一条语句占源程序的一行,汇编器每行最多读200个字符。因此,语句的执行部分必须限制在200个字符以内。3分类指令说明无条件分支转移B[D]用该指令指定的地址加载PCBACC[D]用累加器的低16位指定的地址加载PC条件分支转移BC[D]若满足指令给定条件,用该指令
2、指定的地址加载PC5.1程序的控制与转移4分类指令说明无条件调用CALL[D]将返回的地址压入堆栈,并用该指令指定的地址加载PCCALA[D]将返回的地址压入堆栈,用累加器A或B指定的地址加载PC条件调用CC[D]如果满足指令给定条件,将返回的地址压入堆栈,并用该指令指定的地址加载PC分类指令说明无条件返回RET[D]将堆栈顶部的返回地址加载到PC。条件返回RC[D]如果满足指令给定条件,将堆栈顶部的返回地址加载到PC。5.1程序的控制与转移5操作符号条件说明操作符号条件说明AEQA=0累加器A等于0AOVAOV=1累加器A溢出BEQB=0累加器B等于0BOVBO
3、V=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程序的控制与转
4、移第1组第2组A类B类A类B类C类EQ,NEQ,LTLEQ,GT,GEQOVNOVTCNTCCNCBIONBIO组间条件只能“或”第一组两类条件可以“与”/“或”,但累加器必须是同一个第二组三类条件可以各选一个条件“与”/“或”同组同类条件不能选择两个5.1程序的控制与转移例5-1条件分支转移RCTCCCsub,BNEQBCnew,AGT,AOV;TC=1返回,TC=0继续;B≠0,调用sub,B=0继续;A>0且溢出(“与”的关系),转至new,否则继续5.1程序的控制与转移BCnew,AGTBCnew,AOV;A>0,转至new,否则继续;A溢出,转至new,
5、否则继续若例1中两个条件相“或”怎么办?8循环操作5.1程序的控制与转移.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";为汇编语言源文件取名.mmregs;定义存储器映像寄存器stack.usect"STACK"
6、,10h;为堆栈空间分配16个存储单元.bssx,5;为变量x分配5个存储单元.bssy,1;为变量y分配1个存储单元.defstart;定义标号start.data;定义数据代码table:.word1,2,3,4,5;为标号table开始的5个存储单元赋值.text;定义文本代码段start:STM#0,SWWSR;SWWSR置0,不插等待周期STM#stack+10h,SP;设置堆栈指针CALLinit;调用子程序initSTM#x,AR1;将变量x的首地址赋给AR1STM#4,AR2;将操作数#4赋给AR2LD#0,A;将累加器A清0loop:ADD*AR
7、1+,A;执行加法运算,结果存入累加器A中BANZloop,*AR2-;AR2不为0转移,重复执行5次STLA,@y;将结果(A的低16位)送往变量y存储单元init:STM#x,AR1;AR1指向x的首地址RPT#4;重复执行下条指令5次MVPDtable,*AR1+;重复传递共5个数据RET;子程序返回.end;源程序结束利用CMPR指令进行比较操作指定的ARx寄存器(x=1~7)与AR0比较,测试条件成立TC置1。例:5-3比较操作后条件分支转移5.1程序的控制与转移STM#5,AR1;(AR1)=5STM#10,AR0;(AR0)=10loop:……MAR
8、*AR1+