DSP控制器原理与应用 张小鸣 第3-4章DSP寻址及指系统.ppt

上传人:s****8 文档编号:67206439 上传时间:2022-12-24 格式:PPT 页数:134 大小:3.32MB
返回 下载 相关 举报
DSP控制器原理与应用 张小鸣 第3-4章DSP寻址及指系统.ppt_第1页
第1页 / 共134页
DSP控制器原理与应用 张小鸣 第3-4章DSP寻址及指系统.ppt_第2页
第2页 / 共134页
点击查看更多>>
资源描述

《DSP控制器原理与应用 张小鸣 第3-4章DSP寻址及指系统.ppt》由会员分享,可在线阅读,更多相关《DSP控制器原理与应用 张小鸣 第3-4章DSP寻址及指系统.ppt(134页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章第三章 TMS320LF240 x的寻址方式的寻址方式与指令系统与指令系统TMS320LF240 x的寻址方式的寻址方式TMS320LF240 x的汇编指令的汇编指令 DSP软件的文件结构软件的文件结构3.1 TMS320LF240 x的寻址方式的寻址方式 DSPDSP系统也具有计算机的一般特性,其完成的任务是采样、系统也具有计算机的一般特性,其完成的任务是采样、运算和输出的功能,即从某个地址单元运算和输出的功能,即从某个地址单元(片内或片外片内或片外)取数据,取数据,然后按照一定的规则进行运算,最后将运算的结果存放到某然后按照一定的规则进行运算,最后将运算的结果存放到某个地址单元来输出

2、。因此,在程序中如何寻址和表达数据的个地址单元来输出。因此,在程序中如何寻址和表达数据的地址是软件系统的关键问题。地址是软件系统的关键问题。TMS320LF240 x TMS320LF240 x的程序采用了三种基本的寻址方式:立即寻的程序采用了三种基本的寻址方式:立即寻址、直接寻址和间接寻址。址、直接寻址和间接寻址。退出退出符号与缩写【例例1】采用采用8 8位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的指令,需要重复执行的次数包含在指令操作码后。次数包含在指令操作码后。RPT#k ;8RPT#k ;8位短立即数寻址位短立即数寻址 退出退出3.1.1 立即寻址方式立即寻址方式

3、指令操作所需要的数就在本指令中,这个数也称为立即指令操作所需要的数就在本指令中,这个数也称为立即数。立即寻址的操作数分为短立即数和长立即数,因此相应数。立即寻址的操作数分为短立即数和长立即数,因此相应的寻址方式也有短立即数寻址和长立即数寻址。的寻址方式也有短立即数寻址和长立即数寻址。【例例2】采用采用9 9位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次指令,需要重复执行的次数包含在指令操作码后。数包含在指令操作码后。RPT#k ;9RPT#k ;9位短立即数寻址位短立即数寻址 退出退出【例例3】采用采用1313位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的

4、指令,需要重复执行的次数包含在指令操作码后。次数包含在指令操作码后。RPT#k ;13RPT#k ;13位短立即数寻址位短立即数寻址 退出退出【例例4】采用采用1616位长立即数寻址的位长立即数寻址的ADDADD指令。指令。ADD#1k,2 ;ADD#1k,2 ;将立即数将立即数1k1k左移左移2 2位后与累加器中位后与累加器中 ;的内容相加,结果存累加器中的内容相加,结果存累加器中 退出退出3.1.2 直接寻址方式直接寻址方式 操作地址就在指令中,按照该地址可以直接访问寄存器,操作地址就在指令中,按照该地址可以直接访问寄存器,这个地址也称为直接地址。这个地址也称为直接地址。在在DSPDSP程

5、序中,直接寻址通常是将指令中的数据页指针程序中,直接寻址通常是将指令中的数据页指针DPDP和操作数合并起来作为被访问的地址。每页的具体操作地址和操作数合并起来作为被访问的地址。每页的具体操作地址的高的高9 9位是由数据页指针位是由数据页指针DPDP决定;低决定;低7 7位位(又称偏移地址量又称偏移地址量)是是由指令操作数决定,它处于指令寄存器的最低由指令操作数决定,它处于指令寄存器的最低7 7位有效位上。位有效位上。DPDP指针与偏移地址量共同构成指针与偏移地址量共同构成1616位的指令操作地址。位的指令操作地址。第第15158 8位为指令的操作码;第位为指令的操作码;第7 7位为直接位为直接

6、/间接寻址指示符,间接寻址指示符,为为0 0是直接寻址;第是直接寻址;第6 60 0位为偏移地址量。位为偏移地址量。退出退出因此,在使用直接寻址方式时,应按下述步骤进行:因此,在使用直接寻址方式时,应按下述步骤进行:(1)(1)设置数据页面。设置数据页面。将页值加载到将页值加载到DPDP,加载时可使用,加载时可使用LDPLDP指令。指令。LDPLDP指令可直接加载指令可直接加载DPDP而不影响而不影响ST0ST0的其他位,该指令明确指的其他位,该指令明确指出加载到出加载到DPDP的值,例如把当前数据页设置成的值,例如把当前数据页设置成32(32(地址地址1000h1000h107Fh)107F

7、h),可使用如下指令。,可使用如下指令。LDP#32 ;LDP#32 ;加载数据页指针加载数据页指针(2)(2)指定偏移量。指定偏移量。提供提供7 7位偏移量作为指令的操作数。例如将位偏移量作为指令的操作数。例如将当前数据页的第当前数据页的第2 2个地址中的数据加到个地址中的数据加到ACCACC时。时。ADD 1h;ADD 1h;将当前数据页中偏移量为将当前数据页中偏移量为1 1处的数据加到处的数据加到ACCACC 如果在一段代码块中所有的指令都访问的是同一数据页,如果在一段代码块中所有的指令都访问的是同一数据页,则只需在该块代码的前面加载一次则只需在该块代码的前面加载一次DPDP即可;如果代

8、码块中需即可;如果代码块中需要访问不同的数据页,则每当访问新的数据页时需确保加载要访问不同的数据页,则每当访问新的数据页时需确保加载相应的相应的DPDP。退出退出【例例5】采用直接寻址的采用直接寻址的ADDADD指令。指令。LDP#4 ;LDP#4 ;设置数据页为设置数据页为4(4(地址地址0200h-027Fh)0200h-027Fh)ADD 9h,5 ;ADD 9h,5 ;将数据地址将数据地址0209h0209h单元的内容左移单元的内容左移5 5位后加至位后加至ACCACC退出退出【例例6】使用直接寻址的使用直接寻址的ADDCADDC指令。指令。LDP#500;LDP#500;设置数据页为

9、设置数据页为500(500(地址地址FA00h-FA7Fh)FA00h-FA7Fh)ADDC 6h ;ADDC 6h ;数据寄存器地址数据寄存器地址FA06hFA06h单元的内容和进位值单元的内容和进位值(C)(C);一起加至累加器中一起加至累加器中退出退出3.1.3 间接寻址方式间接寻址方式 指令中给出的操作数既不是立即数也不是直接地址,而指令中给出的操作数既不是立即数也不是直接地址,而是将这个操作数做地址的内存单元的内容作为访问地址,即是将这个操作数做地址的内存单元的内容作为访问地址,即指令中的操作数是一个间接地址。间接寻址为系统的编程带指令中的操作数是一个间接地址。间接寻址为系统的编程带

10、来了很大的灵活性和方便性。来了很大的灵活性和方便性。DSP DSP芯片内有芯片内有8 8个辅助寄存器个辅助寄存器AR0-AR7AR0-AR7和辅助寄存器算术单和辅助寄存器算术单元元ARAUARAU,这些寄存器专用于间接寻址操作,它可以访问,这些寄存器专用于间接寻址操作,它可以访问64KB64KB的的寻址空间而不受数据页的限制。因此,寻址空间而不受数据页的限制。因此,DSPDSP的间接寻址能力非的间接寻址能力非常灵活和强大,而且寻址的速度非常快。常灵活和强大,而且寻址的速度非常快。在间接寻址时,当前在间接寻址时,当前ARAR的内容用作将被访问的数据存储的内容用作将被访问的数据存储器的地址。因此,

11、当前辅助寄存器中的内容才是真正被访问器的地址。因此,当前辅助寄存器中的内容才是真正被访问的数据地址。的数据地址。在进行间接寻址操作的同时可以对当前辅助寄存器中的在进行间接寻址操作的同时可以对当前辅助寄存器中的内容内容(即操作地址即操作地址)进行修改,甚至可以改变进行修改,甚至可以改变ARPARP的值,为下的值,为下一次的间接寻址操作做准备,从而极大地提高了寻址速度。一次的间接寻址操作做准备,从而极大地提高了寻址速度。退出退出TMS320LF240 xTMS320LF240 x提供了对提供了对ARAR的内容进行四种运算的选择:的内容进行四种运算的选择:操作数操作数选选 项项操作数操作数选选 项项

12、*不增加也不减少不增加也不减少*0 0减少变址量减少变址量*+增加增加1 1*BR0+BR0+按反方进位增加变按反方进位增加变址量址量*减少减少1 1*BR0BR0按反向进位减少变按反向进位减少变址量址量*0+0+增加变址量增加变址量退出退出【例例7】当前当前ARAR不增不减不增不减 ADD *,8 ;ADD *,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8位位 ;后加至累加器中后加至累加器中【例例8】当前当前ARAR增加增加1 1 ADD *+,8,AR4 ;ADD *+,8,AR4 ;把当前把当前ARAR指定的数据存储单元的内容左指定的数据存储单

13、元的内容左 ;移移8 8位后加至累加器中,当前位后加至累加器中,当前ARAR内容加内容加1 1,;指定下条指令的当前辅助寄存器为指定下条指令的当前辅助寄存器为AR4AR4【例例9】当前当前ARAR减去减去1 1 ADD *ADD *,8 ;,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8 ;位后加至累加器中,当前位后加至累加器中,当前ARAR内容减内容减1 1退出退出【例例10】当前当前ARAR增加一个变址量增加一个变址量 ADD *0+,8 ;ADD *0+,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8 ;

14、位后加至累加器中,位后加至累加器中,AR0AR0的内容加到当前的内容加到当前AR AR【例例11】当前当前ARAR减去一个变址量减去一个变址量 ADD *0ADD *0,8 ;,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8 ;位后加至累加器中,当前位后加至累加器中,当前ARAR的内容减去的内容减去AR0AR0 ;内容内容退出退出3.2 TMS320LF240 x的汇编指令的汇编指令 汇编语言是汇编语言是DSPDSP应用软件的基础,使用汇编语言时必须应用软件的基础,使用汇编语言时必须要符合规定的格式,只有这样汇编器才能将源文件转换为要符合规定的格式,只

15、有这样汇编器才能将源文件转换为机器语言的目标文件。机器语言的目标文件。1 1汇编语言源程序的标准格式汇编语言源程序的标准格式 汇编语句格式一般包含汇编语句格式一般包含4 4部分:标号、指令、操作数和部分:标号、指令、操作数和注释,以助记符指令为例,格式如下注释,以助记符指令为例,格式如下 标号标号:指令指令 操作数操作数 ;注释注释 其中其中 内的内容为可选项。内的内容为可选项。在编写汇编语句时,必须遵循以下格式:在编写汇编语句时,必须遵循以下格式:(1)(1)语句必须以标号、空格、星号或分号开始。语句必须以标号、空格、星号或分号开始。退出退出(2)(2)若使用标号,则必须从第若使用标号,则必

16、须从第1 1列开始。标号长度最多为列开始。标号长度最多为3232个个字符,由字符,由A-ZA-Z、a-za-z、0-90-9、_ _和和$等组成,但第等组成,但第1 1个字符不能为个字符不能为数字。标号后可以跟一个冒号数字。标号后可以跟一个冒号(:)(:),但并不作为标号的一部,但并不作为标号的一部分。分。(3)(3)每部分必须由每部分必须由1 1个或多个空格分开。个或多个空格分开。(4)(4)开始于第开始于第1 1列的注释须用星号列的注释须用星号(*)(*)或分号或分号(;)(;)标示,但在标示,但在其他列开始的注释前面只能用分号。其他列开始的注释前面只能用分号。(5)(5)指令一定不能从第

17、指令一定不能从第1 1列开始,否则将被视为标号。指令列开始,否则将被视为标号。指令包括助记符指令、汇编伪指令包括助记符指令、汇编伪指令(如如.data.data,.set).set)、宏伪指令、宏伪指令(如如.macro).macro)和宏调用。和宏调用。(6)(6)操作数可以为列表形式,汇编器允许使用常数、符号或操作数可以为列表形式,汇编器允许使用常数、符号或表达式作为地址、立即数或间接寻址。当操作数为立即数表达式作为地址、立即数或间接寻址。当操作数为立即数时,使用时,使用#号作为前缀;操作数为间接寻址时,使用号作为前缀;操作数为间接寻址时,使用*号作号作为前缀,将操作数的内容作为地址。为前

18、缀,将操作数的内容作为地址。退出退出2 2汇编语言的指令集汇编语言的指令集 TMS320LF240 x TMS320LF240 x的汇编语言共的汇编语言共8686条,分为条,分为6 6大类,分别是大类,分别是累加器、算术和逻辑指令;辅助寄存器和数据页指针指令;累加器、算术和逻辑指令;辅助寄存器和数据页指针指令;TREGTREG、PREGPREG和乘法指令;跳转指令;控制指令;和乘法指令;跳转指令;控制指令;I/OI/O和存储和存储器操作指令。器操作指令。3 3汇编指令的语法和说明汇编指令的语法和说明 在介绍汇编指令之前,先把所用到的操作数做一统一规定:在介绍汇编指令之前,先把所用到的操作数做一

19、统一规定:dmadma:数据存储器地址的低:数据存储器地址的低7 7位位(LSB)(LSB)shiftshift:左移位数:左移位数0 01515n n:指定下一次的辅助寄存器:指定下一次的辅助寄存器ARPARP值值(0(07)7)k k:8 8位短立即数位短立即数1k1k:1616位长立即数位长立即数indind:是一个间接寻址变量,可取:是一个间接寻址变量,可取*、*+、*、*0+0+、*0 0、*BR0+BR0+、*BR0BR0PmaPma:1616位程序存储器地址位程序存储器地址PAPA:1616位位I/OI/O端口或端口或I/OI/O映射寄存器地址映射寄存器地址退出退出(1)ABS(

20、1)ABS(累加器取绝对值累加器取绝对值)p73)p73 语法语法:ABSABS 说明说明:计算:计算ACCACC的绝对值,进位位的绝对值,进位位C C置置0 0。指令受。指令受OVMOVM状态标志状态标志位影响,执行的结果影响位影响,执行的结果影响C C和和OVOV。如果。如果ACCACC的内容大于或等于的内容大于或等于0 0,执行指令后其内容不变;若累加器内容小于,执行指令后其内容不变;若累加器内容小于0 0,执行指令,执行指令后用其对后用其对2 2的补码数的补码数(即它的绝对值即它的绝对值)取代原来的值。取代原来的值。ACC=8000 0000h ACC=8000 0000h时为特殊情况

21、,若时为特殊情况,若OVM=0OVM=0,对,对8000 0000h8000 0000h取绝对值取绝对值(执行执行ABSABS指令指令)的结果是的结果是8000 0000h8000 0000h;若;若OVM=1OVM=1,对,对8000 0000h8000 0000h取绝对值的结果是取绝对值的结果是7FFF 7FFF FFFFhFFFFh,无论哪种情况下,无论哪种情况下,状态位状态位OVOV都置都置1 1。退出退出【例例3-143-14】ABS【例例3-153-15】ABS ;(OVM=0)ABS ;(OVM=0)退出退出 通常,如果相加的结果产生进位时,通常,如果相加的结果产生进位时,C=1

22、C=1;不产生进位;不产生进位时,时,C=0C=0。但是,当左移。但是,当左移1616位进行相加时,如果相加的结果位进行相加时,如果相加的结果产生进位,则产生进位,则C=1C=1;不产生进位时,则;不产生进位时,则C C不受影响。这样,不受影响。这样,在把在把3232位数加到累加器时,可使累加器产生正确的符号进位数加到累加器时,可使累加器产生正确的符号进位。位。【例例3-17 3-17】ADD 1,1 ;DP=6:ADD 1,1 ;DP=6:地址地址0300h0300h037Fh037Fh 退出退出(2)ADD (2)ADD 累加器加累加器加 p73语法语法:ADD ADD dmadma,sh

23、ift ,shift 直接寻址直接寻址 ADD dma,16 ADD dma,16 左移左移1616位直接寻址位直接寻址 ADD ADD indind,shift,shift,ARnARn 间接寻址间接寻址 ADD ind,16,ADD ind,16,ARnARn 左移左移1616位间接寻址位间接寻址 ADD#k ADD#k 短立即数寻址短立即数寻址 ADD#1k,shift ADD#1k,shift 长立即数寻址长立即数寻址 说明说明:被寻址的数据单元的内容或一个立即数左移后加到:被寻址的数据单元的内容或一个立即数左移后加到累加器,在移位时低位填累加器,在移位时低位填0 0。如果。如果SXM

24、=1SXM=1,则高位进行符号,则高位进行符号扩展;如果扩展;如果SXM=0SXM=0,则高位填,则高位填0 0。如果采用间接寻址并更新如果采用间接寻址并更新ARPARP的值,此时必须指定一的值,此时必须指定一个个shift(shift(移位移位)操作数。如果不希望产生移位,则将操作数。如果不希望产生移位,则将0 0作为作为操作数,例如操作数,例如ADD *+,0,AR2ADD *+,0,AR2。退出退出【例例3-18 3-18】ADD *+,0,AR0ADD *+,0,AR0【例例3-19 3-19】ADD#1h ;ADD#1h ;加短立即数加短立即数 退出退出(3)ADDC (3)ADDC

25、 带进位的累加器加带进位的累加器加p74p74 语法:语法:ADDC ADDC dmadma 直接寻址直接寻址 ADDC ADDC indind,ARnARn 间接寻址间接寻址 说明:说明:将数据存储单元的内容和进位位将数据存储单元的内容和进位位C C的值加到累加器的值加到累加器中,符号不扩展,进位位受正常方式影响。指令受中,符号不扩展,进位位受正常方式影响。指令受OVMOVM位位影响,执行指令的结果影响影响,执行指令的结果影响C C和和OVOV。【例例3-21 3-21】ADDC 0 ;DP=6:ADDC 0 ;DP=6:地址地址0300h0300h037Fh037Fh 退出退出【例例3-2

26、2 3-22】ADDC *ADDC *,AR4 ;OVM=0,AR4 ;OVM=0 退出退出(4)ADDS (4)ADDS 符号扩展抑制的累加器加符号扩展抑制的累加器加 p75语法语法:ADDS ADDS dmadma 直接寻址直接寻址 ADDS ADDS indind,ARnARn 间接寻址间接寻址说明说明:将被寻址的数据单元中的内容加到累加器,抑制:将被寻址的数据单元中的内容加到累加器,抑制符号扩展。无论符号扩展。无论SXMSXM为何值,数据存储单元中的数据均被为何值,数据存储单元中的数据均被看作一个无符号的看作一个无符号的1616位数。位数。ADDSADDS指令产生的结果与指令产生的结果

27、与SXM=0SXM=0、移位数为移位数为0 0的的ADDADD指令产生的结果相同,若相加结果产生指令产生的结果相同,若相加结果产生进位时进位时C=1C=1;否则;否则C=0C=0。【例例3-23 3-23】ADDS 0 ;DP=6:ADDS 0 ;DP=6:地址地址0300h0300h037Fh037Fh 退出退出【例例3-24 3-24】ADDS *退出退出(5)ADDT TREG(5)ADDT TREG指定移位的累加器加指定移位的累加器加 p75语法语法:ADDT ADDT dmadma 直接寻址直接寻址 ADDT ADDT indind,ARnARn 间接寻址间接寻址说明说明:将数据存储

28、单元的内容左移后加到累加器中,左移:将数据存储单元的内容左移后加到累加器中,左移的位数由的位数由TREGTREG的低的低4 4位位(0-15)(0-15)确定。数据存储单元中数据的确定。数据存储单元中数据的符号扩展受符号扩展受SXMSXM控制。指令受控制。指令受SXMSXM和和OVMOVM位影响,执行结果影位影响,执行结果影响响C C和和OVOV。【例例3-25 3-25】ADDT 127 ;DP=4:ADDT 127 ;DP=4:地址地址0200h-027Fh0200h-027Fh;SXM=0 SXM=0【例例3-26 3-26】ADDT *ADDT *,AR4 ;SXM=0,AR4 ;SX

29、M=0 退出退出(6)ADRK (6)ADRK 辅助寄存器加短立即数辅助寄存器加短立即数p83 p83 语法语法:ADRK#k ADRK#k 短立即数寻址短立即数寻址 说明说明:8 8位正整数按右对齐方式加到当前辅助寄存器中,位正整数按右对齐方式加到当前辅助寄存器中,当前辅助寄存器由当前辅助寄存器由ARPARP指定。指定。对辅助寄存器的所有运算都是无符号数运算。对辅助寄存器的所有运算都是无符号数运算。【例例3-27 3-27】ADRK#80h 退出退出(7)AND (7)AND 和累加器进行与操作和累加器进行与操作 p75语法语法:AND AND dmadma 直接寻址直接寻址 AND AND

30、 indind,ARnARn 间接寻址间接寻址 AND#1k,shift AND#1k,shift 长立即数寻址长立即数寻址 AND#1k,16 AND#1k,16 左移左移1616位的长立即数寻址位的长立即数寻址说明说明:如果是直接或间接寻址,数据存储单元中的数和累:如果是直接或间接寻址,数据存储单元中的数和累加器的低加器的低1616位进行与运算,结构放在累加器的低位进行与运算,结构放在累加器的低1616位,累位,累加器的高加器的高1616位清位清0 0。如果是立即数寻址,长立即数可以被。如果是立即数寻址,长立即数可以被左移,没有被左移后的值覆的高位和低位均填左移,没有被左移后的值覆的高位和

31、低位均填0 0,移位结,移位结果与累加器的内容逻辑与。指令不受果与累加器的内容逻辑与。指令不受SXMSXM位影响。位影响。【例例3-303-30】AND#00FFh,4 AND#00FFh,4退出退出【例例3-28 3-28】AND 16 ;DP=4:AND 16 ;DP=4:地址地址0200h0200h027Fh027Fh【例例3-29 3-29】AND *AND *退出退出(8)APAC PREG(8)APAC PREG加到累加器加到累加器p85p85 语法语法:APACAPAC 说明说明:PREGPREG寄存器的内容移位后加到累加器,移位的位数寄存器的内容移位后加到累加器,移位的位数由状

32、态寄存器由状态寄存器ST1ST1中的中的PMPM位确定。指令不受位确定。指令不受SXMSXM位影响,位影响,PREGPREG总是进行符号扩展。指令受总是进行符号扩展。指令受PMPM和和OVMOVM位影响,结果影响位影响,结果影响C C和和OVOV。【例例3-313-31】APAC ;PM=01 APAC ;PM=01 退出退出(9)B (9)B 无条件跳转无条件跳转p92p92 语法语法:B B pma,ind,ARnpma,ind,ARn 间接寻址间接寻址 说明说明:程序跳转到:程序跳转到pmapma指定的地址,并根据指令修改当前指定的地址,并根据指令修改当前辅助寄存器辅助寄存器(AR)(A

33、R)和和ARPARP。pmapma值既可以是一个符号,也可值既可以是一个符号,也可是一个数字地址。是一个数字地址。【例例3-323-32】B 191,*+,AR1 B 191,*+,AR1 将将191191加载到程序计数器,并且程序从该地址继续加载到程序计数器,并且程序从该地址继续执行,当前辅助寄存器加执行,当前辅助寄存器加1 1,并且,并且ARPARP被设置为指向辅被设置为指向辅助寄存器助寄存器1(AR1)1(AR1)。(10)BACC (10)BACC 跳转到累加器指定的地址跳转到累加器指定的地址p92p92语法语法:BACCBACC说明说明:程序跳转到累加器低:程序跳转到累加器低1616

34、位所指定的地址位所指定的地址。【例例3-333-33】BACC ;ACC BACC ;ACC低低1616位为位为191191将数值将数值191191加到程序计数器,并且程序从该地址继续执行。加到程序计数器,并且程序从该地址继续执行。退出退出(11)BANZ (11)BANZ 辅助寄存器非辅助寄存器非0 0跳转跳转p83p83 语法语法:BANZ BANZ pma,ind,ARnpma,ind,ARn 间接寻址间接寻址 说明说明:如果当前辅助寄存器的值:如果当前辅助寄存器的值(AR)(AR)不为不为0 0,则程序跳转到,则程序跳转到pmapma指定的地址,否则执行下一条指令。根据指令修改当前指定

35、的地址,否则执行下一条指令。根据指令修改当前辅助寄存器辅助寄存器(AR)(AR)和和ARPARP。缺省时,当前辅助寄存器减。缺省时,当前辅助寄存器减1 1。该。该指令常用于控制循环体的执行,如果要使循环体执行指令常用于控制循环体的执行,如果要使循环体执行N N次,次,则可在循环体执行前将用于计数的辅助寄存器初始化为则可在循环体执行前将用于计数的辅助寄存器初始化为N-1N-1。pmapma值既可以是一个符号,也可以是一个数字地址。值既可以是一个符号,也可以是一个数字地址。退出退出【例例3-343-34】BANZ PGM0 ;PGM0 BANZ PGM0 ;PGM0为标号为标号 因为因为AR0AR

36、0的内容不为的内容不为0 0,则,则PGM0PGM0给定的地址加载到程序给定的地址加载到程序计数器计数器(PC)(PC),程序从该处运行。对当前,程序从该处运行。对当前ARAR减减1 1,变为,变为4h4h。因为因为AR0AR0的内容为的内容为0 0,所以不跳转,而是将,所以不跳转,而是将PCPC加加2 2,即继,即继续执行续执行BANZBANZ后面的指令。当前后面的指令。当前ARAR减减1 1,变为,变为FFFFhFFFFh。退出退出【例例3-35 3-35】编制一个循环体程序,将数据存储单元编制一个循环体程序,将数据存储单元0060h0060h0063h0063h的内容加到累加器中。的内容

37、加到累加器中。MAR *,AR0 ;MAR *,AR0 ;设置设置ARPARP指向指向AR0AR0 LAR AR1,#3 ;LAR AR1,#3 ;加载加载3 3到到AR1AR1 LAR AR0,#60h ;LAR AR0,#60h ;加载加载60h60h到到AR0AR0PGM191PGM191:ADD *+,AR1 ;ADD *+,AR1 ;将将AR0AR0指向的地址中数据加到指向的地址中数据加到ACCACC,;并且;并且AR0AR0值加值加1 1,ARPARP指向指向AR1AR1 BANZ PGM191,*-,AR0 ;AR1 BANZ PGM191,*-,AR0 ;AR1不为不为0 0时

38、循环,时循环,AR1AR1值减值减1 1,;ARPARP指向指向AR0AR0退出退出(12)BCND (12)BCND 条件跳转条件跳转 p92语法语法:BCND pma,cond1,cond2,BCND pma,cond1,cond2,说明说明:如果指定的条件都满足,则程序跳转到:如果指定的条件都满足,则程序跳转到pmapma指定的地指定的地址;若条件不满足,则执行下一条指令。址;若条件不满足,则执行下一条指令。无条件无条件无条件无条件UNCUNC进位位被清进位位被清0 0C=0C=0NCNC测试测试/控制标志位被置控制标志位被置1 1TC=1TC=1TCTC累加器的值大于或等于累加器的值大

39、于或等于0 0ACC0ACC0GEQGEQ测试测试/控制标志位被清控制标志位被清0 0TC=0TC=0NTCNTC累加器的值大于累加器的值大于0 0ACC0ACC0GTGT引脚为低电平引脚为低电平BIOBIO为为0 0累加器的值小于或等于累加器的值小于或等于0 0ACC0ACC0LEQLEQ溢出标志位置溢出标志位置1 1OV=1OV=1OVOV累加器的值小于累加器的值小于0 0ACC0ACCSC1:名称名称MC1 PAGE0MC1 PAGE0 名称名称SC2:SC2:名称名称MC2 PAGE0MC2 PAGE0 名称名称SDnSDn:名称名称MDnMDn PAGE1 PAGE1 退出退出(3)

40、(3)命令文件举例命令文件举例 MEMORY PAGE0:VECS:origin=0000h,length=40h PROG:origin=100h,length=8000h PAGE1:B2:origin=60h,length=20h B0:origin=200h,length=100h B1:origin=300h,length=100h 退出退出SECTIONS .vectors:VECS PAGE0 .text:PROG PAGE0 .bass:B0 PAGE1 .buffer:B1 PAGE1 .data B2 PAGE1 其中其中,.vectors,.vectors和和.text.

41、text分别为汇编语言文件中定义的程序分别为汇编语言文件中定义的程序段段;.bass;.bass、.buffer.buffer和和.data.data分别为汇编语言文件中定义的一些分别为汇编语言文件中定义的一些数据区和缓冲区。此命令文件是将程序段数据区和缓冲区。此命令文件是将程序段.vectors.vectors分配在程序分配在程序存储器的存储器的VECSVECS段段(0000h-0040h)(0000h-0040h)内内;将主程序段将主程序段.text.text分配在程序分配在程序存储器的存储器的PROGPROG段段(0100h-8100h)(0100h-8100h)内内;将数据区将数据区.bass.bass分配在数据存分配在数据存储器中的储器中的B0(0200h-0300h)B0(0200h-0300h)块内块内;将数据缓冲区将数据缓冲区.buffer.buffer分配在数分配在数据存储器中的据存储器中的B1(0300h-0400h)B1(0300h-0400h)块内块内;将数据区将数据区.data.data分配在数据分配在数据存储器中的存储器中的B2(0060h-0080h)B2(0060h-0080h)块内。块内。退出退出

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁