收藏 分享(赏)

DSP指令集.ppt

上传人:weiwoduzun 文档编号:5697648 上传时间:2019-03-13 格式:PPT 页数:547 大小:3.82MB
下载 相关 举报
DSP指令集.ppt_第1页
第1页 / 共547页
DSP指令集.ppt_第2页
第2页 / 共547页
DSP指令集.ppt_第3页
第3页 / 共547页
DSP指令集.ppt_第4页
第4页 / 共547页
DSP指令集.ppt_第5页
第5页 / 共547页
点击查看更多>>
资源描述

1、第4章 TMS320C54xTM DSP汇编语言与混合编程,4.1 概述4.2 汇编语言4.3 C54x DSP的C语言编程及混合编程 习 题,4.1 概 述,C54x DSP软件设计的方法通常有三种。第一种,用C语言开发。TI公司提供了用于C语言开发的CCS(Code Composer Studio)平台。该平台包括了优化ANSI C编译器,从而可以在C源程序级进行开发调试。这种方式的优点是可以增强软件的可读性,提高了软件的开发速度, 方便软件的修改和移植。然而, C编译器无法实现在任何情况下都能够合理地利用DSP芯片的各种资源。此外,对DSP芯片的某些硬件控制,用C语言就不如用汇编程序方便

2、,有些甚至无法用C语言实现。,第二种,用汇编语言开发。此种方式代码效率高,程序执行速度快,可以充分合理地利用芯片提供的硬件资源。然而,用汇编语言编写程序比较烦琐,可读性较差。另外,不同类别或不同公司的芯片汇编语言往往不同,因此可移植性较差。总 之,用汇编语言开发产品,周期长,软件的修改和升级困难。 第三种,C和汇编语言混合编程开发。采用混合编程的方法能更好地达到设计要求,完成设计任务。,4.2 汇 编 语 言,4.2.1 汇编语言源程序格式汇编语言是DSP应用软件的基础。编写汇编语言必须要符合相应的格式,这样汇编器才能将源文件转换为机器语言的目标文件。C54x DSP汇编语言源程序由源说明语句

3、组成,包含汇编语言指令、汇编伪指令、宏伪指令和注释等,一般一句程序占据编辑器的一行。由于汇编器每行最多只能读200个字符,因此源语句的字符数不能超过200个,一旦长度超过200个字符,汇编器将自行截去行尾的多余字符并给出警告信息。如果截去的是注释,那么不影响程序的正确执行;但如果截去了语句的执行部分,则程序会编译出错或错误执行。,汇编语言语句格式可以包含4个部分:标号域、指令域、操作数域和注释域。以助记符指令为例,汇编语言语句格式如下:标号: 指令操作数列表 ;注释,其中 内的部分是可选项。在编写汇编指令时,必须遵循以下格式:(1) 语句必须以标号、空格、星号或分号开始。,(2) 标号为可选项

4、。若要使用标号,则必须从第1列开始。标号长度最多为32个字符,由AZ,az,09,_和$等组成,但第1个字符不能为数字。标号后可以跟一个冒号(:),但并不作为标号的一部分。(3) 每个域必须由1个或多个空格分开,制表符等效于空格。(4) 注释是可选项,开始于第1列的注释须用星号或分号(*或;)标示,但在其他列开始的注释前面只能标分号。,(5) 指令域一定不能从第1列开始,否则将被视为标号。指令域包括以下操作码之一:助记符指令、汇编伪指令(如.data,.set)、宏伪指令(如.var,.macro)和宏调用。(6) 操作数域为操作数的列表,汇编器允许指定常数、符号或表达式作为地址、立即数或间接

5、寻址。当操作数为立即数时,使用#符号作为前缀;操作数为间接寻址时,使用*符号作为前缀,将操作数的内容作为地址。,4.2.2 汇编指令介绍 C54x DSP按指令的功能分类,可分为如下四类: * 数据传送指令; * 算术运算指令; * 逻辑运算指令; * 程序控制指令。,表4.1 指 令 集 符 号,续表一,续表一,续表二,1数据传送指令数据传送指令把源操作数从源存储器中传送到目的操作数指定的存储器中。C54x DSP的数据传送指令包括装载指令、存储指令、条件存储指令、并行装载和存储指令、并行装载和乘法指令、并行存储和加/减法指令、并行存储和乘法指令、混合装载和存储指令。,1) 装载指令装载指令

6、是取数或赋值指令,将存储器内容或立即数赋给目的寄存器,共7条指令,如下所示。(1) DLD 语 法:助记符方式 表达式方式 DLD Lmem,dst dst = dbl(Lmem)dst = dual(Lmem) 执行方式:if C16 = 0Then(Lmem)dstElse(Lmem(31-16)dst(39-16)(Lmem(15-0)dst(15-0)受SXM的影响。,功能描述:该指令只把32 bit的长操作数Lmem装入到目的累加器dst中。C16的值决定了所采用的方式:C16=0 指令以双精度方式执行。Lmem装入到dst中。C16=1 指令以双16 bit方式执行。Lmem的高1

7、6 bit装入到 dst前24 bit中;同时,Lmem的低16 bit装入到dst的 低16 bit中。,例4.1,DLD *AR3+,B,Data Memory,因为该指令是一个长操作指令,所以AR3在执行后加2。,在所有累加器装入操作中都会受到SXM影响,在带有SHIFT或ASM移位的装入操作中只受OVM的影响;在带有SHIFT或ASM移位的装入指令中影响Ovd(或当dst=src时影响OVsrc)。功能描述:把一数据存储器值或一立即数装入累加器(dst或当没有确定dst时为src),并支持各种不同的移位。另外,指令支持带移位的累加器到累加器的搬移。,例4.2,LD *AR1,A,Dat

8、a Memory,例4.3,LD *AR1,A,Data Memory,例4.4,LD *AR3+,16,A,Data Memory,例4.5,LD *AR3+,16,A,Data Memory,(3) LD 语 法:助记符方式 表达式方式 LD Smem,T T = Smem LD Smem,DP DP = Smem LD # k9,DP DP = # k9 LD # k5,ASM ASM = # k5 LD # k3,ARP ARP = # k3 LD Smem,ASM ASM = Smem,执行过程: (Smem)T (Smem(8-0)DP k9DP k5ASM k3ARP (Smem

9、(4-0)ASM不影响任何状态位。,功能描述:把一个数装入T寄存器或状态寄存器ST0或ST1中的DP、ASM和ARP域中。装入的数可以是一个单数据存储器操作数Smem也可以是一个常数。该指令代码为一个字,但当Smem采用了长偏移直接寻址或绝对地址寻址方式时,指令代码为两个字。,例4.6,LD *AR3+,T,Data Memory,例4.7,LD *AR4,DP,Data Memory,例4.8,LD #23,DP,例4.9,LD 15,ASM,例4.10,LD 3,ARP,例4.11,LD DAT0 ASM,Data Memory,(4) LDM语 法:助记符方式 表达式方式LDM MMR,

10、dst dst = MMRdst =mmr(MMR)执 行过程:(MMR)dst不影响任何状态位。功能描述:把存储器映射寄存器MMR中的值装入到目的累加器dst中。不管DP的当前值或ARx的高9位的值是多少,都把有效地址的高9位清0,以指定为在数据页0中。该指令不受SXM的影响。,例4.12,LDM AR4,A,(5) LDR语 法:助记符方式 表达式方式LDR Smem,dst dst = rnd(Smem)执行过程:(Smem) 16 + 1 15dst(31-16)受SXM的影响。功能描述:把单数据存储器操作数Smem左移16 bit后装入目 的累加器dst的高端(3116位)。Smem

11、通过加215 再对累加器的低端(150位)清0来凑整。累加器 的第15位置为1。,例4.13,LDR *AR1,A,Data Memory,(6) LDU语 法:助记符方式 表达式方式LDU Smem,dst dst = uns(Smem)执行过程:(Smem)dst(15-0)00 0000Hdst(39-6)不影响任何状态位。功能描述:把单数据存储器值Smem装入目的累加器dst的低端(150位)。dst的保护位和高端(3916位)清0。因此,数据被看成是一个不带符号的16 bit数。不管SXM位的状态如何都无符号扩展。该指令代码占一个字,但当Smem采用长偏移间接寻址或绝对地址寻址方式时

12、就会多占一个字。,例4.14,LDU *AR1,A,Data Memory,(7) LTD语 法:助记符方式 表达式方式LTD Smem ltd(Smem)执行过程:(Smem)T(Smem)Smem + 1不影响任何状态位。功能描述:把一个单数据存储器单元的内容Smem复制到T寄存器和紧接着T的数据单元中去。当数据复制完毕后,Smem单元的内容保持不变。这个功能在数字信号处理中实现一个Z延时是相当有用的。该功能在存储器延迟指令中也存在。,例4.15,LTD *AR3,Data Memory,2) 存储指令存储指令将原操作数或立即数存入存储器或寄存器,共10条指令, 如下所示。(1) DST语

13、 法:助记符方式 表达式方式DST src,Lmem dbl(Lmem)= srcdual(Lmem)= src 执行过程:(src(31-0)Lmem不影响任何状态位。功能描述:把源累加器的内容放在一个32 bit的长数据存储器单元Lmem中。,例4.16,DST B,*AR3+,Data Memory,(2) ST语 法:助记符方式 表达式方式 ST T,Smem Smem = T ST TRN,Smem Smem = TRN ST #1k,Smem Smem = #1k执行过程: (T)Smem (TRN)Smem 1k Smem该指令不影响任何状态位。 功能描述:把T寄存器的内容,过渡

14、寄存器(TRN)的内容或一个 16 bit常数1 k存放到数据存储器单元Smem中去。,例4.17,ST TRN,DAT5,Data Memory,例4.18,ST T,*AR7-,Data Memory,(3) STH 语 法:助记符方式 表达式方式 STH src,Smem Smem = hi(src) STH src,ASM,Smem Smem = hi(src) ASM STH src,SHFT,Xmem Xmem = hi(src)SHFT STH src,SHIFT,Smem Smem = hi(src) SHIFT执行过程: (src(31-16)Smem (src)(ASM-1

15、6)Smem (src)(SHFT-16)Xmem (src)(SHIFT-16)Smem该指令受SXM影响。,功能描述:把源累加器src的高端(3116位)存放到数据存储器单元Smem中去。Src进行左移,移动位数由ASM、SHFT或SHIFT决定;然后再把移位后的值(3116位)存放到数据存储器单元(Smem或Xmem)中。如果SXM=0,则把src的39位复制到数据存储器单元的最高位。如果SXM=1,就把移位后进行了符号扩展的第39位存放到数据存储器单元的最高位。,例4.19,STH A,DAT10,Data Memory,例4.20,STH B,8,*AR7,(4) STL 语 法:助

16、记符方式 表达式方式 STL src,Smem Smem = src STL src,ASM,Smem Smem = src ASM STL src,SHFT,Xmem Xmem = srcSHFT STL src,SHIFT,Smem Smem = src SHIFT 执行过程: (src(15-0)Smem (src) ASMSmem (src) SHFTXmem (src) SHIFT-16Smem,该指令受SXM影响。功能描述:把源累加器src的低端(150位)存放到数据存储器单元Smem中去。Src进行左移操作,移动位数由ASM、SHFT或SHIFT决定。然后把移位后的值(150位)

17、存放到数据存储器单元(Smem或Xmem)中去。当移位值为正时,低位添0。,例4.21,STL A,DAT11,例4.22,STL B,-8,*AR7-,Data Memory,(5) STLM语 法:助记符方式 表达式方式STLM src,MMR MMR = srcmmr(MMR)= src 执行过程:(src(15-0)MMR该指令不影响任何状态位。功能描述:把源累加器src的低端(150位)存放到存储器映射寄存器MMR中。无论DP的当前值或ARx的高9位是多少,都对有效地址的高9位清0。指令允许src存放在数据第0页中的任何一个存储器单元中而不必修改状态寄存器ST0中的DP域。,例4.2

18、3,STLM A,BRC,例4.24,STLM B,*AR1-,(6) STM 语 法:助记符方式 表达式方式STLM # 1k,MMR MMR = #1kmmr(MMR)= #1k 执行过程:1kMMR该指令不影响任何状态位。 功能描述:该指令的功能是:把一个16 bit常数1k存放到一个存 储器映射寄存器MMR或一个在第0数据页中的存储 器单元,而不必修改状态寄存器ST0中的DP域。无 论DP的当前值或ARx的高9位是多少,都对有效地 址的高9位清0。,例4.25,STM 1111H,IMR,例4.26,STM 8765H,*AR7+,(7) CMPS 语 法:助记符方式 表达式方式CMP

19、S src,Smem cmps(src,Smem) 执行过程:if(src(31-16)(src(15-0)Then (src(31-16)Smem(TRN) 1TRN0TRN(0)0TCElse (src(15-0)Smem1TRN(0)1TC该指令影响TC位。,功能描述:比较位于源累加器的高端和低端的两个16 bit二进制补码值的大小,把较大值存在单数据存储器单元Smem中。如果是源累加器的高端(3116位)较大,则过渡寄存器(TRN)左移一位,最低位填0,TC位清0。如果是源累加器的低端(150位)较大,则TRN左移一位,最低位填1,TC位置1。该指令不遵从标准的流水操作。比较是在读操作

20、数阶段完成,因而,源累加器的值是指令执行前一个阶段的值。TRN寄存器和TC位是在执行阶段被修改的。,例4.27,CMPS A,*AR4+,(8) SACCD 语 法:助记符方式 表达式方式SACCD src, Xmem, cond if (cond) Xmem=hi (src)ASM 执行方式:if (cond)Then(src) (ASM-16)XmemElse(Xmem)(Xmem)该指令受ASM和SXM的影响。,功能描述:如果满足条件(如表4.2所示),则源累加器src左移(ASM-16)位后存放到Xmem指定的存储器单元中去;如果不满足条件,则指令从Xmem中读出数据,然后又把它写回到

21、原来的单元中去,即Xmem单元的值保持不变。,表4.2 功 能 条 件,例4.28,SACCD A,*AR3+0%,ALT,Data Memory,(9) SRCCD 语 法:助记符方式 表达式方式 SRCCD Xmem,cond if(cond)Xmem=BRC 执行过程:if (cond)Then(BRC)XmemElse(Xmem)Xmem该指令不会影响任何状态位。功能描述:如果满足条件,则指令把块循环计数器(BRC)中的内容放到Xmem中去;如果不满足条件,则指令把Xmem中的内容读出,再把它写回去,即Xmem保持不变。,例4.29,SRCCD *AR5-,AGT,Data Memor

22、y,语 法:助记符方式 表达式方式STRCD Xmem,cond if(cond) Xmem = T 执行过程:if (cond)(T)XmemElse(Xmem)Xmem该指令不会影响任何状态位。功能描述:如果满足条件,就把T寄存器的值存放到数据存储器单元Xmem中去;如果不满足条件,则指令从单元Xmem中读出数据,然后再把它写回到Xmem中去,即Xmem中的数据保持不变。,例4.30,STRCD *AR5-,AGT,Data Memory,3) 混合装载和存储指令混合装载和存储指令共12条,如下所示。(1) MVDD 语 法:助记符方式 表达式方式MVDD Xmem,Ymem Ymem =

23、 Xmem 执行过程:(Xmem)Ymem该指令不影响任何状态位。功能描述:把通过Xmem寻址的数据存储器单元的值复制到通过Ymem寻址的数据存储器单元中去。,例4.31,MVDD *AR3+,*AR5+,Data Memory,(2) MVDK 语 法:助记符方式 表达式方式MVDK Smem,dmad data(dmad)= Smem 执行过程:(dmad)EARif (RC)0Then(Smem)通过EAR寻址的Dmem(EAR)+1EARElse(Smem)通过EAR寻址的Dmem该指令不会影响任何状态位。,功能描述:把一个单数据存储器操作数Smem的内容复制到一个通过dmad(地址在

24、EAB地址寄存器EAR中)寻址的数据存储器单元。可以循环执行该指令来转移数据存储器中的连续字(使用间接寻址)。实际被转移的字数要比指令开始执行时循环计数器中的值大1。一旦启动流水,指令就成为单周期指令。该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。,例4.32,MVDK DAT10,8000H,Data Memory,例4.33,MVDK *AR3-,1000H,Data Memory,(3) MVDM 语 法:助记符方式 表达式方式MVDM dmad,MMR MMR=data(dmad)mmr(MMR)=data(dmad) 执行过程:dmadDARif

25、(RC)0Then(通过DAR寻址的Dmem) MMR(DAR)+1DARElse(通过DAR寻址的Dmem) MMR,该指令不影响任何状态位。功能描述:把数据从一个数据存储器单元dmem(dmad的值装入DAB地址寄存器DAR中)复制到一个存储器映射寄存器MMR中。一旦启动了循环流水,指令就变成了一条单周期指令。该指令代码占两个字。,例4.34,MVDM 300H,BK,Data Memory,(4) MVDP 语 法:助记符方式 表达式方式MVDP Smem,pmad prog(pmad)= Smem 执行过程: pmadPARif (RC)0Then(Smem)由PAR寻址的Pmem(P

26、AR)+1PARElse(Smem)由PAR寻址的Pmem该指令不会影响任何状态位。,功能描述:把严格的16 bit单数据存储器操作数Smem复制到一个由16 bit立即数pmad寻址的程序存储器单元中。通过循环执行该指令可以把数据存储器中的连续字(使用间接寻址)转移到由16 bit立即数寻址的连续的程序存储器空间中。源和目的块不必全部在片外或片内。当循环流水开始进行时,该指令就变成了一个单周期指令。另外,当循环执行该指令时,中断被禁止。,例4.35,MVDP DAT0,0FE00H,Data Memory,Program Memory,(5) MVKD 语 法:助记符方式 表达式方式MVKD

27、 dmad, Smem Smem = data(dmad) 执行过程: dmadDARif (RC)0Then(通过DAR寻址的Dmem)Smem(DAR)+1DARElse(通过DAR寻址的Dmem)Smem该指令不会影响任何状态位。,功能描述:把数据从一数据存储器单元转移到另一个数据存储器单元中。源数据存储器单元由一个16 bit立即数dmad寻址,然后转移到Smem中。循环执行该指令可以转移数据存储器中的连续字(使用间接寻址)。转移的字数要比指令开始执行时循环计数器中的值大1。一旦形成循环流水,该指令就变成了单周期指令。该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址方式时就

28、会多占一个字。,例4.36,MVKD 1000H,*+AR5,Data Memory,(6) MVMD 语 法:助记符方式 表达式方式MVMD MMR,dmad data(dmad)= MMR data(dmad)= mmr(MMR) 执行过程:dmadEARif(RC)0Then(MMR)由EAR寻址的Dmem(EAR)+ 1EARElse(MMR)由EAR寻址的Dmem,该指令不影响任何状态位。功能描述:把数据从一个存储器映射寄存器MMR转移到一个数据存储器中。目的数据存储器通过一个16 bit立即数dmad寻址。一旦建立了循环流水,该指令就变成了单周期指令。,例4.37,MVMD AR7

29、,8000H,Data Memory,(7) MVMM 语 法:助记符方式 表达式方式MVMM MMRx,MMRy MMRy = MMRxmmr(MMRy)= mmr(MMRx) 执行过程:(MMRx)MMRy该指令不会影响任何状态位。功能描述:把存储器映射寄存器MMRx中的内容转移到另一个存储器映射寄存器MMRy中。MMRx和MMRy只可能为9种操作数(AR0AR7和SP)。读MMRx的操作在译码阶段执行;写MMRy的操作在访问阶段执行。注意,该指令不能循环执行。,例4.38,MVMM SP,AR1,(8) MVPD 语 法:助记符方式 表达式方式MVPD pmad,Smem Smem =

30、prog(pmad) 执行过程:pmadPARif (RC)0Then(由PAR寻址的Pmem)Smem(PAR)+1PARElse(由PAR寻址的Pmem)Smem,该指令不影响任何状态位。功能描述:把一个字通过16 bit立即数pmad寻址的程序存储器转移到一个由Smem寻址的数据存储器单元。循环执行该指令能把程序存储器中的连续字转移到连续的数据存储器单元中去。源和目的块不必全部都在片内或片外。当建立起了循环流水,该指令就变成了单周期指令。另外,循环执行该指令时禁止中断。该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。,例4.39,MVPD 0FE00H,

31、DAT5,Program Memory,Data Memory,例4.40,MVPD 2000,*AR7-0,Program Memory,(9) PORTR 语 法:助记符方式 表达式方式 PORTR PA,Smem Smem=port(PA) 执行过程:(PA)Smem 该指令不会影响任何状态位。功能描述:从一个外部I/O口PA(地址为16 bit立即数)把一个16 bit数读入到指定的数据存储器单元Smem中。信号变为低电平表明在访问I/O口;和READY的时序和读外部数据存储器的时序相同。该指令代码占两个字,但当Smem使用长偏移间接寻址或绝对地址寻址时,就会多占一个字。,例4.41,

32、PORTR 05,INDAT;INDAT .equ 60H,I/O Memory,Data Memory,(10) PORTW 语 法:助记符方式 表达式方式 PORTW Smem,PA port(PA)=Smem 执行过程:(Smem)PA 该指令不影响任何状态位。功能描述:把指定的数据存储器单元Smem中的16 bit数写到外部I/O口PA中去。信号变为低电平表明在访问I/O口;和READY的时序和读外部数据存储器的时序相同。该指令代码占两个字,但当Smem使用长偏移间接寻址或绝对地址寻址时就会多占一个字。,例4.42,PORTW OUTDAT,5H;OUTDAT .equ 07H,I/O

33、 Memory,Data Memory,(11) READA 语 法:助记符方式 表达式方式READA Smem Smem=prog (A) 执行过程: APAR if (RC)0)Then(由PAR寻址的Pmem)Smem(PAR)+1PAR(RC)-1RC Else(由PAR寻址的Pmem)Smem,该指令不影响任何状态位。功能描述:把累加器A确定的程序存储器单元中的一个字传送到一个数据存储器单元Smem中去。一旦建立了循环流水,指令就变成了单周期指令。对于不同的芯片,累加器A确定程序存储器单元的方式如下:,可以循环执行该指令,把一块连续字(由累加器A确定起始地址)转移到一个连续的使用间接

34、寻址方式的数据存储器空间中去。源和目的块不必全部都在片内或片外。,例4.43,READA DAT6,Program Memory,Data Memory,(12) WRITA 语 法:助记符方式 表达方式WRITA Smem prog(A)=Smem 执行过程:A PAR if(RC)0 Then(Smem)由PAR寻址的Pmem(PRA)+1PRA(RC)-1RC Else(Smem)由PRA寻址的Pmem 该指令不影响任何状态位。,功能描述:把一个字从一个由Smem确定的数据存储器单元传送到一个程序存储器单元。程序存储器的地址由累加器A确定,具体情况与芯片有关:,我们可以通过循环指令,把数

35、据存储器中的连续字(使用间接寻址)转移到由PRA寻址的连续的程序存储器空间去。PAR的初始值是累加器A的低16位值。源和目的块都不必完全在片内或片外。当循环时,一旦建立了循环流水,该指令就变成了单周期指令。,例4.44,WRITA DAT5,Program Memory,Data Memory,2算术运算指令C54x DSP的算术运算指令包括加法指令、乘法指令、乘法累加指令、乘法减法指令、双字运算指令及特殊应用指令。1) 加法指令加法指令共4条,如下所示。,(1) ADD 语 法:助记符方式 表达式方式 ADD Smem,src src=src+Smemsrc+=Smem ADD Smem,T

36、S,src src=src+SmemTSsrc+=SmemTS ADD Smem,16,src,dst dst=src+Smem16dst+=Smem16 ADD Smem,SHIFT,src,dst dst=src+SmemSHIFTdst+=SmemSHIFT, ADD Xmem,SHIFT,src src=src+XmemSHIFTsrc+=XmemSHIFT ADD Xmem,Y mem,dst dst=Xmem16+ Ymem16 ADD #1k,SHIFT ,src,dst dst=src+ #1k SHIFTdst+= #1k SHIFT ADD #1k,16 ,src,dst

37、dst=src+ #1k16dst+= #1k 16 ADD src,SHIFT ,dst dst= dst+srcSHIFTdst+=src+SHIFT ADD src,ASM ,dst dst=dst+srcASMdst+= srcASM,执行过程: (Smem)+(src)src (Smem)(TS)+(src)src (Smem) 16 +(src)dst (Smem) SHIFT +(src)dst (Xmem) SHIFT +(src)src (Xmem)+(Ymem) 16dst 1k 16 +(src)dst 1k SHIFT +(src)dst (src or dst)+(s

38、rc) SHIFTdst (src or dst)+(src) ASMdst,该指令受SXM和OVM影响,且影响C和OVdst(如果dst=src,就是OVsrc)。功能描述:把一个16 bit的数加到选定的累加器中,或加到一个采用双数据存储器操作数寻址的16 bit操作数Xmem中。这个16 bit的数可为以下情况中的一个: * 单数据存储器操作数(Smem); * 双数据存储器操作数(Ymem); * 一个16 bit立即操作数(#1k); * src中的移位数。,如果定义了dst,结果就存在dst中;否则,结果存在src中。大部分第二操作数要移位。左移位时低位添0;右移时高位情况为: 如

39、果 SXM = 1,进行符号扩展; 如果 SXM = 0,则添0。,例4.45,ADD *AR3+,14,A,Data Memory,例4.46,ADD A,-8, B,ADD #456B, 8, A, B,例4.47,(2) ADDC 语 法:助记符方式 表达式方式ADDC Smem,src src=src+Smem+CARRYsrc +=Smem+CARRY 执行过程:(Smem)+(src)+(C)src该指令受OVM和C影响,并能影响C和OVsrc。功能描述:把16 bit单数据存储器操作数Smem和进位位(C)的值加到src中,其结果存放在src中。无论SXM位的值是什么,都不进行符

40、号扩展。,例4.48,ADDC *+AR2(5), A,Data Memory,(3) ADDM 语 法:助记符方式 表达式方式ADDM #1k ,Smem Smem=Smem+#1kSmem+=#1k执行过程:#1k+(Smem)Smem该指令受OVM和SXM影响,并能影响C和OVA。功能描述:16 bit单数据存储器操作数Smem与16 bit立即数1k相加,结果存放在Smem中。该指令不能循环执行。,例4.49,ADDM 0123BH, *AR4+,Data Memory,例4.50,ADDM ,0FFF8H,*AR4+,Data Memory,(4) ADDS 语 法:助记符方式 表达

41、式方式 ADDS Smem,src src=src+uns(Smem)src +=uns(Smem) 执行过程:uns(Smem)+(src)src该指令受OVM影响,并能影响C和OVsrc。功能描述:把不带符号的16 bit单数据存储器操作数Smem加到src中,结果存放在src中。无论SXM为何值都不进行符号扩展。,例4.51,ADDS *AR2-,B,Data Memory,2) 减法指令 减法指令共4条,如下所示。 (1) SUB 语 法:助记符方式 表达式方式 SUB Smem,src src=src-Smemsrc- =Smem SUB Smem,TS,src src=src-Sm

42、emTS src- =SmemTS SUB Smem,16,src,dst dst=src-Smem16dst- =Smem16 SUB Smem,SHIFT,src,dst dst=src-SmemSHIFTdst- =SmemSHIFT SUB Xeme, SHIFT,src src=src-XmemSHFTsrc- =XmemSHFT, SUB Xeme,Ymem,dst dst=Xmem16-Ymem16 SUB #lk, ,SHIFT,src,dst dst=src-#lkSHFTdst- =#lkSHFT SUB #lk,16, src,dst dst=src-#lk16dst-

43、=#lk16 SUB src ,SHIFT, ,dst dst=dst-srcSHIFTdst- =srcSHIFT SUB src ,ASM, ,dst dst=dst-srcASMdst- =srcASM,执行过程: (src)-(Smem)src (src)-(Smem)TSsrc (src)-(Smem)16dst (src)-(Smem)SHIFTdst (src)-(Xmem)SHIFT rc (Xmem)16-(Ymem)16dst (src)-lkSHFTdst (src)-lk16dst (src)-(src)SHFTdst (src)-(src)ASMdst,该指令受SXM

44、和OVM的影响,并能影响C和OVdst(如果dst=src,就为OVsrc)。在语法中,如果减法的结果产生一个借位,则进位位C为0;否则C不受影响。功能描述:从选定的累加器或采用双数据存储器寻址方式的16 bit操作数Xmem中减去一个16 bit值。16 bit减数可能是下列情况中的一种: * 单数据存储器操作数(Smem); * 双数据存储器操作数(#lk); * 16 bit立即数(#lk); * 源累加器src的移位值。,如果指定了目的累加器dst,结果就存放在dst中;否则,结果存放在src中。大部分指令的第二操作数都进行了移位。对于左移,低位添0;高位当SXM=1时进行符号扩展,当

45、SXM=0时添0。对于右移,高位当SXM=0时进行符号扩展,当SXM=0时添0。,例4.52,SUB *AR1+,14,A,Data Memory,例4.53,SUB A,-8,B,例4.54,SUB #12345,8,A,B,(2) SUBB 语 法:助记符方式 表达式方式SUBB Smem,src src=src-Smem-BORROWsrc-=Smem-BORROW 执行过程:(src)-(Smem)-(C的逻辑反)src该指令受OVM和C的影响,并能影响C和OVsrc。功能描述:从源累加器中减去单数据存储器操作数的值和进位位C的逻辑反,且不进行符号扩展。,例4.55,SUBB DAT5,A,Data Memory,例4.56,SUBB *AR1+,B,Data Memory,(3) SUBC 语 法:助记符方式 表达式方式SUBC Smem,src subc(Smem,src) 执行过程:(src)-(Smem)15)ALU的输出if ALU的输出0Then(ALU的输出)1)+1srcElse(src)1src 该指令受SXM的影响,并能影响C和OVsrc。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报