第5章汇编语言程序设计课件.ppt
《第5章汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第5章汇编语言程序设计课件.ppt(76页珍藏版)》请在三一办公上搜索。
1、第五章 汇编语言程序设计,第五章 汇编语言程序设计,概述,9/24/2022,2,概述9/24/20222,常数与字符串,9/24/2022,3,数据类型举例二进制10011000B,01111010b(最,标号,例如:将常数值18赋给符号bei_hua。bei_hua.set 18 LD#bei_hua,A AuxRl.set ARl MVMM AuxRl,SP,9/24/2022,4,类型含义标号符号地址(可作为.global,.ref,.de,举例,9/24/2022,5,举例9/24/20225,汇编语言表达式,9/24/2022,6,序号符 号运算操作求值顺序1+-!取正、取负、按,
2、有效定义表达式:,9/24/2022,7,有效定义表达式:9/24/20227,第5章 TMS320C54x汇编语言程序设计,5.2 堆栈的使用方法,当程序调用中断服务程序或子程序时,需要将程序计数器PC的值和一些重要的寄存器值进行压栈保护,以便程序返回时能从间断处继续执行。C54x提供一个用16位堆栈指针SP寻址的软件堆栈。当向堆栈中压入数据时,堆栈是从高地址向低地址方向填入,堆栈指针SP先减1,然后将数据压入堆栈。当从堆栈中弹出数据时。数据先从堆栈中弹出,然后堆栈指针SP加1。,9/24/2022,8,第5章 TMS320C54x汇编语言程序设计5.2 堆栈的使,第5章 TMS320C54
3、x汇编语言程序设计,5.2 堆栈的使用方法,1.堆栈的设置,size.set 120 stack.usect“STACK”,size STM#stack+size,SP,在数据RAM空间开辟一个堆栈区。,在RAM中定义一个STACK的保留空间,共120个单元,设置堆栈指针,#stack+sizeSP。,保留区的高地址赋给SP,作为堆栈的栈底,若程序中要使用堆栈,必须先进行设置,如:,设置好堆栈后,就可以使用堆栈了,如:CALL pmad;(SP)-1SP,(PC)+2TOS,pmadPC RET;(TOS)PC,(SP)+1SP,9/24/2022,9,第5章 TMS320C54x汇编语言程序
4、设计5.2 堆栈的使,第5章 TMS320C54x汇编语言程序设计,5.3 控制程序,C54x具有丰富的程序控制指令,利用这些指令可以执行分支转移、子程序调用、子程序返回,条件执行以及循环等控制操作。,5.3.1 分支操作程序,分支转移程序 子程序调用 子程序返回 条件操作程序,9/24/2022,10,第5章 TMS320C54x汇编语言程序设计5.3 控制程序,第5章 TMS320C54x汇编语言程序设计,5.3.1 分支操作程序,通过传送控制到程序存储器的其他位置,分支转移会中断连续的指令流。分支转移指令可以改写PC值,使程序改变流向。其指令分为无条件分支转移和条件分支转移两类。两者都可
5、以带延时操作和不带延时操作。,1.分支转移程序,9/24/2022,11,第5章 TMS320C54x汇编语言程序设计5.3.1 分支,第5章 TMS320C54x汇编语言程序设计,无条件分支转移:无条件执行分支转移;条件分支转移:要在满足用户一个或多个条件时才执行分支转移;远程分支转移:允许分支转移到扩展存储器。,1.分支转移程序,【例5.3.1】分支转移举例。STM#88H,AR0 LD#1000H,A zhong:SUB AR0,A BC zhong,AGT,AOV,;将操作数#88H装入AR0;将操作数#1000H装入ACC;将A中的内容减去AR0中的;内容结果装入A;若累加器A0且溢
6、出,;则转至zhong,否则往下执行,9/24/2022,12,第5章 TMS320C54x汇编语言程序设计 无条件分,第5章 TMS320C54x汇编语言程序设计,5.3.1 分支操作程序,与分支转移一样,通过传送控制到程序存储器的其他位置,子程序调用会中断连续的指令流。但是与分支转移不同的是,这种传送是临时的。当函数的子程序被调用时,紧跟在调用后的下一条指令的地址保存在堆栈中。这个地址用于返回到调用程序并继续执行调用前的程序。子程序调用操作分成两种形式:无条件调用和条件调用,两者都可以带延时操作和不带延时操作。,2.子程序调用程序,9/24/2022,13,第5章 TMS320C54x汇编
7、语言程序设计5.3.1 分支,第5章 TMS320C54x汇编语言程序设计,2.子程序调用程序,9/24/2022,14,第5章 TMS320C54x汇编语言程序设计2.子程序调用,第5章 TMS320C54x汇编语言程序设计,2.子程序调用程序,无条件调用是指无条件执行调用。条件调用和无条件调用操作相同,但是条件调用要在满足一个或多个条件时才执行调用。远程调用允许对扩展存储器的子程序或函数进行调用。,9/24/2022,15,第5章 TMS320C54x汇编语言程序设计2.子程序调用,第5章 TMS320C54x汇编语言程序设计,2.子程序调用程序,【例5.3.2】子程序调用举例。,STM#
8、123H,AR0 STM#456H,AR1 CALL new LD AR1,16,Anew:MPY AR0,AR1,A RET,;将操作数#123H装入AR0;将操作数#456H装入AR1;调子程序new;将AR1的内容左移16位后装入A;AR0与AR1的内容相乘,结果放入A中;子程序返回,9/24/2022,16,第5章 TMS320C54x汇编语言程序设计2.子程序调用,第5章 TMS320C54x汇编语言程序设计,5.3.1 分支操作程序,子程序返回程序可以使程序重新在被中断的连续指令处继续执行。返回指令通过将弹出堆栈的值(包含将要执行的下一条指令的地址),送到程序计数器PC来实现返回功
9、能。C54x可以执行无条件返回和条件返回,并且它们都可以带延时或不带延时操作。,3.子程序返回程序,9/24/2022,17,第5章 TMS320C54x汇编语言程序设计5.3.1 分支,第5章 TMS320C54x汇编语言程序设计,3.子程序返回程序,9/24/2022,18,第5章 TMS320C54x汇编语言程序设计3.子程序返回,第5章 TMS320C54x汇编语言程序设计,3.子程序,无条件返回是无条件执行返回操作。条件返回可以给予被调用函数或中断服务程序(ISR)更多的返回方式,以便根据被处理的数据选择返回路径,通过使用条件返回指令来实现返回。远程返回允许从扩展存储器的子程序或函数
10、返回。,9/24/2022,19,第5章 TMS320C54x汇编语言程序设计3.子程序,第5章 TMS320C54x汇编语言程序设计,5.3.1 分支操作程序,C54x的一些指令只有在满足一个或是多个条件后才被执行,如条件分支转移、条件调用和条件返回等指令。这些指令都用条件来限制分支转移、调用和返回操作。这些条件可用条件算符来表示。,4.条件操作程序,9/24/2022,20,第5章 TMS320C54x汇编语言程序设计5.3.1 分支,第5章 TMS320C54x汇编语言程序设计,4.条件操作程序,9/24/2022,21,第5章 TMS320C54x汇编语言程序设计4.条件操作程,第5章
11、 TMS320C54x汇编语言程序设计,4.条件操作程序,在条件操作时也可以要求有多个条件,只有所有条件满足时才被认为是满足条件。这种多个条件的组合就构成了指令的多重条件。,9/24/2022,22,第5章 TMS320C54x汇编语言程序设计4.条件操作程,第5章 TMS320C54x汇编语言程序设计,4.条件操作程序,选用多重条件时应当注意以下几点:,第1组:分为两类,最多可选择两个条件,组内两类条件可以与/或构成多重条件,但不能用组内同类条件构成与/或多重条件。,组与组之间可用或构成多重条件。,当选择两个条件时,累加器必须是同一个。例如,可以同时选择AGT和AOV,但不能同时选择AGT和
12、BOV。,第2组:分为三类,最多可选三个条件,可以在每类中各选一个条件进行与/或构成多重条件,但不能在同类选两个以上条件。,例如,可以同时测试TC、C和BIO,但不能同时测试NTC、C和NC。,9/24/2022,23,第5章 TMS320C54x汇编语言程序设计4.条件操作程,第5章 TMS320C54x汇编语言程序设计,4.条件操作程序,【例5.3.3】条件操作程序。,BC sub,BLEQ;条件分支转移 若累加器B0,则转至sub,否则,往下执行 CC start,AGEQ,AOV;条件调用 若累加器A0且溢出,则调用start,否则往下执行 RC NTC;条件返回 若TC=0,则返回,
13、否则往下执行,9/24/2022,24,第5章 TMS320C54x汇编语言程序设计4.条件操作程,第5章 TMS320C54x汇编语言程序设计,4.条件操作程序,注意:,若需要多个条件相与时,用单条指令表示。如:BC new,AGT,AOV 转移条件:AGT和AOV的与逻辑,若需要两个条件相或时,需用两条指令分别表示。如:若累加器A大于0或溢出,则转移至sub 转移条件:AGT和AOV的或逻辑 BC sub,AGT BC sub,AOV,9/24/2022,25,第5章 TMS320C54x汇编语言程序设计4.条件操作程,第5章 TMS320C54x汇编语言程序设计,5.3.1 分支操作程序
14、,5.比较转移程序,比较操作指令:CMPR 测试条件,辅助寄存器ARx 指令功能:辅助寄存器ARx与AR0进行比较,若比较结果使所给定的测试条件成立,则TC位置1。实现方法:通过CMPR的比较结果得TC值;根据TC值,由条件转移指令实现分支转移。,9/24/2022,26,第5章 TMS320C54x汇编语言程序设计5.3.1 分支,第5章 TMS320C54x汇编语言程序设计,5.比较转移程序,例如:比较操作后条件分支转移 STM#5,AR1;AR1=5 STM#10,AR0;AR0=10 loop:*AR1+;AR1=AR1+1 CMPR LT,AR1;若AR1-AR00,则TC=1,否则
15、为0 BC loop,TC;若AR1-AR00,则循环 若AR1=AR0,则顺序执行,9/24/2022,27,第5章 TMS320C54x汇编语言程序设计5.比较转移程,第5章 TMS320C54x汇编语言程序设计,5.3 控制程序,5.3.2 循环操作程序,在程序设计时,经常需要重复执行某一段程序。利用BANZ(当辅助寄存器不为0时转移)指令可实现循环计数和操作。,循环操作指令:BANZ 转移地址,辅助寄存器 指令功能:当辅助寄存器不为0时,则转至转移地址,否则顺序执行。,9/24/2022,28,第5章 TMS320C54x汇编语言程序设计5.3 控制程序,第5章 TMS320C54x汇
16、编语言程序设计,5.3.2 循环操作程序,【例5.3.4】,.bss x,10;给x保留10个空间.bss y,1;给y保留1个空间 STM#x,AR1;设置数据段的首地址 STM#9,AR2;设置循环计数值 LD#0,A;累加器清0loop:ADD*AR1+,A;累加运算,并修改地址 BANZ loop,*AR2-;若计数值不为0,则循环,并计数值减1 若计数值为0,则结束循环 STL A,y;累加和存入y中,注意:BANZ loop,*AR2-;先判断,再修正AR2=AR2-1,9/24/2022,29,第5章 TMS320C54x汇编语言程序设计5.3.2 循环,第5章 TMS320C5
17、4x汇编语言程序设计,5.4 算术运算程序,基本算术运算包括:加减法和乘法运算 除法运算 长字和并行运算,9/24/2022,30,第5章 TMS320C54x汇编语言程序设计5.4 算术运算,第5章 TMS320C54x汇编语言程序设计,5.4 算术运算程序,5.4.1 加、减法和乘法运算,在数字信号处理中,加法和乘法运算是最常见的算术运算。,【例5.4.1】计算y=a x+b,程序:LD a,T;取a值,T=a MPY x,B;完成ax乘积,B=ax ADD b,B;完成ax+b运算,B=ax+b STL B,y;计算结果存入y中,9/24/2022,31,第5章 TMS320C54x汇编
18、语言程序设计5.4 算术运算,第5章 TMS320C54x汇编语言程序设计,5.4.1 加、减法和乘法运算,【例5.4.2】计算y=xl al+x2 a2,程序:LD x1,T MPY a1,B LD x2,T MAC a2,B STL B,y STH B,y+1,;T=x1;B=x1a1;T=x2;乘法累加,B=x1a1+x2a2;计算结果的低字BL存入y中;计算结果的高字BH存入y+1中,9/24/2022,32,第5章 TMS320C54x汇编语言程序设计5.4.1 加、,第5章 TMS320C54x汇编语言程序设计,5.4.1 加、减法和乘法运算,【例5.4.3】计算 y=,程序:*e
19、xample.asm*.title“example.asm”.mmregs stack.usect“STACK”,10h.bss a,4.bss x,4.bss y,1.def start.data,;为堆栈指定空间;为变量分配9个字的空间,9/24/2022,33,第5章 TMS320C54x汇编语言程序设计5.4.1 加、,第5章 TMS320C54x汇编语言程序设计,table:.word 1,2,3,4.word 8,6,4,2.text start:STM#0,SWWSR STM#STACK+10h,SP STM#a,AR1 RPT#7 MVPD table,*AR1+CALL SU
20、M end:B end,;变量初始化;插入0个等待状态;设置堆栈指针;AR1指向a;移动8个数据;从程序存储器到数据存储器;调用SUM子程序,9/24/2022,34,第5章 TMS320C54x汇编语言程序设计 table:,第5章 TMS320C54x汇编语言程序设计,SUM:STM#a,AR3 STM#x,AR4 RPTZ A,#3 MAC*AR3+,*AR4+,A STL A,y RET.end,;子程序执行,9/24/2022,35,第5章 TMS320C54x汇编语言程序设计 SUM:,第5章 TMS320C54x汇编语言程序设计,5.4 算术运算程序,5.4.2 除法运算,在C5
21、4x中没有除法器硬件,也没有专门的除法指令。但是,利用条件减法指令(SUBC)和重复指令(RPT)可实现两个无符号数的除法运算。,重复指令:RPT#K 功能:RC=#K,重复执行下条指令K+1次。,9/24/2022,36,第5章 TMS320C54x汇编语言程序设计5.4 算术运算,第5章 TMS320C54x汇编语言程序设计,5.4 算术运算程序,5.4.3 长字运算和并行运算,长字指令:DLD Lmem,dst DST src,Lmem DADD Lmem,src,dst DSUB Lmem,src,dst DRSUB Lmem,src,dst,1.长字运算,;dst=Lmem 单周期;
22、Lmem=src 双周期;dst=src+Lmem 单周期;dst=src-Lmem 单周期;dst=Lmem-src 单周期,C54x可以利用32位长操作数进行长字运算。,9/24/2022,37,第5章 TMS320C54x汇编语言程序设计5.4 算术运算,第5章 TMS320C54x汇编语言程序设计,1.长字运算,(1)偶地址排列,如:DLD*AR3+,A,执行前:A,AR3,高字,低字,执行后:A,AR3,6CAC,0101,BD90,0102,指令中给出的地址为偶地址,则存储器低地址存放高16位操作数。,9/24/2022,38,第5章 TMS320C54x汇编语言程序设计1.长字运
23、算(,第5章 TMS320C54x汇编语言程序设计,1.长字运算,.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=0100h(0100h)=6CACh(高字)(0101h)=BD90h(低字),执行后:A=00 6CAC BD90h AR3=0102h(0100h)=6CACh(0101h)=BD90h,9/24/2022,39,第5章 TMS320C54x汇编语言程序设计1.长字运算
24、,第5章 TMS320C54x汇编语言程序设计,5.4.3 长字运算和并行运算,2.并行运算,并行运算就是同时利用D总线和E总线,通过并行指令来实现数据的加载和算术运算。,D总线用来执行加载或算术运算。E总线用来存放先前的结果。,并行指令:,并行加载和乘法指令,并行加载和存储指令,并行存储和乘法指令,并行存储和加/减指令,9/24/2022,40,第5章 TMS320C54x汇编语言程序设计5.4.3 长字,第5章 TMS320C54x汇编语言程序设计,2.并行运算,LD|MACR LD|MASR 例如:LD Xmem,dst1|MACR Ymem,dst2 功能:dst1=Xmem16;ds
25、t2=dst2+T*Ymem。,并行加载和乘法指令:,9/24/2022,41,第5章 TMS320C54x汇编语言程序设计2.并行运算,第5章 TMS320C54x汇编语言程序设计,2.并行运算,ST|LD 例如:ST src,Ymem|LD Xmem,dst 功能:Ymem=src(16-ASM);dst=Xmem16。,并行加载和存储指令:,9/24/2022,42,第5章 TMS320C54x汇编语言程序设计2.并行运算,第5章 TMS320C54x汇编语言程序设计,2.并行运算,ST|MPY ST|MACR ST|MASR 例如:ST src,Ymem|MACR Xmem,dst 功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 课件
链接地址:https://www.31ppt.com/p-2109289.html