DSP例程PPT学习教案_第1页
DSP例程PPT学习教案_第2页
DSP例程PPT学习教案_第3页
DSP例程PPT学习教案_第4页
DSP例程PPT学习教案_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1DSP例程例程 DSPDSP系统也具有计算机的一般特性,其完成的任务是采样、运算和输出的功能,即从某个地址单元系统也具有计算机的一般特性,其完成的任务是采样、运算和输出的功能,即从某个地址单元( (片内或片外片内或片外) )取数据,然后按照一定的规则进行运算,最后将运算的结果存放到某个地址单元来输出。因此,在程序中如何寻址和表达数据的地址是软件系统的关键问题。取数据,然后按照一定的规则进行运算,最后将运算的结果存放到某个地址单元来输出。因此,在程序中如何寻址和表达数据的地址是软件系统的关键问题。 TMS320LF240 x TMS320LF240 x的程序采用了三种基本的寻址方式:立即

2、寻址、直接寻址和间接寻址。的程序采用了三种基本的寻址方式:立即寻址、直接寻址和间接寻址。 3.1.1 立即寻址方式立即寻址方式 指令操作所需要的数就在本指令中,这个数也称为立即数。立即寻址的操作数分为短立即数和长立即数,因此相应的寻址方式也有短立即数寻址和长立即数寻址。指令操作所需要的数就在本指令中,这个数也称为立即数。立即寻址的操作数分为短立即数和长立即数,因此相应的寻址方式也有短立即数寻址和长立即数寻址。第1页/共117页【例例1】采用采用8 8位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次数包含在指令操作码后。指令,需要重复执行的次数包含在指令操作码后。 RPT #k

3、 ;8RPT #k ;8位短立即数寻址位短立即数寻址 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 0 1 1 k RPT 操作代码 8 位常数k 第2页/共117页【例例2】采用采用9 9位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次数包含在指令操作码后。指令,需要重复执行的次数包含在指令操作码后。 RPT #k ;9RPT #k ;9位短立即数寻址位短立即数寻址 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 1 0 k RPT 操作代码 9 位常数k 第3页/共117页【

4、例例3】采用采用1313位短立即数寻址的位短立即数寻址的RPTRPT指令,需要重复执行的次数包含在指令操作码后。指令,需要重复执行的次数包含在指令操作码后。 RPT #k ;13RPT #k ;13位短立即数寻址位短立即数寻址 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 0 k RPT 操作代码 13位常数k 第4页/共117页【例例4】采用采用1616位长立即数寻址的位长立即数寻址的ADDADD指令。指令。 ADD #1k ,2 ;ADD #1k ,2 ;将立即数将立即数1k1k左移左移2 2位后与累加器中位后与累加器中 ; ;的内容相加,结果存累加器

5、中的内容相加,结果存累加器中 第一字节 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 0 ADD 操作代码 移位 2 次 第二字节 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1k 16 位常数=1k 第5页/共117页3.1.2 直接寻址方式直接寻址方式 操作地址就在指令中,按照该地址可以直接访问寄存器,这个地址也称为直接地址。操作地址就在指令中,按照该地址可以直接访问寄存器,这个地址也称为直接地址。 在在DSPDSP程序中,直接寻址通常是将指令中的程序中,直接寻址通常是

6、将指令中的数据页指针数据页指针DPDP和操作数合并起来和操作数合并起来作为被访问的地址。每页的具体操作地址的高作为被访问的地址。每页的具体操作地址的高9 9位是由数据页指针位是由数据页指针DPDP决定;低决定;低7 7位位( (又称偏移地址量又称偏移地址量) )是由指令操作数决定,它处于指令寄存器的最低是由指令操作数决定,它处于指令寄存器的最低7 7位有效位上。位有效位上。DPDP指针与偏移地址量共同构成指针与偏移地址量共同构成1616位的指令操作地址。位的指令操作地址。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 08MSB7LSB0第第15158 8位为指令的操

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

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

9、指令都访问的是同一数据页,则只需在该块代码的前面加载一次DPDP即可;如果代码块中需要访问不同的数据页,则每当访问新的数据页时需确保加载相应的即可;如果代码块中需要访问不同的数据页,则每当访问新的数据页时需确保加载相应的DPDP。第7页/共117页【例例5】采用直接寻址的采用直接寻址的ADDADD指令。指令。 LDP #4 ;LDP #4 ;设置数据页为设置数据页为4(4(地址地址0200h-027Fh)0200h-027Fh)ADD 9h,5 ;ADD 9h,5 ;将数据地址将数据地址0209h0209h单元的内容左移单元的内容左移5 5位后加至位后加至ACCACC0000 0010 000

10、00 0010 00 0 1 00 0 1 00 0 1 00 0 1 00 0000 1001000 1001000 1001000 1001数据页指针DP=4数据页指针DP=4指令寄存器(IR)指令寄存器(IR)高9位来自DP高9位来自DPADD操作码ADD操作码移5位移5位9h9h16位数据存储器地址0209h16位数据存储器地址0209h低7位来自IR低7位来自IR0000 0010 00000 0010 0第8页/共117页【例例6】使用直接寻址的使用直接寻址的ADDCADDC指令。指令。 LDP #500 ;LDP #500 ;设置数据页为设置数据页为500(500(地址地址FA0

11、0h-FA7Fh)FA00h-FA7Fh)ADDC 6h ;ADDC 6h ;数据寄存器地址数据寄存器地址FA06hFA06h单元的内容和进位值单元的内容和进位值(C)(C) ; ;一起加至累加器中一起加至累加器中1111 1010 01111 1010 00 1 1 00 1 1 00 0 0 00 0 0 00 0000 0110000 01101111 1010 01111 1010 0000 0110000 0110数据页指针DP=500数据页指针DP=500指令寄存器(IR)指令寄存器(IR)高9位来自DP高9位来自DP6h6h16位数据存储器地址FA06h16位数据存储器地址FA0

12、6h低7位来自IR低7位来自IR移位数为16位的ADD操作码移位数为16位的ADD操作码第9页/共117页3.1.3 间接寻址方间接寻址方式式 指令中给出的操作数既不是立即数也不是直接地址,而是将这个操作数做地址的内存单元的内容作为访问地址,即指令中的操作数是一个间接地址。间接寻址为系统的编程带来了很大的灵活性和方便性。指令中给出的操作数既不是立即数也不是直接地址,而是将这个操作数做地址的内存单元的内容作为访问地址,即指令中的操作数是一个间接地址。间接寻址为系统的编程带来了很大的灵活性和方便性。 DSP DSP芯片内有芯片内有8 8个辅助寄存器个辅助寄存器AR0-AR7AR0-AR7和辅助寄存

13、器算术单元和辅助寄存器算术单元ARAUARAU,这些资源专用于间接寻址,它可以访问,这些资源专用于间接寻址,它可以访问64KB64KB的寻址空间而不受数据页的限制。因此,的寻址空间而不受数据页的限制。因此,DSPDSP的间接寻址能力非常灵活和强大,而且寻址的速度非常快。的间接寻址能力非常灵活和强大,而且寻址的速度非常快。 在间接寻址时,当前在间接寻址时,当前ARAR的内容用作将被访问的数据存储器的地址。因此,当前辅助寄存器中的内容才是真正被访问的数据地址。的内容用作将被访问的数据存储器的地址。因此,当前辅助寄存器中的内容才是真正被访问的数据地址。 在进行间接寻址操作的同时可以对当前辅助寄存器中

14、的内容在进行间接寻址操作的同时可以对当前辅助寄存器中的内容( (即操作地址即操作地址) )进行修改,甚至可以改变进行修改,甚至可以改变ARPARP的值,为下一次的间接寻址操作做准备,从而极大地提高了寻址速度。的值,为下一次的间接寻址操作做准备,从而极大地提高了寻址速度。第10页/共117页TMS320LF240 xTMS320LF240 x提供了对提供了对ARAR的内容进行四种运算的选择:的内容进行四种运算的选择: 操作数操作数选选 项项操作数操作数选选 项项* *不增加也不减少不增加也不减少* *0 0减少变址量减少变址量* *+ +增加增加1 1* *BR0+BR0+按反方进位增加变按反方

15、进位增加变址量址量* *减少减少1 1* *BR0BR0按反向进位减少变按反向进位减少变址量址量* *0+0+增加变址量增加变址量第11页/共117页【例例7】当前当前ARAR不增不减不增不减 ADD ADD * *,8 ;,8 ;把当前把当前ARAR指定的数据存储单元的内容左移指定的数据存储单元的内容左移8 8位位 ; ;后加至累加器中后加至累加器中 【例例8】当前当前ARAR增加增加1 1 ADD ADD * *+,8,AR4 ;+,8,AR4 ;把当前把当前ARAR指定的数据存储单元的内容左指定的数据存储单元的内容左 ; ;移移8 8位后加至累加器中,当前位后加至累加器中,当前ARAR内

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

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

18、 1汇编语言源程序的标准格式汇编语言源程序的标准格式 汇编语句格式一般包含汇编语句格式一般包含4 4部分:标号、指令、操作数和注释,以助记符指令为例,格式如下部分:标号、指令、操作数和注释,以助记符指令为例,格式如下 标号标号: : 指令指令 操作数操作数 ; ;注释注释 其中其中 内的内容为可选项。内的内容为可选项。 在编写汇编语句时,必须遵循以下格式:在编写汇编语句时,必须遵循以下格式: (1)(1)语句必须以标号、空格、星号或分号开始。语句必须以标号、空格、星号或分号开始。 第14页/共117页(2)(2)若使用标号,则必须从第若使用标号,则必须从第1 1列开始。标号长度最多为列开始。标

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

20、则将被视为标号。指令包括助记符指令、汇编伪指令列开始,否则将被视为标号。指令包括助记符指令、汇编伪指令( (如如.data.data,.set).set)等。等。 (6)(6)操作数可以为列表形式,汇编器允许使用常数、符号或表达式作为地址、立即数或间接寻址。当操作数为立即数时,使用操作数可以为列表形式,汇编器允许使用常数、符号或表达式作为地址、立即数或间接寻址。当操作数为立即数时,使用# #号作为前缀;操作数为间接寻址时,使用号作为前缀;操作数为间接寻址时,使用* *号,将操作数的内容作为地址。号,将操作数的内容作为地址。 第15页/共117页2 2汇编语言的指令集汇编语言的指令集 TMS32

21、0LF240 x TMS320LF240 x的汇编语言共的汇编语言共8686条,分为条,分为6 6大类,分别是累加器、算术和逻辑指令;辅助寄存器和数据页指针指令;大类,分别是累加器、算术和逻辑指令;辅助寄存器和数据页指针指令;TREGTREG、PREGPREG和乘法指令;跳转指令;控制指令;和乘法指令;跳转指令;控制指令;I/OI/O和存储器操作指令。和存储器操作指令。 3 3汇编指令的语法和说明汇编指令的语法和说明 在介绍汇编指令之前,先把所用到的主要操作数做一规定:在介绍汇编指令之前,先把所用到的主要操作数做一规定: dmadma:数据存储器地址的低:数据存储器地址的低7 7位位(LSB)

22、(LSB)shiftshift:左移位数:左移位数0 01515n n:指定下一次的辅助寄存器:指定下一次的辅助寄存器ARPARP值值(0(07)7)k k:8 8位短立即数位短立即数1k1k:1616位长立即数位长立即数indind:是一个间接寻址变量,可取:是一个间接寻址变量,可取* *、* *+ +、* *、* *0+0+、* *0 0、 * *BR0+BR0+、* *BR0BR0第16页/共117页(1)ABS(1)ABS(累加器取绝对值累加器取绝对值) ) 语法语法:ABSABS 说明说明:计算计算ACCACC的绝对值,进位位的绝对值,进位位C C置置0 0。指令受。指令受OVMOV

23、M状态标志位影响,执行的结果影响状态标志位影响,执行的结果影响C C和和OVOV。如果。如果ACCACC的内容大于或等于的内容大于或等于0 0,执行指令后其内容不变;,执行指令后其内容不变;若累加器内容小于若累加器内容小于0 0,执行指令后用其对,执行指令后用其对2 2的补码数的补码数( (即它的绝对值即它的绝对值) )取代原来的值取代原来的值。 ACC=8000 0000h ACC=8000 0000h时为特殊情况,若溢出方式位时为特殊情况,若溢出方式位OVM=0OVM=0,对,对8000 0000h8000 0000h取绝对值取绝对值( (执行执行ABSABS指令指令) )的结果是的结果是

24、8000 0000h8000 0000h;若溢出方式位;若溢出方式位OVM=1OVM=1,对,对8000 0000h8000 0000h取绝对值的结果是取绝对值的结果是7FFF FFFFh7FFF FFFFh,无论哪种情况下,状态位,无论哪种情况下,状态位OVOV都置都置1 1。 第17页/共117页【例例3-143-14】ABS 12341234h hACCACCC C执行指令前执行指令前0 01234h1234h执行指令后执行指令后C C0FFFFFFFFh0FFFFFFFFhACCACCC C执行指令前执行指令前0 01h1h执行指令后执行指令后C C【例例3-153-15】ABS ;(

25、OVM=0)ABS ;(OVM=0) 80000000h80000000hACCACCC C执行指令前执行指令前0 080000000h80000000h执行指令后执行指令后C COVOV1 1OVOV第18页/共117页(2)ADD (2)ADD 累加器加累加器加 语法语法:ADD dma ,shift ADD dma ,shift 直接寻址直接寻址 ADD dma,16 ADD dma,16 左移左移1616位直接寻址位直接寻址 ADD ind ,shift ,ARn ADD ind ,shift ,ARn 间接寻址间接寻址 ADD ind,16 ,ARn ADD ind,16 ,ARn

26、左移左移1616位间接寻址位间接寻址 ADD #k ADD #k 短立即数寻址短立即数寻址 ADD #1k ,shift ADD #1k ,shift 长立即数寻址长立即数寻址 说明说明:被寻址的数据单元的内容或一个立即数左移后加到累加器,在移位时低位填被寻址的数据单元的内容或一个立即数左移后加到累加器,在移位时低位填0 0。如果符号扩展方式位。如果符号扩展方式位SXM=1SXM=1,则高位进行符号扩展;如果,则高位进行符号扩展;如果SXM=0SXM=0,则高位填,则高位填0 0。 如果采用间接寻址并更新如果采用间接寻址并更新ARPARP的值,此时必须指定一个的值,此时必须指定一个shift(

27、shift(移位移位) )操作数。如果不希望产生移位,则将操作数。如果不希望产生移位,则将0 0作为操作数,例如作为操作数,例如ADD ADD * *+,0,AR2+,0,AR2。第19页/共117页 通常,如果相加的结果产生进位时,通常,如果相加的结果产生进位时,C=1C=1;不产生进位时,;不产生进位时,C=0C=0。但是,当左移但是,当左移1616位进行相加时,如果相加的结果产生进位,则位进行相加时,如果相加的结果产生进位,则C=1C=1;不产生进位时,则;不产生进位时,则C C不受影响。这样,在把不受影响。这样,在把3232位数加到累加器时,可使累加器产生正确的符号进位。位数加到累加器

28、时,可使累加器产生正确的符号进位。 【例例3-17 3-17 】ADD 1,1 ;DP=6:ADD 1,1 ;DP=6:地址地址0300h0300h037Fh037Fh 1h1h2h2h数据存储器数据存储器301h301hACCACCC C执行指令前执行指令前执行指令后执行指令后01h1h4h4hC C数据存储器数据存储器301h301hACCACC第20页/共117页【例例3-18 3-18 】ADD ADD * *+,0,AR0+,0,AR0 2h2h2h2h数据存储器数据存储器302h302hACCACCC C执行指令前执行指令前执行指令后执行指令后0 02h2h04h04hC C数据存

29、储器数据存储器302h302hACCACC0302h0302h4 40 00303h0303hARPARPAR4AR4ARPARPAR4AR42h2hC CACCACC执行指令前执行指令前0 03h3hC C执行指令后执行指令后ACCACC【例例3-19 3-19 】ADD #1h ;ADD #1h ;加短立即数加短立即数 第21页/共117页(3)ADDC (3)ADDC 带进位的累加器加带进位的累加器加 语法:语法:ADDC dma ADDC dma 直接寻址直接寻址 ADDC ind ,ARn ADDC ind ,ARn 间接寻址间接寻址 说明:说明:将数据存储单元的内容和进位位将数据存

30、储单元的内容和进位位C C的值加到累加器中,符号不扩展,进位位受正常方式影响的值加到累加器中,符号不扩展,进位位受正常方式影响。指令受溢出方式位。指令受溢出方式位OVMOVM位影响,执行指令的结果影响位影响,执行指令的结果影响C C和溢出标志位和溢出标志位OVOV。【例例3-21 3-21 】ADDC 0 ;DP=6:ADDC 0 ;DP=6:地址地址0300h0300h037Fh037Fh 1 104h04h13h13h数据存储器数据存储器300h300hACCACCC C执行指令前执行指令前执行指令后执行指令后0 004h04h18h18hC C数据存储器数据存储器300h300hACCA

31、CC第22页/共117页【例例3-22 3-22 】ADDC ADDC * *,AR4 ;OVM=0,AR4 ;OVM=0 1 10h0h0FFFFFFFFh0FFFFFFFFh300h300hACCACCC C执行指令前执行指令前执行指令后执行指令后1 10h0h0h0hC C数据存储器数据存储器300h300hACCACC0300h0300h0 04 402FFh02FFhARPARPAR0AR0ARPARPAR0AR0OVOV0 0OVOV数据存储器数据存储器第23页/共117页(5)ADDT TREG(5)ADDT TREG指定移位的累加器加指定移位的累加器加 语法语法:ADDT dm

32、a ADDT dma 直接寻址直接寻址 ADDT ind ,ARn ADDT ind ,ARn 间接寻址间接寻址说明说明:将数据存储单元的内容左移后加到累加器中,左移的位数由将数据存储单元的内容左移后加到累加器中,左移的位数由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:地址

33、地址0200h-027Fh0200h-027Fh;SXM=0 SXM=0 0FF94h0FF94h0F715h0F715hTREGTREGACCACCC C执行指令前执行指令前执行指令后执行指令后0 00FF94h0FF94h0F7A5h0F7A5hC C数据存储器数据存储器TREGTREGACCACC09h09h09h09h027Fh027Fh027Fh027Fh数据存储器数据存储器第24页/共117页【例例3-26 3-26 】ADDT ADDT * *,AR4 ;SXM=0,AR4 ;SXM=0 0FF94h0FF94h0F715h0F715h数据存储器数据存储器TREGTREGACCA

34、CCC C执行指令前执行指令前执行指令后执行指令后0 00FF94h0FF94h0F7A5h0F7A5hC C数据存储器数据存储器TREGTREGACCACC09h09h09h09h027Fh027Fh027Fh027Fh027Fh027Fh0 0027Eh027Eh4 4ARPARPAR0AR0ARPARPAR0AR0第25页/共117页(6)ADRK (6)ADRK 辅助寄存器加短立即数辅助寄存器加短立即数 语法语法:ADRK #k ADRK #k 短立即数寻址短立即数寻址 说明说明:8 8位正整数按右对齐方式加到当前辅助寄存器中位正整数按右对齐方式加到当前辅助寄存器中,当前辅助寄存器由,

35、当前辅助寄存器由ARPARP指定。指定。对辅助寄存器的所有运算都是无符号数运算。对辅助寄存器的所有运算都是无符号数运算。 【例例3-27 3-27 】ADRK #80h 执行指令前执行指令前执行指令后执行指令后4321h4321h5 55 543A1h43A1hARPARPAR5AR5ARPARPAR5AR5第26页/共117页(7)AND (7)AND 和累加器进行与操作和累加器进行与操作 语法语法:AND dma AND dma 直接寻址直接寻址 AND ind ,ARn AND ind ,ARn 间接寻址间接寻址 AND #1k,shift AND #1k,shift 长立即数寻址长立即

36、数寻址 AND #1k,16 AND #1k,16 左移左移1616位的长立即数寻址位的长立即数寻址说明说明:如果是直接或间接寻址,数据存储单元中的数和累加器的低:如果是直接或间接寻址,数据存储单元中的数和累加器的低1616位进行与运算,结果放在累加器的低位进行与运算,结果放在累加器的低1616位,位,累加器的高累加器的高1616位清位清0 0。如果是立即数寻址,长立即数可以被左移,。如果是立即数寻址,长立即数可以被左移,没有被移位数填满的高位和低位均填没有被移位数填满的高位和低位均填0 0,移位结果与累加器的内容逻辑与。指令不受符号扩展位,移位结果与累加器的内容逻辑与。指令不受符号扩展位SX

37、MSXM影响。影响。【例例3-303-30】 AND #00FFh,4 AND #00FFh,412345678h12345678h执行指令前执行指令前执行指令后执行指令后00000670h00000670hACCACCACCACC第27页/共117页【例例3-28 3-28 】AND 16 ;DP=4:AND 16 ;DP=4:地址地址0200h0200h027Fh027Fh 00FFh00FFh12345678h12345678h数据存储器数据存储器210h210hACCACC执行指令前执行指令前执行指令后执行指令后00FFh00FFh00000078h00000078h数据存储器数据存储

38、器210h210hACCACC【例例3-29 3-29 】 AND AND * *0FF00h0FF00h12345678h12345678h数据存储器数据存储器301h301hACCACC执行指令前执行指令前执行指令后执行指令后0FF00h0FF00h00005600h00005600h数据存储器数据存储器301h301hACCACC0301h0301h4 44 40301h0301hARPARPAR4AR4ARPARPAR4AR4第28页/共117页(8)APAC PREG(8)APAC PREG加到累加器加到累加器 语法语法:APACAPAC 说明说明:PREGPREG寄存器的内容移位后

39、加到累加器寄存器的内容移位后加到累加器,移位的位数由状态寄存器,移位的位数由状态寄存器ST1ST1中的中的PMPM位确定。指令不受符号扩展位位确定。指令不受符号扩展位SXMSXM影响,影响,PREGPREG总是进行符号扩展。指令受总是进行符号扩展。指令受PMPM和和OVMOVM位影响,结果影响位位影响,结果影响位C C和溢出标志位和溢出标志位OVOV。【例例3-313-31】 APAC ;PM=01 APAC ;PM=01 40h40h20h20hPREGPREGACCACC执行指令前执行指令前执行指令后执行指令后40h40hA0hA0hPREGPREGACCACC0 0C CC C第29页/

40、共117页(9)B (9)B 无条件跳转无条件跳转 语法语法:B pma,ind,ARn B pma,ind,ARn 间接寻址间接寻址 说明说明:程序跳转到程序跳转到pmapma指定的地址指定的地址,并根据指令修改当前辅助寄存器,并根据指令修改当前辅助寄存器(ARP)(ARP)。pmapma值既可以是一个标号,也可是一个数字地址。值既可以是一个标号,也可是一个数字地址。 【例例3-323-32】 B 191, B 191,* *+,AR1+,AR1 将将191191加载到程序计数器,并且程序从该地址继续执行,当前辅助寄存器加加载到程序计数器,并且程序从该地址继续执行,当前辅助寄存器加1 1,并

41、且,并且ARPARP被设置为指向辅助寄存器被设置为指向辅助寄存器1(AR1)1(AR1)。(10)BACC (10)BACC 跳转到累加器指定的地址跳转到累加器指定的地址语法语法:BACCBACC说明说明:程序跳转到累加器低:程序跳转到累加器低1616位所指定的地址位所指定的地址。 【例例3-333-33】 BACC ; BACC ;假设假设ACCACC低低1616位为位为191191将数值将数值191191加到程序计数器,并且程序从该地址继续执行。加到程序计数器,并且程序从该地址继续执行。 第30页/共117页(11)BANZ (11)BANZ 辅助寄存器非辅助寄存器非0 0跳转跳转 语法语

42、法:BANZ pma,ind,ARn BANZ pma,ind,ARn 间接寻址间接寻址 说明说明:如果当前辅助寄存器的值如果当前辅助寄存器的值(AR)(AR)不为不为0 0,则程序跳转到,则程序跳转到pmapma指定的地址(指定的地址(pmapma值既可以是一个标号,也可以是一个数字地址),否则执行下一条指令值既可以是一个标号,也可以是一个数字地址),否则执行下一条指令。根据指令修改当前辅助寄存器。根据指令修改当前辅助寄存器(ARP)(ARP)和和ARAR内容内容( (缺省时减缺省时减1)1)。该指令常用于控制循环体的执行,如果要使循环体执行。该指令常用于控制循环体的执行,如果要使循环体执行

43、N N次,则可在循环体执行前将用于计数的辅助寄存器初始化为次,则可在循环体执行前将用于计数的辅助寄存器初始化为N-1N-1第31页/共117页【例例3-343-34】 BANZ PGM0 ;PGM0 BANZ PGM0 ;PGM0为标号为标号 0 05h5h0 04h4hARPARPAR0AR0ARPARPAR0AR0执行指令前执行指令前执行指令后执行指令后 因为因为AR0AR0的内容不为的内容不为0 0,则将,则将PGM0PGM0的地址加载到程序计数器的地址加载到程序计数器(PC)(PC),程序从该处运行。对当前,程序从该处运行。对当前ARAR减减1 1,变为,变为4h4h。 0 00h0h

44、0 0FFFFhFFFFhARPARPAR0AR0ARPARPAR0AR0执行指令前执行指令前执行指令后执行指令后 因为因为AR0AR0的内容为的内容为0 0,所以不跳转,而是将,所以不跳转,而是将PCPC加加2 2,即继续执行,即继续执行BANZBANZ后面的指令。当前后面的指令。当前ARAR减减1 1,变为,变为FFFFhFFFFh。第32页/共117页【例例3-35 3-35 】编制一个循环体程序,将数据存储单元编制一个循环体程序,将数据存储单元0060h0060h0063h0063h的内容加到累加器中。的内容加到累加器中。 MAR MAR * *,AR0 ;,AR0 ;设置设置ARPA

45、RP指向指向AR0AR0 LAR AR1,#3 ; LAR AR1,#3 ;加载加载3 3到到AR1AR1,循环,循环3 3次次 LAR AR0,#60h ; LAR AR0,#60h ;加载加载60h60h到到AR0AR0PGM191PGM191:ADD ADD * *+,AR1 ;+,AR1 ;将将AR0AR0指向的地址中数据加到指向的地址中数据加到ACCACC, ; ;并且并且AR0AR0值加值加1 1,ARPARP指向指向AR1AR1 BANZ PGM191, BANZ PGM191,* *-,AR0 ;AR1-,AR0 ;AR1不为不为0 0时循环,时循环,AR1AR1值减值减1 1

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

47、0 0ACC0ACC0GEQGEQ测试测试/ /控制标志位被清控制标志位被清0 0TC=0TC=0NTCNTC累加器的值大于累加器的值大于0 0ACC0ACC0GTGT引脚为低电平引脚为低电平BIOBIO为为0 0累加器的值小于或等累加器的值小于或等于于0 0ACC0ACC0LEQLEQ溢出标志位置溢出标志位置1 1OV=1OV=1OVOV累加器的值小于累加器的值小于0 0ACC0ACC0LTLT溢出标志位清溢出标志位清0 0OV=0OV=0NOVNOV累加器的值不等于累加器的值不等于0 0ACC0ACC0NEQNEQ进位位被置进位位被置1 1C=1C=1C C累加器的值等于累加器的值等于0

48、0ACC=0ACC=0EQEQ说说 明明条件条件操作操作数符数符号号说说 明明条件条件操作数操作数符号符号第34页/共117页【例例3-363-36】 BCND PGM191,LEQ,C BCND PGM191,LEQ,C 如果累加器的内容小于或等于如果累加器的内容小于或等于0 0,且进位位为,且进位位为1 1,则程序跳转到,则程序跳转到PGM191PGM191指定的地址;若条件不满足,则程序从指定的地址;若条件不满足,则程序从PC+2PC+2处继续执行。处继续执行。(13)BIT (13)BIT 位测试位测试语法语法:BIT dma,bit code BIT dma,bit code 直接寻

49、址直接寻址 BIT ind,bit code,ARn BIT ind,bit code,ARn 间接寻址间接寻址 说明说明:将数据存储单元中的:将数据存储单元中的指定位复制到状态寄存器指定位复制到状态寄存器ST1ST1的的TCTC位位。指定的位号为。指定的位号为1515bit codebit code。结果影响状态标志位。结果影响状态标志位TCTC。 第35页/共117页【例例3-373-37】 BIT 0h,15 ;DP=6, BIT 0h,15 ;DP=6,测试测试300h300h中数值的最低位中数值的最低位 4DC8h4DC8h* *4DC8h4DC8h0 0300h300hTCTC30

50、0h300hTCTC执行指令前执行指令前执行指令后执行指令后数据存储器数据存储器数据存储器数据存储器【例例3-38 3-38 】 BIT BIT * *,0,AR1 ;,0,AR1 ;测试测试310h310h中数值的最高位,然后设置中数值的最高位,然后设置ARP=1ARP=18000h8000h* *8000h8000h1 1310h310hTCTC310h310hTCTC执行指令后执行指令后数据存储器数据存储器数据存储器数据存储器0 00310h0310h1 10310h0310hARPARPAR0AR0ARPARPAR0AR0执行指令前执行指令前第36页/共117页(14)BITT TRE

51、G(14)BITT TREG指定位测试指定位测试 语法语法:BITT dma BITT dma 直接寻址直接寻址 BITT ind,ARn BITT ind,ARn 间接寻址间接寻址说明说明:将数据存储单元中数的被:将数据存储单元中数的被指定位复制到状态寄存器指定位复制到状态寄存器ST1ST1的的TCTC位。指定的位号为位。指定的位号为1515TREG(3:0)TREG(3:0),即,即1515减去减去TREGTREG寄存器的低寄存器的低4 4位值。结果影响状态标志位位值。结果影响状态标志位TCTC。【例例3-393-39】 BITT 0h ;DP=6 BITT 0h ;DP=6,测试数据的第

52、,测试数据的第1414位位 1h1h* *1h1h1 1TREGTREGTCTCTREGTREGTCTC执行指令后执行指令后数据存储器数据存储器数据存储器数据存储器4DC8h4DC8h4DC8h4DC8h0300h0300h0300h0300h执行指令前执行指令前第37页/共117页【例例3-403-40】 BITT BITT * * ; ;测试测试310h310h地址处数据的第地址处数据的第1 1位位8000h8000h0Eh0Eh8000h8000h0Eh0Eh310h310hTREGTREG310h310hTREGTREG执行指令后执行指令后数据存储器数据存储器数据存储器数据存储器1 1

53、0310h0310h1 10310h0310hARPARPAR1AR1ARPARPAR1AR1执行指令前执行指令前* *0 0TCTCTCTC第38页/共117页(17)CALA (17)CALA 累加器指定地址的子程序调用累加器指定地址的子程序调用语法语法:CALACALA说明说明:当前程序计数器:当前程序计数器(PC)+1(PC)+1后压入堆栈顶后压入堆栈顶(TOS)(TOS),然后将,然后将累加器的低累加器的低1616位加载到位加载到PCPC,程序从该地址执行。,程序从该地址执行。【例例3-453-45】 CALA CALA 25h25h83h83h100h100h83h83h83h83

54、h26h26hPCPCACCACC指令执行前指令执行前PCPCACCACC指令执行后指令执行后TOSTOSTOSTOS第39页/共117页(18)CALL (18)CALL 无条件调用无条件调用 语法语法:CALL pma,ind,ARn CALL pma,ind,ARn 带长立即数源的间接寻址带长立即数源的间接寻址 说明说明:当前程序计数器:当前程序计数器(PC)+2(PC)+2后压入堆栈顶后压入堆栈顶(TOS)(TOS),然后将,然后将pmapma值加载到值加载到PCPC,程序从该处执行,并按指定的方式修改当前,程序从该处执行,并按指定的方式修改当前ARAR和和ARPARP。 【例例3-4

55、63-46】 CALL 191, CALL 191,* *+,AR0+,AR01 105h05h30h30h100h100h0 006h06h0BFh0BFh32h32hARPARPAR1AR1指令执行前指令执行前ARPARPAR1AR1指令执行后指令执行后TOSTOSTOSTOSPCPCPCPC第40页/共117页(19)CC (19)CC 条件调用条件调用 语法语法:CC pma,cond1,cond2,CC pma,cond1,cond2,说明说明:如果:如果指定的条件都得到满足指定的条件都得到满足,则将返回地址,则将返回地址(PC+2)压入堆栈顶,把压入堆栈顶,把pmapma值加载到值

56、加载到PCPC,实现程序调用;若条件不满足,则,实现程序调用;若条件不满足,则PCPC加加2 2。 【例例3-473-47】CC PGM191,LEQ,C CC PGM191,LEQ,C 若累加器的内容小于或等于若累加器的内容小于或等于0 0,且进位位,且进位位C C为为1 1,则将,则将0BFh(191)0BFh(191)装入装入PCPC,程序从该处执行;若这些条件不同时满足,则从,程序从该处执行;若这些条件不同时满足,则从CCCC指令后的指令继续执行。指令后的指令继续执行。 第41页/共117页(20)CLRC (20)CLRC 控制位清控制位清0 0语法语法:CLRC CLRC 控制位控

57、制位 说明说明:将:将指定的控制位清指定的控制位清0 0,控制位包括:,控制位包括:C C、CNFCNF、INTMINTM、OVMOVM、SXMSXM、TCTC、XFXF。(21)CMPL (21)CMPL 累加器逻辑取反累加器逻辑取反 语法语法:CMPLCMPL说明说明:将累加器逻辑取反,进位位不受影响。:将累加器逻辑取反,进位位不受影响。 【例例3-49 3-49 】 CMPL CMPL0F7982513h0F7982513h0867DAECh0867DAECh指令执行前指令执行前指令执行后指令执行后ACCACCACCACCC CC C第42页/共117页(22)CMPR (22)CMPR

58、 辅助寄存器与辅助寄存器与AR0AR0比较比较 语法语法:CMPR CM ;CM=0-3CMPR CM ;CM=0-3说明说明:根据:根据CMCM值指定值指定的的比较条件比较条件,比较当前辅助寄存器和,比较当前辅助寄存器和AR0AR0值的大小,比较值的大小,比较结果存入状态寄存器结果存入状态寄存器ST1ST1的的TCTC位位。如果比较条件成立。如果比较条件成立TC=1TC=1;否则;否则TC=0TC=0。比较时辅助寄存器的值以无符号操作数形式参与。比较时辅助寄存器的值以无符号操作数形式参与。 CMCM说说 明明0 0测试当前测试当前ARAR是否等于是否等于AR0AR01 1测试当前测试当前AR

59、AR是否小于是否小于AR0AR02 2测试当前测试当前ARAR是否大于是否大于AR0AR03 3测试当前测试当前ARAR是否不等于是否不等于AR0AR0第43页/共117页【例例3-503-50】 CMPR 2 ; CMPR 2 ;当前当前ARAR值大于值大于AR0AR0否?否?4 40FFFFh0FFFFh7FFFh7FFFh* *4 40FFFFh0FFFFh7FFFh7FFFh0 0ARPARPAR0AR0指令执行前指令执行前ARPARPAR0AR0指令执行后指令执行后TCTCTCTCAR4AR4AR4AR4第44页/共117页(27)LACC (27)LACC 带移位的累加器带移位的累

60、加器装载装载 语法语法:LACC dma,shift LACC dma,shift 直接寻址直接寻址 LACC dma,16 LACC dma,16 左移左移1616位直接寻址位直接寻址 LACC ind,shift,ARn LACC ind,shift,ARn 间接寻址间接寻址 LACC ind,16,ARn LACC ind,16,ARn 左移左移1616位间接寻址位间接寻址 LACC #1k,shift LACC #1k,shift 长立即数寻址长立即数寻址说明说明:指定的数据存储单元的内容或一个:指定的数据存储单元的内容或一个1616位常数左移并位常数左移并加载加载到累加器中。左移位时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论