




已阅读5页,还剩112页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章TMS320LF240 x的软件结构,3.1TMS320LF240 x的寻址方式,DSP系统也具有计算机的一般特性,其完成的任务是采样、运算和输出的功能,即从某个地址单元(片内或片外)取数据,然后按照一定的规则进行运算,最后将运算的结果存放到某个地址单元来输出。因此,在程序中如何寻址和表达数据的地址是软件系统的关键问题。,TMS320LF240 x的程序采用了三种基本的寻址方式:立即寻址、直接寻址和间接寻址。,3.1.1立即寻址方式,指令操作所需要的数就在本指令中,这个数也称为立即数。立即寻址的操作数分为短立即数和长立即数,因此相应的寻址方式也有短立即数寻址和长立即数寻址。,退出,【例1】,采用8位短立即数寻址的RPT指令,需要重复执行的次数包含在指令操作码后。,RPT#k;8位短立即数寻址,退出,【例2】,采用9位短立即数寻址的RPT指令,需要重复执行的次数包含在指令操作码后。,RPT#k;9位短立即数寻址,退出,【例3】,采用13位短立即数寻址的RPT指令,需要重复执行的次数包含在指令操作码后。,RPT#k;13位短立即数寻址,退出,【例4】,采用16位长立即数寻址的ADD指令。,ADD#1k,2;将立即数1k左移2位后与累加器中;的内容相加,结果存累加器中,退出,3.1.2直接寻址方式,操作地址就在指令中,按照该地址可以直接访问寄存器,这个地址也称为直接地址。,在DSP程序中,直接寻址通常是将指令中的数据页指针DP和操作数合并起来作为被访问的地址。每页的具体操作地址的高9位是由数据页指针DP决定;低7位(又称偏移地址量)是由指令操作数决定,它处于指令寄存器的最低7位有效位上。DP指针与偏移地址量共同构成16位的指令操作地址。,第158位为指令的操作码;第7位为直接/间接寻址指示符,为0是直接寻址;第60位为偏移地址量。,退出,因此,在使用直接寻址方式时,应按下述步骤进行:,(1)设置数据页面。将页值加载到DP,加载时可使用LDP指令。LDP指令可直接加载DP而不影响ST0的其他位,该指令明确指出加载到DP的值,例如把当前数据页设置成32(地址1000h107Fh),可使用如下指令。LDP#32;加载数据页指针,(2)指定偏移量。提供7位偏移量作为指令的操作数。例如将当前数据页的第2个地址中的数据加到ACC时。ADD1h;将当前数据页中偏移量为1处的数据加到ACC,如果在一段代码块中所有的指令都访问的是同一数据页,则只需在该块代码的前面加载一次DP即可;如果代码块中需要访问不同的数据页,则每当访问新的数据页时需确保加载相应的DP。,退出,【例5】,采用直接寻址的ADD指令。,LDP#4;设置数据页为4(地址0200h-027Fh)ADD9h,5;将数据地址0209h单元的内容左移5位后加至ACC,退出,【例6】,使用直接寻址的ADDC指令。,LDP#500;设置数据页为500(地址FA00h-FA7Fh)ADDC6h;数据寄存器地址FA06h单元的内容和进位值(C);一起加至累加器中,退出,3.1.3间接寻址方式,指令中给出的操作数既不是立即数也不是直接地址,而是将这个操作数做地址的内存单元的内容作为访问地址,即指令中的操作数是一个间接地址。间接寻址为系统的编程带来了很大的灵活性和方便性。,DSP芯片内有8个辅助寄存器AR0-AR7和辅助寄存器算术单元ARAU,这些资源专用于间接寻址,它可以访问64KB的寻址空间而不受数据页的限制。因此,DSP的间接寻址能力非常灵活和强大,而且寻址的速度非常快。,在间接寻址时,当前AR的内容用作将被访问的数据存储器的地址。因此,当前辅助寄存器中的内容才是真正被访问的数据地址。,在进行间接寻址操作的同时可以对当前辅助寄存器中的内容(即操作地址)进行修改,甚至可以改变ARP的值,为下一次的间接寻址操作做准备,从而极大地提高了寻址速度。,退出,TMS320LF240 x提供了对AR的内容进行四种运算的选择:,退出,【例7】,当前AR不增不减,ADD*,8;把当前AR指定的数据存储单元的内容左移8位;后加至累加器中,【例8】,当前AR增加1,ADD*+,8,AR4;把当前AR指定的数据存储单元的内容左;移8位后加至累加器中,当前AR内容加1,;指定下条指令的当前辅助寄存器为AR4,【例9】,当前AR减去1,ADD*,8;把当前AR指定的数据存储单元的内容左移8;位后加至累加器中,当前AR内容减1,退出,【例10】,当前AR增加一个变址量,ADD*0+,8;把当前AR指定的数据存储单元的内容左移8;位后加至累加器中,AR0的内容加到当前AR,【例11】,当前AR减去一个变址量,ADD*0,8;把当前AR指定的数据存储单元的内容左移8;位后加至累加器中,当前AR的内容减去AR0;内容,退出,3.2TMS320LF240 x的汇编指令,汇编语言是DSP应用软件的基础,使用汇编语言时必须要符合规定的格式,只有这样汇编器才能将源文件转换为机器语言的目标文件。,1汇编语言源程序的标准格式,汇编语句格式一般包含4部分:标号、指令、操作数和注释,以助记符指令为例,格式如下,标号:指令操作数;注释,其中内的内容为可选项。,在编写汇编语句时,必须遵循以下格式:,(1)语句必须以标号、空格、星号或分号开始。,退出,(2)若使用标号,则必须从第1列开始。标号长度最多为32个字符,由A-Z、a-z、0-9、_和$等组成,但第1个字符不能为数字。标号后可以跟一个冒号(:),但并不作为标号的一部分。,(3)每部分必须由1个或多个空格分开。,(4)开始于第1列的注释须用星号(*)或分号(;)标示,但在其他列开始的注释前面只能用分号。,(5)指令一定不能从第1列开始,否则将被视为标号。指令包括助记符指令、汇编伪指令(如.data,.set)等。,(6)操作数可以为列表形式,汇编器允许使用常数、符号或表达式作为地址、立即数或间接寻址。当操作数为立即数时,使用#号作为前缀;操作数为间接寻址时,使用*号,将操作数的内容作为地址。,退出,2汇编语言的指令集,TMS320LF240 x的汇编语言共86条,分为6大类,分别是累加器、算术和逻辑指令;辅助寄存器和数据页指针指令;TREG、PREG和乘法指令;跳转指令;控制指令;I/O和存储器操作指令。,3汇编指令的语法和说明,在介绍汇编指令之前,先把所用到的主要操作数做一规定:,dma:数据存储器地址的低7位(LSB)shift:左移位数015n:指定下一次的辅助寄存器ARP值(07)k:8位短立即数1k:16位长立即数ind:是一个间接寻址变量,可取*、*+、*、*0+、*0、*BR0+、*BR0,退出,(1)ABS(累加器取绝对值),语法:ABS,说明:计算ACC的绝对值,进位位C置0。指令受OVM状态标志位影响,执行的结果影响C和OV。如果ACC的内容大于或等于0,执行指令后其内容不变;若累加器内容小于0,执行指令后用其对2的补码数(即它的绝对值)取代原来的值。ACC=80000000h时为特殊情况,若溢出方式位OVM=0,对80000000h取绝对值(执行ABS指令)的结果是80000000h;若溢出方式位OVM=1,对80000000h取绝对值的结果是7FFFFFFFh,无论哪种情况下,状态位OV都置1。,退出,【例3-14】,ABS,【例3-15】,ABS;(OVM=0),退出,(2)ADD累加器加,语法:ADDdma,shift直接寻址ADDdma,16左移16位直接寻址ADDind,shift,ARn间接寻址ADDind,16,ARn左移16位间接寻址ADD#k短立即数寻址ADD#1k,shift长立即数寻址,说明:被寻址的数据单元的内容或一个立即数左移后加到累加器,在移位时低位填0。如果符号扩展方式位SXM=1,则高位进行符号扩展;如果SXM=0,则高位填0。如果采用间接寻址并更新ARP的值,此时必须指定一个shift(移位)操作数。如果不希望产生移位,则将0作为操作数,例如ADD*+,0,AR2。,退出,通常,如果相加的结果产生进位时,C=1;不产生进位时,C=0。但是,当左移16位进行相加时,如果相加的结果产生进位,则C=1;不产生进位时,则C不受影响。这样,在把32位数加到累加器时,可使累加器产生正确的符号进位。,【例3-17】,ADD1,1;DP=6:地址0300h037Fh,退出,【例3-18】,ADD*+,0,AR0,【例3-19】,ADD#1h;加短立即数,退出,(3)ADDC带进位的累加器加,语法:ADDCdma直接寻址ADDCind,ARn间接寻址,说明:将数据存储单元的内容和进位位C的值加到累加器中,符号不扩展,进位位受正常方式影响。指令受溢出方式位OVM位影响,执行指令的结果影响C和溢出标志位OV。,【例3-21】,ADDC0;DP=6:地址0300h037Fh,退出,【例3-22】,ADDC*,AR4;OVM=0,退出,(5)ADDTTREG指定移位的累加器加,语法:ADDTdma直接寻址ADDTind,ARn间接寻址,说明:将数据存储单元的内容左移后加到累加器中,左移的位数由TREG的低4位(0-15)确定。数据存储单元中数据的符号扩展受符号扩展方式位SXM控制。指令受SXM和OVM位影响,执行结果影响C和OV。,【例3-25】,ADDT127;DP=4:地址0200h-027Fh;SXM=0,退出,【例3-26】,ADDT*,AR4;SXM=0,退出,(6)ADRK辅助寄存器加短立即数,语法:ADRK#k短立即数寻址,说明:8位正整数按右对齐方式加到当前辅助寄存器中,当前辅助寄存器由ARP指定。对辅助寄存器的所有运算都是无符号数运算。,【例3-27】,ADRK#80h,退出,(7)AND和累加器进行与操作,语法:ANDdma直接寻址ANDind,ARn间接寻址AND#1k,shift长立即数寻址AND#1k,16左移16位的长立即数寻址,说明:如果是直接或间接寻址,数据存储单元中的数和累加器的低16位进行与运算,结果放在累加器的低16位,累加器的高16位清0。如果是立即数寻址,长立即数可以被左移,没有被移位数填满的高位和低位均填0,移位结果与累加器的内容逻辑与。指令不受符号扩展位SXM影响。,【例3-30】AND#00FFh,4,退出,【例3-28】AND16;DP=4:地址0200h027Fh,【例3-29】AND*,退出,(8)APACPREG加到累加器,语法:APAC,说明:PREG寄存器的内容移位后加到累加器,移位的位数由状态寄存器ST1中的PM位确定。指令不受符号扩展位SXM影响,PREG总是进行符号扩展。指令受PM和OVM位影响,结果影响位C和溢出标志位OV。,【例3-31】APAC;PM=01,退出,(9)B无条件跳转,语法:Bpma,ind,ARn间接寻址,说明:程序跳转到pma指定的地址,并根据指令修改当前辅助寄存器(ARP)。pma值既可以是一个标号,也可是一个数字地址。,【例3-32】B191,*+,AR1,将191加载到程序计数器,并且程序从该地址继续执行,当前辅助寄存器加1,并且ARP被设置为指向辅助寄存器1(AR1)。,(10)BACC跳转到累加器指定的地址,语法:BACC,说明:程序跳转到累加器低16位所指定的地址。,【例3-33】BACC;假设ACC低16位为191,将数值191加到程序计数器,并且程序从该地址继续执行。,退出,(11)BANZ辅助寄存器非0跳转,语法:BANZpma,ind,ARn间接寻址,说明:如果当前辅助寄存器的值(AR)不为0,则程序跳转到pma指定的地址(pma值既可以是一个标号,也可以是一个数字地址),否则执行下一条指令。根据指令修改当前辅助寄存器(ARP)和AR内容(缺省时减1)。该指令常用于控制循环体的执行,如果要使循环体执行N次,则可在循环体执行前将用于计数的辅助寄存器初始化为N-1,退出,【例3-34】BANZPGM0;PGM0为标号,因为AR0的内容不为0,则将PGM0的地址加载到程序计数器(PC),程序从该处运行。对当前AR减1,变为4h。,因为AR0的内容为0,所以不跳转,而是将PC加2,即继续执行BANZ后面的指令。当前AR减1,变为FFFFh。,退出,【例3-35】编制一个循环体程序,将数据存储单元0060h0063h的内容加到累加器中。,MAR*,AR0;设置ARP指向AR0LARAR1,#3;加载3到AR1,循环3次LARAR0,#60h;加载60h到AR0PGM191:ADD*+,AR1;将AR0指向的地址中数据加到ACC,;并且AR0值加1,ARP指向AR1BANZPGM191,*-,AR0;AR1不为0时循环,AR1值减1,;ARP指向AR0,退出,(12)BCND条件跳转,语法:BCNDpma,cond1,cond2,说明:如果指定的条件都满足,则程序跳转到pma指定的地址;若条件不满足,则执行下一条指令。,退出,【例3-36】BCNDPGM191,LEQ,C,如果累加器的内容小于或等于0,且进位位为1,则程序跳转到PGM191指定的地址;若条件不满足,则程序从PC+2处继续执行。,(13)BIT位测试,语法:BITdma,bitcode直接寻址BITind,bitcode,ARn间接寻址,说明:将数据存储单元中的指定位复制到状态寄存器ST1的TC位。指定的位号为15bitcode。结果影响状态标志位TC。,退出,【例3-37】BIT0h,15;DP=6,测试300h中数值的最低位,【例3-38】BIT*,0,AR1;测试310h中数值的最高位,然后设置ARP=1,退出,(14)BITTTREG指定位测试,语法:BITTdma直接寻址BITTind,ARn间接寻址,说明:将数据存储单元中数的被指定位复制到状态寄存器ST1的TC位。指定的位号为15TREG(3:0),即15减去TREG寄存器的低4位值。结果影响状态标志位TC。,【例3-39】BITT0h;DP=6,测试数据的第14位,退出,【例3-40】BITT*;测试310h地址处数据的第1位,退出,(17)CALA累加器指定地址的子程序调用,语法:CALA,说明:当前程序计数器(PC)+1后压入堆栈顶(TOS),然后将累加器的低16位加载到PC,程序从该地址执行。,【例3-45】CALA,退出,(18)CALL无条件调用,语法:CALLpma,ind,ARn带长立即数源的间接寻址,说明:当前程序计数器(PC)+2后压入堆栈顶(TOS),然后将pma值加载到PC,程序从该处执行,并按指定的方式修改当前AR和ARP。,【例3-46】CALL191,*+,AR0,退出,(19)CC条件调用,语法:CCpma,cond1,cond2,说明:如果指定的条件都得到满足,则将返回地址(PC+2)压入堆栈顶,把pma值加载到PC,实现程序调用;若条件不满足,则PC加2。,【例3-47】CCPGM191,LEQ,C,若累加器的内容小于或等于0,且进位位C为1,则将0BFh(191)装入PC,程序从该处执行;若这些条件不同时满足,则从CC指令后的指令继续执行。,退出,(20)CLRC控制位清0,语法:CLRC控制位,说明:将指定的控制位清0,控制位包括:C、CNF、INTM、OVM、SXM、TC、XF。,(21)CMPL累加器逻辑取反,语法:CMPL,说明:将累加器逻辑取反,进位位不受影响。,【例3-49】CMPL,退出,(22)CMPR辅助寄存器与AR0比较,语法:CMPRCM;CM=0-3,说明:根据CM值指定的比较条件,比较当前辅助寄存器和AR0值的大小,比较结果存入状态寄存器ST1的TC位。如果比较条件成立TC=1;否则TC=0。比较时辅助寄存器的值以无符号操作数形式参与。,退出,【例3-50】CMPR2;当前AR值大于AR0否?,退出,(27)LACC带移位的累加器装载,语法:LACCdma,shift直接寻址LACCdma,16左移16位直接寻址LACCind,shift,ARn间接寻址LACCind,16,ARn左移16位间接寻址LACC#1k,shift长立即数寻址,说明:指定的数据存储单元的内容或一个16位常数左移并加载到累加器中。左移位时低位填0。指令受SXM影响,若SXM=1,高位进行符号扩展;若SXM=0,高位填0。,【例3-57】LACC6,4;DP=8:地址0400h047Fh;SXM=0,退出,【例3-58】LACC*,4;SXM=0,【例3-59】LACC#0F000h,1;SXM=1,符号扩展,退出,(28)LACL装载累加器低16位,高16位清0,语法:LACLdma直接寻址LACLind,ARn间接寻址LACL#k短立即数寻址,说明:指定数据存储单元的内容或一个短立即数加载到累加器的低16位,累加器的高位填0。加载的数据被看作是一个无符号数。无论SXM为何值,都不进行符号扩展。加载数为8位短立即数时,高8位为0,因此,装载到ACC后,ACC的高24位为0。,【例3-60】LACL1;DP=6:地址0300h037Fh,退出,【例3-61】LACL*,AR4,【例3-62】LACL#10h,退出,(29)LACT由TREG指定左移位数的累加器装载,语法:LACTdma直接寻址LACTind,ARn间接寻址,说明:指定的数据存储单元的内容左移后加载到累加器,左移的次数由TREG的低4位确定,所以可移动015位。左移时,低位填0。指令受SXM影响,若SXM=1,则累加器高位进行符号扩展;若SXM=0,则高位填0。,【例3-63】LACT1;DP=6:地址0300h037Fh;SXM=0,退出,【例3-64】LACT*,AR3;SXM=1,退出,(30)LAR辅助寄存器装载,语法:LARARx,dma直接寻址LARARx,ind,ARn间接寻址LARARx,#k短立即数寻址LARARx,#1k长立即数寻址,说明:指定的数据存储单元的内容或8/16位立即数加载到指定的辅助寄存器(ARx)。装载时,数据看作无符号数,不受SXM的影响。,【例3-65】LARAR0,16;DP=6:地址0300h-037Fh,退出,【例3-66】LARAR4,*,【例3-67】LARAR4,#01h,【例3-68】LARAR6,#3FFFh,退出,(31)LDP数据页指针装载,语法:LDPdma直接寻址LDPind,ARn间接寻址LDP#k短立即数寻址,说明:指定数据单元内容的低9位或一个9位立即数加载到状态寄存器ST0中的DP位。DP也可由LST指令加载。,【例3-69】LDP127;DP=511:地址FF80hFFFFh,退出,【例3-70】LDP#0h,【例3-71】LDP*,AR5,退出,(34)LTTREG寄存器装载,语法:LTdma直接寻址LTind,ARn间接寻址,说明:指定数据存储单元的内容加载到TREG中。在乘法运算时,可用LT指令加载TREG,【例3-76】LT24;DP=8:地址0400h047Fh,退出,【例3-77】LT*,AR3,退出,(41)MAR修改辅助寄存器指针,语法:MARdma直接寻址MARind,ARn间接寻址,说明:在直接寻址方式下,MAR指令的作用等同NOP指令。在间接寻址方式下,指令可修改ARP的值。,【例3-90】MAR*,AR1;加载1到ARP,退出,【例3-91】MAR*+,AR5,退出,(42)MPY乘,语法:MPYdma直接寻址MPYind,ARn间接寻址MPY#k短立即数寻址,说明:在直接或间接寻址时,TREG寄存器与指定的数据存储单元的内容相乘,结果存入PREG中;在使用短立即数寻址时,TREG的内容乘以有符号的13位常数,结果存入PREG中,这里的13位常数是右对齐的,且无论SXM为何值,该常数都将进行符号扩展。,退出,【例3-92】MPY13;DP=8:地址0400h047Fh,【例3-94】MPY#031h,退出,【例3-93】MPY*,AR2,退出,(45)MPYU乘无符号数,语法:MPYUdma直接寻址MPYUind,ARn间接寻址,说明:TREG中的无符号数与指定的数据存储单元中的无符号数相乘,结果存入PREG。指令受PM和OVM影响,指令执行结果影响C和OV。,【例3-103】MPYU16;DP=4:地址0200h027Fh,退出,【例3-104】MPYU*,AR6,退出,(47)NMI非屏蔽中断,语法:NMI,说明:执行该指令时,首先将PC+1压入堆栈,然后将程序计数器强制置为不可屏蔽中断向量地址24h。指令不受INTM的影响,执行后置INTM=1。,(48)NOP空操作,语法:NOP,说明:该指令除了执行PC值加1外不执行任何操作。,退出,(50)OR与累加器进行或操作,语法:ORdma直接寻址ORind,ARn间接寻址OR#1k,shift长立即数寻址OR#1k,16左移16位的长立即数寻址,说明:ACC与指定的数据存储单元中的数或一个长立即数进行或操作,结果存ACC中,长立即数在操作前可进行左移位。对于直接寻址、间接寻址或不移位的长立即数,ACC的高16位内容不变。而对于移位数不为0的立即寻址,左移时低位填0,高位不进行符号扩展。指令不受SXM影响。,退出,【例3-111】OR8;DP=8,【例3-112】OR*,AR0,退出,(52)PAC乘积寄存器内容装载到累加器,语法:PAC,说明:将PREG的内容左移位后装载到累加器中,移位的次数由ST1寄存器的PM位定义。,【例3-116】PAC;PM=0,退出,(53)POP栈顶内容弹出到累加器低16位,语法:POP,说明:将栈顶(TOS)的内容复制到ACC的低16位,累加器的高16位清0,堆栈上弹一级。,退出,【例3-117】POP,退出,(54)POPD栈顶内容弹出到数据存储单元,语法:POPDdam直接寻址POPDind,ARn间接寻址,说明:将栈顶(TOS)内容复制到指定的数据存储单元中,堆栈中的低7个单元依次向上复制一级。,退出,【例3-118】POPD10;DP=8,退出,【例3-119】POPD*+,AR1,退出,(55)PSHD数据存储单元内容压入堆栈,语法:PSHDdma直接寻址PSHDind,ARn间接寻址,说明:将指定的数据存储单元的内容复制到栈顶(TOS),堆栈中的低7个单元值向下移动一级,栈底的值从堆栈中丢失。,退出,【例3-120】PSHD127;DP=3(180h-1FFh),退出,【例3-121】PSHD*,AR1,退出,(56)PUSH累加器的低16位压入堆栈,语法:PUSH,说明:堆栈下压一级,累加器的低16位内容复制到栈顶(TOS),堆栈底部的值丢失。,退出,【例3-122】PUSH,退出,(57)RET子程序返回,语法:RET,说明:栈顶(TOS)的内容弹出到PC中,堆栈值依次向上复制一级。RET指令用于子程序或中断服务程序返回到程序调用处。,退出,【例3-123】RET,退出,(58)RETC条件返回,语法:RETCcond1,cond2,说明:如果指定的条件都满足,那么就执行一个标准的返回(RET)指令,否则执行下一条指令。,【例3-124】RETCGEQ,NOV,如果满足ACC0且OV=0,那么执行返回。,退出,(59)ROL累加器循环左移,语法:ROL,说明:ACC循环左移1位,进位位C的值移到ACC的最低位,ACC的最高位移到C位。指令不受SXM影响,指令执行结果影响C位。,【例3-125】ROL,退出,(61)RPT重复执行下一条指令,语法:RPTdma直接寻址RPTind,ARn间接寻址RPT#k短立即数寻址,说明:改指令可使得其后面的一条指令被重复执行n+1次,n等于直接或间接寻址所指定的内容或8位短立即数加1。RPT循环不能被中断。,退出,例如,下述程序可使ACC中加100次1RPT#99ADD#1,(62)SACH存储累加器移位后的高16位,语法:SACHdma,shift直接寻址SACHind,shift,ARn间接寻址,说明:该指令先将ACC内容复制到输出移位器,在输出移位器中将整个32位数左移07位,再将移位后数值的高16位复制到指定的数据存储单元。指令执行后,累加器本身保持不变。指令不受SXM影响。,【例3-130】SACH10,1;DP=4:地址0200h027Fh;左移1位,退出,【例3-131】SACH*+,0,AR2;无移位,退出,(63)SACL存储累加器移位后的低16位,语法:SACLdma,shift直接寻址SACLind,shift,ARn间接寻址,说明:该指令先将ACC内容复制到输出移位器,在输出移位器中将整个32位数左移07位,再将移位后数值的低16位复制到指定的数据存储单元。移位时低位补0,高位丢失。指令执行后,累加器本身保持不变。指令不受SXM影响。,【例3-132】SACL11,1;DP=4:地址0200h-027Hh;左移1位,退出,【例3-133】SACL*,0,AR7;无移位,退出,(64)SAR存储辅助寄存器,语法:SARARx,dma直接寻址SARARx,ind,ARn间接寻址,说明:将指定的辅助寄存器(ARx)中的内容复制到指定的数据存储单元。对于间接寻址,若需要修改辅助寄存器中的内容时,则先将该辅助寄存器中的内容复制到指定的数据存储单元,然后再修改辅助寄存器。,【例3-134】SARAR0,30;DP=6:地址0300h-037Fh,退出,【例3-135】SARAR0,*+,退出,(65)SBRK辅助寄存器减去短立即数,语法:SBRK#k短立即数寻址,说明:当前辅助寄存器中的内容减去一个8位立即数(右对齐),结果存入当前辅助寄存器。,【例3-136】SBRK#0FFh,退出,(66)SETC控制位置位,语法:SETC控制位,说明:将指定的控制位置1。控制位包括:C、CNF、INTM、OVM、SXM、TC、XF。,(67)SFL累加器左移,语法:SFL,说明:将ACC的内容左移1位,ACC的最高位移到C位,最低位补0。该指令不受SXM影响,指令执行的结果影响C。,【例3-138】SFL,退出,(68)SFR累加器右移,语法:SFR,说明:将ACC右移1位,若SXM=1,指令进行算术右移,最高位(MSB)保持不变并复制到第30位,第0位(LSB)移到C;若SXM=0,指令进行逻辑右移,ACC内容均右移1位,最高位填0,最低位移到C。指令受SXM影响,指令执行的结果影响C。,【例3-139】SFR;SXM=0:无符号扩展,【例3-140】SFR;SXM=1:符号扩展,退出,(69)SPAC累加器减乘积寄存器,语法:SPAC,说明:ACC减去移位后的PREG值,结果存入ACC,移位的次数由PM控制。指令不受SXM影响,PREG总是进行符号扩展。指令受PM和OVM影响,指令执行的结果影响C和OV位。,【例3-141】SPAC;PM=0,退出,(70)SPH存储乘积寄存器的高16位,语法:SPHdma直接寻址SPHind,ARn间接寻址,说明:按PM指定的方式将PREG的内容移位,移位后的高16位保存到指定的数据存储单元。指令执行时,先将PREG内容复制到乘积移位器,然后根据PM进行移位,若是右移6位,则高位符号扩展,低位丢失;若是左移,则高位丢失,低位填0。移位后的高16位保存到数据存储单元中,而ACC和PREG中的内容保持不变。,【例3-142】SPH3;DP=4:地址0200h027Fh;PM=0,退出,【例3-143】SPH*,AR7;PM=2:左移4位,退出,(71)SPL存储乘积寄存器的低16位,语法:SPLdma直接寻址SPLind,ARn间接寻址,说明:按PM指定的方式将PREG的内容移位,移位后的低16位保存到指定的数据存储单元。指令执行时,先将PREG内容复制到乘积移位器,然后根据PM进行移位,若是右移6位,则高位符号扩展,低位丢失;若是左移,则高位丢失,低位填0。移位后的低16位保存到数据存储单元中,而ACC和PREG中的内容保持不变。,【例3-144】SPL5;DP=4:PM=2:左移4位,退出,【例3-145】SPL*,AR3;PM=0,退出,(72)SPLK长立即数存储到数据存储单元,语法:SPLK#1k,dma直接寻址SPLK#1k,ind,ARn间接寻址,说明:将16位长立即数存储到指定的数据存储单元。,【例3-146】SPLK#7FFFh,3;DP=6,【例3-147】SPLK#1111h,*+,AR4,退出,(73)SPM设置PREG输出的移位模式,语法:SPM常数(03),说明:将指令中的常数复制到状态寄存器ST1的乘积模式(PM)位。PM控制PREG输出移位器的移位模式(见表2-9)。当指令访问PREG时,PREG值先通过乘积移位器完成指定模式的移位。,【例3-148】SPM3,该指令选择乘积寄存器移位模式3,使后面的乘积寄存器的值都右移6位。,退出,(76)SST存储状态寄存器,语法:SST#m,dma直接寻址SST#m,ind,ARn间接寻址,说明:将状态寄存器的值存储到指定的数据存储单元,指令中的m=0时为ST0,m=1时为ST1。使用直接寻址时,指令将不管DP为何值,都将状态寄存器值存储到第0页的数据存储单元。采用间接寻址时,存储器地址由所选的辅助寄存器指定,因此状态寄存器的值可以存储到数据寄存器的任何页面。,【例3-154】SST#0,96;直接寻址,自动访问数据页面0,退出,【例3-155】SST#1,AR7,退出,(77)SUB累加器减,语法:SUBdma,shift直接寻址SUBdma,16左移16位直接寻址SUBind,shift,ARn间接寻址SUBind,16,ARn左移16位间接寻址SUB#k短立即数寻址SUB#1k,shift长立即数寻址,说明:在直接寻址、间接寻址和长立即数寻址时,累加器减去左移后的数据单元内容或一个16位长立即数,结果存入ACC中。在移位时,低位填0,若SXM=1,高位进行符号扩展;若SXM=0,高位填0。,在使用短立即数寻址时,ACC减去一个8位正的常数。在这种情况下,不能指定移位值,减法不受SXM的影响。通常,若相减的结果产生借位,则C=0;若不产生借位,C=1。但是,当左移16位进行相减时,若相减的结果产生借位,则C=0;若不产生借位,则C不变。,退出,【例3-156】SUB80;DP=8:地址0400h047Fh,【例3-157】SUB#8h;减短立即数,退出,【例3-158】SUB*,1,AR0;左移1位;SXM=0,【例3-159】SUB#0FFFh,4;左移4位;SXM=0,退出,(78)SUBB带借位的累加器减,语法:SUBBdma直接寻址SUBBind,ARn间接寻址,说明:ACC减去指定的数据存储单元的内容及进位位C的逻辑反,结果存入ACC中,符号不扩展。进位位按正常方式变化,若相减产生借位,则C=0;若不产生借位,C=1。指令受OVM影响,执行的结果影响C和OV。该指令常用于多精度的算术运算。,【例3-160】
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省饲料项目创业计划书
- 乌镇招聘面试题及答案
- 伊利数字化转型的全域探索
- 全球销售分销市场扩展合同
- 法律英语合同条文阅读理解题
- 人文地理:《全球化背景下中国文化发展》课程
- 餐饮股东合作协议(含品牌推广与维护)
- 集装箱车库买卖合同范本及运输服务协议
- 高端车系销售与售后服务一体化协议
- 大数据项目公司股权投资及数据分析合作协议
- 2025年羊胎盘项目可行性研究报告
- 2025年入团考试评委提问的常见问题及答案
- 贸易咨询服务合同协议
- 四川省成都重点中学2022-2023学年高一下学期期末考试英语试题(含答案)
- 施工现场常见的安全隐患排查及试题与答案
- 食管癌病例分析 手术、化疗与放疗方案优化
- 2025年高考历史考纲(完整版)
- (高清版)DB33∕T 1206-2020 建筑电气工程施工质量验收检查用表标准
- 电镀加工合同协议
- 国开2024年《测量学》形考任务1234答案全析
- 安装费合同协议
评论
0/150
提交评论