《DSPTMS320LF240x汇编指令系统实用教案》由会员分享,可在线阅读,更多相关《DSPTMS320LF240x汇编指令系统实用教案(121页珍藏版)》请在金锄头文库上搜索。
1、4.1.1指令集分类(fnli)(1)累加器、算术和逻辑指令(26条)(2)辅助寄存器和数据页面(ymin)指针指令(6条)(3)TREG、PREG和乘法指令(20条)(4)转移指令(12条)(5)控制指令(15条)(6)I/O和存储器操作指令(8条)4.1 汇编(hubin)指令集概述第1页/共120页第一页,共121页。4.1.2指令常用(chnyn)符号定义ACC累加器。AR辅助寄存器。ARXLAR和SAR指令中使用的3位的值,表示要加载(LAR)或要保存(SAR)哪个辅助寄存器的值。BITX在BIT测试指令中出现,代表4位二进制数,表示测试数据存储单元(dnyun)的某一位,若测试D1
2、位,则BITX为1110(1110B=15-1)。CM一个2位的值。CM=00-测试是否当前AR=AR0CM=01-测试是否当前ARAR0CM=11-测试是否当前ARAR0第2页/共120页第二页,共121页。IAAAAAAA左边(zubian)的I表示1位,反映使用直接寻址(I=0)还是间接寻址(I=1)。当使用直接寻址时,7个A是数据存储器地址的低7位;对于间接寻址,7个A是控制辅助寄存器操作的7位。IIIIIIII短立即寻址中使用的8位常数。IIIIIIIIILDP指令在短立即寻址中使用的9位常数。IIIIIIIIIIIIIMPY指令在短立即寻址中使用的13位常数。INTR#表示数值03
3、1的5位值。INTR指令使用该值把程序转移 到32个中断矢量地址之一。PMSPM指令拷贝到状态寄存器ST1中PM位的2位值。SHF3位的左移值。SHFT4位的左移值。第3页/共120页第三页,共121页。TP条件执行指令用来(ynli)表示以下4种条件的2位值。BIO引脚为低-TP=00;TC=1-TP=01;TC=0-TP=10;无条件-TP=11。ZLVCZLVC 两个4位字段,每位表示以下条件:ACC=0-Z;ACC0-L;溢出-V;进位-C+1word双字操作码的第2个字。包含16位常数。根据指令不同该常数可能是长立即数、程序存储器地址、I/O端口或I/O映射的寄存器地址。第4页/共1
4、20页第四页,共121页。4.2.1语法(yf)指令助记符;操作数缺省指令助记符dma,shift;左移015位直接寻址指令助记符dma,16;左移16位直接寻址指令助记符ind,shift,ARn;左移015位间接(jinji)寻址指令助记符ind,16,ARn;左移16位间接(jinji)寻址指令助记符#k;短立即寻址指令助记符#lk,shift;左移015位长立即寻址4.2 指令(zhlng)句法描述第5页/共120页第五页,共121页。说明(shumng)(1)指令助记符是指令中的关键字,表示本条指令的操作类型,不能缺省。(2)指令助记符与操作数之间要用空格分开,各操作数之间要用“,”
5、分开,操作数可缺省。黑体字符表示在该类型的指令中必须写出的字符,其他(qt)字符为变量,指令中用数字和字符代替。各字符的含义如下:第6页/共120页第六页,共121页。dma数据存储器地址的低7位,与数据页面指针(zhzhn)(DP)构成一个完整的16位数据存储器地址。shift左移015位。ARnn为07,ARn指定下次的辅助寄存器。Ind选择*、*+、*-、*0+、*0-、*BR0+、*BR0-7中符号之一。#立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为一个立即数;数值前面不带“#”,表示该数值为数据存储器地址的低7位。k8位短立即数lk16位长立即数,x操作数x是可选项x1,
6、x2操作数x1、x2是可选项第7页/共120页第七页,共121页。操作部分提供了指令完成的操作序列,即描述当指令执行时所进行的处理过程。(r)寄存器或存储单元r的内容xy数值x被赋予寄存器或存储单元yr(n:m)寄存器或存储单元r中的位n到位m(r(n:m))寄存器或存储单元r中的位n到位m的内容nnh指出nn表示一个(y)十六进制数4.2.2操作(cozu)第8页/共120页第八页,共121页。4.2.3举例(jl)ADD*+,0,AR040302h2h2hARPAR4302hACCXC数据存储器指令执行前04hC00303h2hARPAR4302hACC0数据存储器指令执行后第9页/共12
7、0页第九页,共121页。4.3指令集1、取累加器绝对值指令(zhlng)ABS句法:ABS功能:对累加器ACC的内容取绝对值后送回累加器,并将进位位C清0操作:(PC)+1PC;(ACC)ACC;0C例1:ABS第10页/共120页第十页,共121页。2、带移位的加法(jif)指令ADD句法:ADDdma,shiftADDdma,16ADDind,shift,ARnADDind,16,ARnADD#kADD#lk,shift功能:将被寻址的数据存储器单元的内容或立即数左移016位后加到累加器中,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)操作:(PC)+1PC;(ACC)+(
8、数据存储器地址)*2shift)ACC或(ACC)+kACC或(ACC)+lk*2shiftACC第11页/共120页第十一页,共121页。例2:ADD1,1;设DP=6,则数据(shj)存储器地址为0300h037Fh,(ACC)+(数据(shj)存储器0301h)*21ACC例3:ADD*+,0,AR0例4:ADD#1h例5:ADD#1111h,1第12页/共120页第十二页,共121页。3、带进位加法指令ADDC句法:ADDCdmaADDCind,ARn功能:将被寻址的数据存储器单元的内容与累加器的内容及进位位相加,结果送至累加器。操作:(PC)+1PC;(ACC)+(数据存储器地址)+
9、(C)ACC状态(zhungti)位:影响C和OV位,受OVM状态(zhungti)位影响,不受SXM影响。若相加结果产生进位,则C=1,否则C=0。第13页/共120页第十三页,共121页。例6:ADDCDAT300例7:ADDC*-,AR4;(设OVM=0),将当前(dngqin)AR指定的数据存储单元的内容与累加器的内容及进位位相加后送累加器,并将当前(dngqin)AR的内容减1,然后将AR4指定为下次的辅助寄存器。第14页/共120页第十四页,共121页。4、加法指令ADDS句法:ADDSdmaADDSind,ARn功能:将被寻址的数据存储器单元的内容与累加器的内容相加,结果送至累加
10、器。操作:(PC)+1PC;(ACC)+(数据存储器地址(dzh))ACC状态位:影响C和OV位,受OVM状态位影响,不受SXM影响。若相加结果产生进位,则C=1,否则C=0。第15页/共120页第十五页,共121页。例8:ADDS6;设DP=5,则数据(shj)存储器地址为280h2FFh,(ACC)+(数据(shj)存储器286h)ACC例9:ADDS*第16页/共120页第十六页,共121页。5、加法指令ADDT句法( jf):ADDTdmaADDTind,ARn功能:将被寻址的数据存储器单元的内容左移015位后与累加器的内容相加,结果送至累加器,移位时低位填0,高位填0(SXM=0)或
11、符号扩展(SXM=1)。操作:(PC)+1PC;(ACC)+(数据存储器地址)*2(TREG(30)ACC状态位:影响C和OV位,受OVM和SXM状态位影响。若相加结果产生进位,则C=1,否则C=0。第17页/共120页第十七页,共121页。例10:ADDT7Eh;(设DP=4,则数据(shj)存储器地址为0200h027Fh,设SXM=0)(ACC)+(027Eh)*2(TREG(30)ACC例11:ADDT*-,AR4第18页/共120页第十八页,共121页。6、辅助寄存器增量指令ADRK句法:ADRK#k功能:将8位立即(lj)数按右对齐方式与当前辅助寄存器AR的内容相加,结果送至当前辅
12、助寄存器。操作:(PC)+1PC;(当前AR)+8位立即(lj)数当前AR例12:ADRK#80h第19页/共120页第十九页,共121页。7、与指令AND句法:ANDdmaANDind,ARnAND#lk,shiftAND#lk,16功能:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储器单元的内容进行逻辑与操作,结果( jigu)送累加器的低16位,累加器的高16位清0。如果使用长立即数寻址,则16位长立即数左移016位后和32位的累加器相与,结果( jigu)送累加器。操作:(PC)+1PC;(ACC(150)AND(数据存储器地址)ACC(150);0ACC(3116)(AC
13、C(310)ANDlk*2shiftACC第20页/共120页第二十页,共121页。例13:AND16;设DP=4,则数据(shj)存储器地址为0200h027Fh,(ACC(150)AND(0210h)ACC(150)0ACC(3116)例14:AND*例15:AND#00FFh,4第21页/共120页第二十一页,共121页。8、加法指令APAC句法:APAC功能:将累加器内容与移位后的乘积寄存器的内容相加,结果送至累加器。PREG的移位方式由ST1中PM为确定。操作:(PC)+1PC;(ACC)+移位后的(PREG)ACC状态(zhungti)位:影响C和OV位,受OVM和PM状态(zhu
14、ngti)位影响。不受SXM状态(zhungti)位影响。例16:APAC第22页/共120页第二十二页,共121页。9、无条件转移指令B句法( jf):Bpma,ind,ARn功能:程序无条件转移到指令指定的程序存储器地址(pma),并按指令要求修改当前辅助寄存器和ARP的内容.操作:pmaPC(pma可以是符号地址或数值地址);按指令要求修改当前AR和ARP。例17:B16第23页/共120页第二十三页,共121页。10、按累加器内容转移指令BACC句法:BACC功能:程序无条件转移到累加器的低16位指定(zhdng)的地址中执行。操作:ACC(150)PC例18:BACC;(设累加器的值
15、是0203h)0203hPC,程序从0203h处继续执行。第24页/共120页第二十四页,共121页。11、辅助寄存器不等于零转移指令BANZ句法:BANZpma,ind,ARn)功能(gngnng):如果当前辅助寄存器(AR)的内容不为0,则程序转移到pma指定的程序存储器地址处继续执行;如果当前AR的内容为0,则执行下一条指令;修改当前AR的内容。操作:若(当前AR)0,则pmaPC,否则(PC)+2PC;按指令要求的方式修改当前的AR的内容和ARP,若不指定修改当前的AR的方式,则当前AR减半(若将当前AR作为循环计数器,可执行(当前AR)+1次循环).例19:BANZPGM0第25页/
16、共120页第二十五页,共121页。12、条件转移指令(zhlng)BCND句法:BCNDpma,cond1,cond2操作数中的cond1,cond2,为需满足的条件。功能:如果指令(zhlng)中指定的条件都满足,则程序转移到指令(zhlng)给出的程序存储器地址(pma),只要有一个条件不满足就顺序执行下面的指令(zhlng)。操作:如果cond1,cond2,均满足,则pmaPC,否则PC+2PC。注意:有些条件是不能组合在一起使用的。例20:BCNDPGM191,LEQ,C第26页/共120页第二十六页,共121页。13、测试指令BIT句法:BITdma,bitcode;直接寻址BIT
17、ind,bitcode,ARn;间接( jinji)寻址功能:把数据存储单元中被指定位(即测试位)的值送到状态寄存器ST1中的TC位,即如果测试该位为1,则TC就置1。指令中bitcode的值与数据存储单元被指定的测试位的关系是:bitnumber=15-bitcode操作:(PC)+IPC;(数据存储单元bitnumber)TC。状态位:影响TC状态位。例20:BIT*,0,AR1第27页/共120页第二十七页,共121页。14、测试指令BITT(由TREG指定bitcode)句法( jf):BITTdma;直接寻址BITTind,ARn;间接寻址功能:把数据存储单元中被指定位的值送到状态寄
18、存器ST1中的TC位。TREG低4位(D3D0)表示的bitcode值与数据存储单元被指定的测试位(bitnumber)的关系与BIT指令相同。操作:(PC)+IPC:(数据存储单元bitnumber)TC。状态位:影响TC位。例21:BITT00h第28页/共120页第二十八页,共121页。15、数据存储器串传送指令BLDD句法:BLDD源地址,目的地址;通用格式BLDD#lk,dma;源地址为长立即数,直接寻址BLDD#lk,ind,ARn;源地址为长立即数,间接( jinji)寻址BLDDdma,#lk;目的地址为长立即数,直接寻址BLDDind,#lk,ARn;目的地址为长立即数,间接
19、( jinji)寻址功能:将“源地址”指定的数据存储器单元中的内容传送到“目的地址”指定的数据存储器单元中。第29页/共120页第二十九页,共121页。操作(cozu):第30页/共120页第三十页,共121页。注意:复位时,重复计数器的RPTC的值为0,可用RPT指令装入计数值(N)。RPT指令与间接寻址方式的BLDD指令一起使用,可传送数据存储器中的N+1个字。执行BLDD指令时,无论长立即数代表源地址,还是代表目的地址,均保存在PC中,每次重复时PC加1,从而访问一串地址(目的地址或源地址)。另一串数据的地址(源地址或目的地址)通过间接寻址,按指令指定的方式修改当前AR和ARP,从而实现
20、两块数据区的数据传送。如果使用直接寻址,因数据地址是常量,不能改变,所以重复执行BLDD指令的结果是仅对一个单元写数据或对一串地址写同一个数据。源数据串和目的数据串不要求同在片内或同在片外。当与RPT指令一起使用时,一旦启动了RPT流水线,BLDD就变成了单周期(zhuq)指令,此时中断被禁止.第31页/共120页第三十一页,共121页。例22:BLDD#300h,20h;设DP=6,则数据(shj)存储器地址为0300h037Fh ,将0300h的内容传送到320h例23:BLDD*+,#321h,AR3第32页/共120页第三十二页,共121页。16、程序存储器串传送指令BLPD句法:BL
21、PD源地址(dzh),目的地址(dzh);通用格式BLPD#pma,dma;源地址(dzh)为长立即数,直接寻址BLPDdma,ind,ARn;源地址(dzh)为长立即数,间接寻址功能:将“源地址(dzh)”指定的程序存储单元中的内容传送到“目的地址(dzh)”指定的数据存储单元中。操作:如指令15,将第二框中“lkPC改为“pmaPC,其余均相同。第33页/共120页第三十三页,共121页。注意:BLPD指令与BLDD指令有许多相似之处,BLDD指令中的注意事项同样适合于BLPD指令。与BLDD不同的是,BLPD指令的源地址必须使用长立即数,并固定指向程序存储器,而目的地址可由数据存储器的地
22、址或辅助(fzh)寄存器指定。当重复BLPD指令时,源地址保存在PC中,每次重复PC加1。目的地址若由辅助(fzh)寄存器指定,则按指令指定方式修改,从而实现程序区到数据区的数据传送。目的地址若由数据存储器地址(常数)确定,则不能修改,此时重复执行BLPD指令将没有什么意义.第34页/共120页第三十四页,共121页。例24:BLPD#800h,00h;设DP=6,则数据存储器地址为0300h037Fh ,将程序存储器800h的内容(nirng) 传送到300h例25:BLPD#800h,*,AR7第35页/共120页第三十五页,共121页。17、无条件调用(dioyng)指令(由累加器指定)
23、CALA句法:CALA功能:无条件调用(dioyng)由累加器低16位指定的子程序。利用该指令可根据计算结果调用(dioyng)子程序。操作:(PC)+1堆栈栈顶TOS;ACC的低16位PC。例26:CALA第36页/共120页第三十六页,共121页。18、子程序调用指令CALL句法:CALLpam,ind1,ARn;间接寻址功能(gngnng):无条件调用由指令操作数指定的子程序,并按指令要求修改当前辅助寄存器和ARP的内容。操作:(PC)+2堆栈栈顶TOS;pamPC;按指令要求修改(当前AR)和(ARP)。例27:CALL191,*+,AR0第37页/共120页第三十七页,共121页。1
24、9、条件调用指令CC句法:CCpma,cond1,cond2,功能:如果指定的条件都满足,则调用pma指定则子程序。操作:如果cond1,cond2,都满足,则(PC)+2堆栈栈顶TOS,pamPC,否则PC+2。例28:CC0BFh,LEQ,C;若累加器的内容(nirng)小于或等于0,且进位位为1,则调用程序地址0BFh处的子程序,只要有一个条件不满足,则继续执行CC下面的指令。第38页/共120页第三十八页,共121页。20、清0指令CLRC句法:CLRCcontrolbit操作数中controlbit选择以下控制位之一:C状态寄存器STI中的进位位(D9);CNF状态寄存器STl中的R
25、AM配置控制位(D12)INTM状态寄存器ST0中的中断模式位(D9);OVM状态寄存器ST0中的溢出模式位(D11):SXM状态寄存器STl中的符号(fho)扩展模式位(DiO);TC状态寄存器STl中的测试控制标志位(D11);XF状态寄存器STl中的XF引脚状态位(D4):功能:把指定的控制位清0。操作:(PC)+1PC;0controlbit。第39页/共120页第三十九页,共121页。21、累加器取反指令CMPL句法:CMPL功能(gngnng):将累加器中的内容逻辑取反。操作:(PC)+1PC:(ACC)ACC 。例28:CMPL第40页/共120页第四十页,共121页。22、比较
26、指令CMPR句法:CMPRCM功能:将当前辅助寄存器的内容与AR0的内容进行比较:若CM=0,则比较是否(shfu)(当前AR)=(AR0);若CM=I,则比较是否(shfu)(当前AR)(AR0);若CM=3,则比较是否(shfu)(当前AR)(AR0);如果条件为真,则ST1中的TC位置1,如果条件为假,则TC清0.操作:(PC)+1PC,。完成由CM值(0-3)指定的当前AR和AR0的比较,若为真,则1TC,若为假,则0TC。注意:比较时辅助寄存器的值作为无符号整数看待。第41页/共120页第四十一页,共121页。23、数据移动指令DMOV句法:DMOVdma;直接寻址DMOVind,A
27、Rn;间接寻址功能:将指定的数据存储单元的内容复制到地址加1的单元。操作:(PC)+1PC数据;(数据存储器地址)数据存储地址+1。状态位:受CNF状态位影响。注意:DMOV指令用于片内任何配置的数据存储器RAM块,数据的移动可以跨越块的边界。DMOV指令不能用于外部数据存储器,如果指令指定了外部存储器 地址,执行时只读指定的存储器单元,但不进行( jnxng)其他操作。数据移动功能对于实现数据信号处理中的Z-1延时很有用。第42页/共120页第四十二页,共121页。例29:DMOV*,AR1;将当前辅助寄存器指定的数据存储器单元(dnyun)内容复制到地址加1单元(dnyun),然后将下次辅
28、助寄存器指定为AR1第43页/共120页第四十三页,共121页。24、暂停指令IDLE句法:IDLE功能:程序停止执行,DSP芯片进入低功耗模式,直到发生硬件复位、硬件NMI或未被屏蔽的硬件中断(外部的或内部的)。操作:(PC+1)PC;等待硬件中断。状态位:受INTM的影响(yngxing)。注意:如果因NMI或复位使芯片退出低功耗模式,则执行0024h或0000h单元的中断服务程序。不管状态寄存器ST0中的中断模式位INTM为0或1,未被屏蔽的中断均可使芯片退出低功耗模式,但退出后的操作则取决于INTM。INTM=0,程序转移到相应的中断服务程序;INTM=I,执行IDLE后面的指令。第4
29、4页/共120页第四十四页,共121页。25、输入指令IN句法:INdma,PA;直接(zhji)寻址INind,PA,ARn;间接寻址操作数中PA表示16位I/O端口或I/O映射的寄存器地址。功能:从I/O端口读入16位数据,送到指定的数据存储单元中。重复指令(RPT)与IN指令一起使用可连续传送I/O空间的一串字到数据存储器。操作:(PC)+2PC;(PA)数据存储器地址。例30:IN*,5h;从端口地址为5h的外设中读入一个字,并将该字保 存到由当前辅助寄存器指定的数据存储单元中第45页/共120页第四十五页,共121页。26、软中断指令INTR句法:INTRk操作数中k为数值031,表
30、示中断矢量号。功能:程序控制转换到与k对应的中断矢量单元(该单元存放的转移指令可引导相应(xingyng)的中断服务程序)。操作:(PC)+1堆栈:k值对应的中断矢量地址PC。状态位:指令影响INTM状态位,但不受INTM的影响。注意:INTR指令是软中断指令,利用该指令可从程序的任意位置转移到任意一种中断服务程序中。INTM位和中断屏蔽位都不影响INTR指令。当响应INTR中断时,INTM位置1,禁止可屏蔽中断,但不影响IFR标志。第46页/共120页第四十六页,共121页。27、装载累加器指令LACC句法:LACCdma,shift;直接寻址,左移015位LACCdma,16;直接寻址,左
31、移16位LACCind,shin,ARn;间接寻址,左移015位LACCind,16,ARn;间接寻址,左移16位LACC#lk,shift;长立即(lj)数寻址,左移015位功能:将指定的数据存储单元的内容或16位常数左移后送累加器。移位时低位填0,高位由SXM决定,SXM=1,用符号扩展;SXM=0,则填0。操作:(PC)+1PC或(PC)+2PC(长立即(lj)数寻址);(数据存储器地址)X2shiftACC或lkX2shiftACC(长立即(lj)数寻址)。状态位:指令受SXM影响。第47页/共120页第四十七页,共121页。例31:LACC*,4;(设SXM=0)将当前AR指定的数据
32、(shj)存储器的内容左移4位后送累加器第48页/共120页第四十八页,共121页。28、装载累加器低16位指令LACL句法:LACLdma;直接寻址LACLind,ARn;间接寻址LACL#k;短立即数寻址功能:将指定的数据存储单元(cnchdnyun)的内容或用0扩展的8位常数送到累加器的低16位,累加器的高16位填0。操作:(PC)+1PC;直接或间接寻址(数据存储器地址)ACC(150);0ACC(3116);或短立即数寻址kACC(70);0ACC(318)。状态位:不受SXM影响。第49页/共120页第四十九页,共121页。例32:LACL#10h;将10h送到累加器的低8位,累加
33、器的D31D8填0第50页/共120页第五十页,共121页。29、装载累加器指令LACT(移位次数由TREG确定)句法:LACTdma;直接寻址LACTind,ARn;间接寻址功能:将指定的数据存储单元的内容左移后送到累加器。左移次数由TREG的低4位确定(可移动0l5位)。移位时低位填0,高位由SXM决定。操作(cozu):(PC)+1PC;(数据存储器地址)X2(TREG(3:0)ACC。状态位:受SXM影响。例33:LACT*-,AR3第51页/共120页第五十一页,共121页。30、装载辅助寄存器指令LAR句法:LARARx,dma;直接寻址LARARx,ind,ARn;间接寻址LAR
34、ARx,#k;短立即数寻址LARARx,#lk;长立即数寻址操作数中x为数值07,表示要装载的辅助寄存器。功能:将指定的数据存储单元中的内容或8位、16位常数送到指令指定的辅助寄 存器ARx中。不论SXM为何值,所指定的常数均为无符号(fho)整数。操作:(PC)+1PC;直接或间接寻址(数据存储器地址)ARx;或短立即数寻址kARx(ARx的高位填0);或长立即数寻址:lkARx。注意:如果指令使用间接寻址,且指令指定的AR与ARP所指定的AR相同,LAR指令仅对该AR进行装载操作,而不对其进行增或减量修改。第52页/共120页第五十二页,共121页。30、装载辅助寄存器指令LAR句法:LA
35、RARx,dma;直接寻址LARARx,ind,ARn;间接寻址LARARx,#k;短立即数寻址LARARx,#lk;长立即数寻址操作数中x为数值07,表示要装载的辅助寄存器。功能:将指定的数据存储单元中的内容或8位、16位常数送到指令指定的辅助寄存器ARx中。不论(bln)SXM为何值,所指定的常数均为无符号整数。操作:(PC)+1PC;直接或间接寻址(数据存储器地址)ARx;或短立即数寻址kARx(ARx的高位填0);或长立即数寻址:lkARx。注意:如果指令使用间接寻址,且指令指定的AR与ARP所指定的AR相同,LAR指令仅对该AR进行装载操作,而不对其进行增或减量修改。第53页/共12
36、0页第五十三页,共121页。例34:LARAR4,*-例35:LARAR0,16;设DP=6,则数据(shj)存储器地址为0300h037Fh,将310h单元的内容传送到AR0中第54页/共120页第五十四页,共121页。31、装载DP指令LDP句法(jf):LDPdma;直接寻址LDPind,ARn;间接寻址LDP#k;短立即数寻址功能:将指定的数据存储单元中的低9位或9位立即数值送到状态寄存器ST0中的DP(LST指令也可加载DP)。操作:(PC)+1PC;(数据存储器地址)的低9位DP(直接或间接寻址)或kDP(短立即数寻址)。状态位:影响DP。例36:LDP*,AR5第55页/共120
37、页第五十五页,共121页。32、装载PREG高16位指令LPH句法:LPHdma;直接寻址LPHind,ARn;间接寻址功能:将指定的数据存储单元的内容送到PREG的高16位,PREG的低16位不变。在中断和子程序调用时,可用LPH指令恢复PREG的高位字。操作:(PC)+1PC;(数据存储器地址)PREG(3116)。例37:LPH*,AR6;将当前AR指定的数据存储单元的内容送到PREG高16位,AR6为下次(xic)的辅助寄存器。第56页/共120页第五十六页,共121页。33、装载状态寄存器指令LST句法:LST#m,dma;直接寻址LST#m,ind,ARn;间接寻址操作数m=0表示
38、(biosh)要装载ST0,m=1表示(biosh)要装载ST1。功能:将指定的数据存储单元中的内容送状态寄存器ST0或ST1操作:(PC)+1PC:(数据存储器地址)状态寄存器STm。当装载ST0时,ST0的D10位和D9位不受装载影响,保持原值;当装载ST1时,ST1的D8D5位、D3位、D2位保持1不变,数据的D15D13位同时也装载到ST0的ARP中。状态位:影响ARB,ARP,OVOVM,DP,CNF,TC,SXM,C,XF,PM。不影响INTM。注意:在间接寻址方式中,如果在操作数中指定了下次的辅助寄存器,则该指定无效,仍由数据存储单元内容中的高3位装载ARP。第57页/共120页
39、第五十七页,共121页。例38:MAR*,AR0;0ARP,下次辅助寄存器为AR0LST#0,*,AR1;将当前辅助寄存器AR0指定的数据存储单元的内容送到ST0中。原ST0的D10和D9仍为原值。指定AR1为下次辅助寄存器的操作(cozu)忽略,同时原来的ARP值也不复制到ARB中。例39:LST#1,00h第58页/共120页第五十八页,共121页。34、装载TREG指令LT句法:LTdma;直接寻址LTind,ARn;间接寻址功能(gngnng):将指定的数据存储单元的内容送到TREG中。操作:(PC)+1PC;(数据存储器地址)TREG。例40:LT24;(设DP=8,则数据存储器地址
40、为0400h047Fh)将418h单元的内容送TREG。第59页/共120页第五十九页,共121页。35、装载TREG和乘积累加指令LTA句法:LTAdma ;直接寻址LTAind,ARn ;间接寻址功能:将指定的数据存储单元的内容送到TREG;按PM状态位指定的方式 对乘积寄存器(PREG)的内容进行(jnxng)移位,并把移位后的值与累加器相加,结果送累加器。若相加结果有进位,则C=1;若相加结果无进位,则C=0。操作:(PC)+1PC;(数据存储器地址)TREG; (ACC)+移位后的(PREG)ACC。状态位:受PM和OVM影响,影响C和OV。例41:LTA36 ;(设DP=6,则数据
41、存储器地址为0300h037Fh;PM=0,不移位)将324h单元的内容送TREG,并将PREG的内容与累加器相加,结果送累加器第60页/共120页第六十页,共121页。36、装载TREG及数据移动,乘积累加指令LTD句法:LTDdma;直接寻址LTDind,ARn;间接寻址功能:将指定的数据存储单元的内容送到TREG和该地址(dzh)加1的单元中;按PM状态位指定的方式对乘积寄存器(PREG)的内容进行移位,并把移位后的值与累加器相加,结果送累加器。若相加结果有进位,则C=1;若相加结果没有进位,则C=0。操作:(PC)+1PC;(数据存储器地址(dzh)TREG;数据存储器地址(dzh)数
42、据存储器地址(dzh)十1;(ACC)+移位后的(PREG)ACC。状态位:受PM和OVM影响,影响C和OV。第61页/共120页第六十一页,共121页。注意:该指令适用于所有配置为数据存储器的片内RAM,并可以跨越相邻块的边界连续进行数据移动。 如果将LTD指令用于外部数据存储器,其作用与LTA相同,即不执行操作(不作数据移动)。例42:LTD*,AR3:(设PM=0)将当前AR指定的数据存储单元的内容(nirng)送TREG和该地址内容(nirng)相加,结果送累加器,并指定AR3为下次AR第62页/共120页第六十二页,共121页。37、装载TREG和累加器指令LTP句法:LTPdma;
43、间接寻址LTPind,ARn;直接寻址功能:将指定的数据存储单元的内容送到TREG。并将PREG的内容按PM状态位指定的方式移位(ywi)后送到累加器中。操作:(PC)+1PC;(数据存储器地址)TREG;移位(ywi)后的(PREG)ACC。状态位:受PM影响。例43:LTP36;(设DP=6,则数据存储器地址为0300h037Fh。PM=0,乘积不移位(ywi)将324h单元的内容送TREG,并将乘积寄存器(PREG)的内容送ACC第63页/共120页第六十三页,共121页。38、装载TREG和乘积累减指令LTS句法:LTSdma;直接寻址LTSind,ARn;间接寻址功能:将指定(zhd
44、ng)的数据存储单元的内容送TREG;再用累加器的内容减去移位后(PM状态位指定(zhdng)的方式)的PREG的内容,结果送累加器。如果相减的结果产生借位,则进位位C清0,若无进位,则C置1。操作:(PC)+1PC;(数据存储器地址)TREG;(ACC)-移位后的(PREG)ACC。状态位:受PM和OVM影响,影响C和OV。例44:LTS*,AR2;(设PM=0,则乘积不移位)将当前AR指定(zhdng)的数据存储单元的内容送TREG;累加器的内容减去乘积寄存器的内容,结果送累加器,AR2为下次AR第64页/共120页第六十四页,共121页。39、累加-乘指令MAC句法:MACpma,dma
45、;直接寻址MACpma,ind,ARn;间接寻址功能:将前次乘积(PREG的内容)按PM指定的方式移位后结果送累加器。与累加器相加;如果相加产生进位,则C=I:若结果未产生进位,则C=0。将指定的数据存储单元的内容送到TREG。将TREG中数据存储单元的内容乘以指定的程序存储器地址中的内容。每重复(chngf)MAC指令一次,在PC中的程序存储器地址加1。因此可以访问程序存储器中的一串操作数。如果使用间接寻址指定数据存储器地址,则每次重复(chngf)时就可能访问新的数据存储器地址。如果使用直接寻址,指定的数据存储器地址 是常数,重复(chngf)时不对其进行修改。重复(chngf)执行MAC
46、指令可对两组数据(或一组数据与一个常数)进行乘-累加运算。重复(chngf)时,RPT流水线一旦启动,它就变成了单周期指令。状态位:受PM和OVM影响,影口向C和OV。注意:MAC指令所寻址的数据和程序存储器单元可以是任意非保留的片内或片外存储单元。第65页/共120页第六十五页,共121页。例45:MAC0FF0h,02h;(设DP=6,则数据存储器地址(dzh)为0300h037Fh,PM=0,乘积不移位,CNF=1,RAMB0为程序存储器)将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将数据存储器302h单元的内容与程序存储器 FF00h单元内容相乘,结果送PREG例46:MA
47、C0FF00h,*,AR6;(设PM=0,CNF=1)将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将当前AR指定的数据存储单元308h的内容与程序存储器FF00h单元内容相乘,结果送PREG,并指定下次的辅助寄存器为AR5第66页/共120页第六十六页,共121页。40、带数据移动的累加-乘指令MACD句法:MACDpma,dma;直接寻址MACDpma,ind,ARn;间接寻址功能:如果指定的数据存储器是片内RAM,则MACD指令在MAC指令功能的基础上多一条数据移动功能,如果MACD指令寻址存储器映射的寄存器或外部数据存储器,则MACD指令与MAC指令功能完全相同。状态位:受P
48、M和OVM影响,影响C和OV。例47:MACD0FF00h,08h;(设DP=6,则地址为0300h037Fh;PM=0,乘积不移位;CNF=I,RAMB0配置为程序存储器)该指令将累加器的内容(nirng)与乘积寄存器的内容(nirng)相加,结果送累加器,然后将数据存储器308h单元的内容(nirng)与程序存储器FF00h单元的内容(nirng)相乘,结果送PREG,再将308h的内容(nirng)送309h单元中。第67页/共120页第六十七页,共121页。41、修改当前AR和ARP指令MAR句法:MARdma;直接寻址MARind,ARn;间接寻址功能:在直接寻址方式下,MAR指令的
49、作用同NOP指令一样(yyng),进行空操作。在间接寻址方式下,按指令指定的方式修改辅助寄存器的值和ARP的值,并将原来的ARP的值复制到状态寄存器ST1的ARB字段中。操作:(PC)+1PC:按指令指定的方式修改当前AR和ARP(只有在间接寻址方式下才执行此操作)。状态位:直接寻址方式下不影响状态位,间接寻址方式下影响ARP和ARB。第68页/共120页第六十八页,共121页。例48:MAR*+,AR5;将当前(dngqin)辅助寄存器的内容加1,并将5送到ARP,ARP 原来的值送到ARB第69页/共120页第六十九页,共121页。42、乘法指令MPY句法:MPYdma;直接寻址MPYin
50、d,ARn;间接寻址MPY#k;短立即(lj)数寻址(k为有符号的13位常数)功能:将TREG的内容乘以指定的数据存储器单元的内容或短立即(lj)数, 结果放在乘积寄存器(PREG)中。乘以短立即(lj)数时,应将13位有符号数值取右对齐,相乘前用符号扩展(无论SXM为何值)。操作:(PC)+1PC;(TREG)X(数据存储器地址)PREG(直接或间接寻址)或(TREG)XkPREG(短立即(lj)数寻址)。例49:MPY13;(设DP=8,则地址为400h47Fh)将TREG的内容与数据存储器400h单元的内容相乘,结果送PREG第70页/共120页第七十页,共121页。43、累加乘指令MP
51、YA句法:MPYAdma;直接寻址MPYAind,ARn;间接寻址功能:将前次乘积(PREG的内容)按PM指定的方式移位后,与累加器相加,结果(jigu)送累加器:然后将TREG的内容乘以指定的数据存储单元的内容,结果(jigu)送乘积寄存器(PREG)。操作:(PC)+1PC;(ACC)+移位后的(PREG)ACC;(TREG)X(数据存储器地址)PREG。状态位:受PM和OVM影响,影响C和OV。第71页/共120页第七十一页,共121页。例50:MPYA13h;(设DP=6,则数据存储器地址为300h37Fh,PM=0 ,乘积(chngj)不移位)将累加器的内容与乘积(chngj) 寄存
52、器的内容相加,结果送累加器,然后将TREG 的内容与数据存储器300h单元的内容相 乘,结果送PREG例51:MPYA*,AR4第72页/共120页第七十二页,共121页。44、减乘指令MPYS句法:MPYSdma;直接寻址MPYSind,ARn;间接寻址功能:将累加器的内容减去前次乘积(按PM状态位指定的方式移位后的PREG的内容),结果( jigu)送累加器,有借位时,标志位C清0,无借位C为1。然后将暂存寄存器(TREG)的内容乘以指定的数据存储单元的内容,结果( jigu)送PREG。操作:(PC)+1PC:(ACC)-移位后的(PREG)ACC;(TREG)X(数据存储器地址)PRE
53、G。状态位:受PM和OVM影响,影响C和OV。例52:MPYS13;(设DP=6,则地址为300h37Fh:设PM=0,则乘积不移位)将累加器的内容与PREG的内容相减,结果( jigu)送累加器,再将TREG的内容与数据存储器单元30Dh的内容相乘,结果( jigu)送PREG第73页/共120页第七十三页,共121页。45、无符号乘法指令MPYU句法:MPYUdma;直接寻址MPYUind,ARn;间接寻址功能:将暂存寄存器(TREG)中的无符号数与指定的数据存储单元中的无符号数相乘,结果送乘积(chngj)寄存器(PPEG)。操作:(PC)+1PC:(TREG)X(数据存储器地址)PRE
54、G。注意:当其他指令把乘积(chngj)寄存器(PREG)中的值传递到数据存储器或CALU时,需经过乘积(chngj)移位器的输出。当PM=3(右移6位)时,该移位总要将PRE6的值进行符号扩展。因此,如果要求无符号相乘,则不能使用这种移位模式。该指令可用于多精度乘法。如两个32位数相乘产生64位乘积(chngj)。例53:MPYU16;(设DP=4,则地址为0200h027Fh)将TREG中的无符号数乘以数据存储器210h单元的无符号数,结果送PREG第74页/共120页第七十四页,共121页。46、累加器取指令NEG句法:NEG功能(gngnng):将累加器的内容取2的补数,即转换成它的相
55、反数。操作:(PC)+1PC:(ACC)X(-1)ACC状态位:受OVM影响,影响C和OV。注意:当对80000000h作NEG操作时,OV位置1。若OVM=I,累加器的内容被NEG操作转换成7FFFFFFFh若OVM=0,则累加器经过NEG操作后,仍为80000000h。只要累加器的内容不为0,进位位(C)即清0;累加器的内容为0时,进位位C置1。例54:NEG;(OVM为任意值)将累加器的内容取补第75页/共120页第七十五页,共121页。47、非屏蔽中断指令NMI句法:NMI功能:将非屏蔽中断矢量地址(dzh)24h送程序计数器执行非屏蔽中断服务程序。与硬件非屏蔽中断NMI效果相同。操作
56、:(PC)+1STACK ;24hPC;1INTM。状态位:不受INTM影响,影响INTM。第76页/共120页第七十六页,共121页。48、空操作指令NOP句法:NOP功能(gngnng):NOP指令仅影响PC,不进行其他操作,NOP指令可用于建立流水线和延时。操作:(PC)+1PC。第77页/共120页第七十七页,共121页。49、累加器规格化指令NORM句法:NORMind功能:将累加器中的有符号数规格化。把定点数规格化就是把它分成尾数和指数两分。方法如下。将累计器的最高两位D31和D30作逻辑异或,如果两位相同,说明这是两个符号位(符号扩展),则累计器左移去掉(qdio)多余的符号位。
57、按指定的方式修改当前AR以确定指数的大小。对当前AR默认的修改方式为加1。为了将累加器中的32位数规格化,可能需要多次执行NORM指令。NORM指令可与RPT一起使用以实现多次执行NORM指令。NORM指令对用2的补码表示的正数或负数均适用。状态位:影响TC。注意:NORM指令在流水线的第4阶段(执行阶段)完成对辅助寄存器的操作,而其他指令在流水线的第2阶段(译码阶段)完成对辅助寄存器的操作。因此紧跟在NORM指令后的两条指令不能修改NORM指令所用的辅助寄存器的值和辅助寄存器指针(ARP)的值。第78页/共120页第七十八页,共121页。例55:NORM*+例56:31位规格化程序(chng
58、x)MAR*,AR1LARAR1,#0hLOOP:NORM*+BCNDLOOP,NTC例57:15位规格化程序(chngx)MAR*,AR1LARAR1,#0FhRPT#14NORM*-第79页/共120页第七十九页,共121页。50、或指令OR句法:ORdma;直接寻址ORind,ARn;间接寻址OR#lk,shift;长立即寻址,左移015位OR#k,16;长立即寻址,左移16位功能:将累加器的内容和被寻址的数据存储单元(cnchdnyun)的内容(或左移后的长立即数) 作“逻辑或”操作,结果送累加器。操作数不足32位的,高位补0:左移时,低位填0。操作:(PC)+1PC;(ACC(150
59、)OR(数据存储器的地址)ACC(150)(ACC(3116)ACC(3116)(直接或间接寻址)或(ACC)ORlk*2shiftACC(长立即数左移015位)或(ACC)ORlk*216ACC(长立即数左移16位)。状态位:指令不受SXM影响。第80页/共120页第八十页,共121页。例58:OR*,AR0;当前辅助寄存器指定的数据存储单元的内容与累加器的内容进行( jnxng)“逻辑或”结果送累加器,并将AR0指定为下次的辅助寄存器例59:OR#8111h,8第81页/共120页第八十一页,共121页。51、输出指令OUT句法:OUTdma,PA;直接寻址OUTind,PA,ARn;间接
60、寻址操作数中的PA为I/O口地址。功能:将被寻址的存储单元的内容送到指定的I/O端口。此时IS线变低,STRB,R/W和READY的定时关系与外部数据存储器的写操作相同。该指令与重复指令一起(yq)使用可以连续从数据存储器向I/O空间输出数据。操作:(PC)+2PC;(数据存储器的地址)PA。第82页/共120页第八十二页,共121页。例60:OUT0,100h;(设DP=4)将数据存储单元200h中的内容输出到I/O地址(dzh)为100h的外设中例61:OUT*,100h;将当前AR指定的数据存储单元的内容输出到I/O地址(dzh)为100h的外设中第83页/共120页第八十三页,共121
61、页。52、乘积寄存器移位指令PAC句法:PAC功能:按PM状态位指定的方式(fngsh)将乘积寄存器的内容移位,并把移位后的结果送累加器。操作:(PC)+1PC;移位后的PREGACC状态位:受PM影响。第84页/共120页第八十四页,共121页。53、弹栈至累加器指令POP句法:POP功能;将栈顶(TOS)的内容弹出并送到累加器的低16位,堆栈上弹一级。累加器的高16位字为0。操作:(PC)+1PC;(TOS)ACC(150);0ACC(3116);堆栈上弹一级。注意:硬件堆栈是后进先出的8个单元。当弹栈发生时,堆栈中的每个值都被复制到上一个高栈单元,栈顶内容移出,栈底的两个字具有相同的值。
62、如果连续弹出的次数多于7次(POP,PODD,RETC,RET指令均弹栈),那么堆栈中的所有值都将相同。没有检查(jinch)堆栈是否下溢的措施。例62:POP第85页/共120页第八十五页,共121页。54、弹栈至数据存储器指令POPD句法:POPDdma;直接寻址POPDind,ARn;间接寻址功能:将栈顶(TOS)的值弹出并传送(chunsn)到指令指定的数据存储单元。堆栈上弹一级。操作:(PC)+1PC;(TOS)数据存储单元,堆栈上弹一级。例63:POPD10例64:POPD*+,AR1第86页/共120页第八十六页,共121页。55、数据存储器值进栈指令PSHD句法:PSHDdma
63、;直接寻址PSHDind,ARn;间接寻址功能:堆栈(duzhn)中8个单元的值均向下移动一级,最低一级单元的内容丢失,并将指定的数据存储单元的内容传送到栈顶(TOS)。操作:(PC)+1PC;堆栈(duzhn)下压一级:(数据存储器地址)TOS。注意:参照PUSH指令。例65:PSHD127;(设DP=3,则地址为0180h01FFh)将数据存储器1FFh单元的内容压入堆栈(duzhn)第87页/共120页第八十七页,共121页。56、累加器低位进栈指令(zhlng)PUSH句法:PUSH功能:将堆栈的内容下移一级,最低一级单元的内容丢失,并将累加器的低16位字压入栈顶(TOS)。操作:(P
64、C)+1PC:堆栈下压一级;(ACC(150)TOS。注意:硬件堆栈是后进先出的8个单元。如果连续进行8次以上的压栈操作(CALA,CALL,CC,PSHD,PUSH,TRAP,INTR,NMI指令(zhlng)均进行压栈操作),那么最低一级的内容将会丢失。例66:PUSH第88页/共120页第八十八页,共121页。57、无条件返回指令(zhlng)RET句法:RET功能:将栈顶(TOS)的内容复制到程序计数器(PC)中,堆栈上弹一级。子程序和中断服务程序均以RET指令(zhlng)结束,并返回到原来调用子程序或中断的端点处。例67:RET第89页/共120页第八十九页,共121页。58、条件
65、返回指令RETC句法:RETCcond1,cond2,操作数中的cond为需满足的条件,其对应关系见BCND指令。功能(gngnng):如果指定的条件都满足,则执行RETC指令的操作;若不满足,则继续执行RETC下面的指令。操作:如果cond1,cond2,都满足,则TOSPC,堆栈上弹一级;否则(PC)+1PC。例68:RETCGEQ,NOV第90页/共120页第九十页,共121页。59、循环左移指令ROL句法:ROL功能(gngnng):将累加器的内容连同进位位C循环左移一位,进位位移入累加器的MSB,累加器的LSB移入进位位。操作:(PC)+1PC:状态(zhungti)位:影响C,不受
66、SXM影响。 例69: ROLACCMSBLSBC第91页/共120页第九十一页,共121页。60、循环右移指令ROR句法:ROR功能:将累加器的内容连同进位位C循环右移一位,进位位移(wiy)入累加器的MSB,累加器的LSB移入进位位。操作:(PC)+1PC:状态(zhungti)位:影响C,不受SXM影响。 例70: RORACCMSBLSBC第92页/共120页第九十二页,共121页。61、重复执行下条指令(zhlng)RPT句法:RPTdma;直接寻址RPTind,ARn;间接寻址RPT#k;短立即数寻址功能:将被寻址的数据存储单元的内容或8位立即数(假设均用N表示)装载到重复计数器(
67、RPTC)中,RPT后面的那条指令(zhlng)将重复执行N+1次,且重复时是不可中断的。重复指令(zhlng)本身不重复。复位时RPTC清0。操作:(PC)+1PC;(数据存储器地址)RPTC(直接或间接寻址)或kRPTC(短立即数寻址)。例71:RPT127;(设DP=31,则数据存储器地址为0F58h一0FFFh)将0FFFh单元的内容OCh送入RPTC,RPT下面的那条指令(zhlng)将重复执行13次第93页/共120页第九十三页,共121页。62、移位并存储累加器高位字指令SACH句法:SACHdma,shift;直接寻址SACHind,shift,ARn;间接寻址操作数中shif
68、t为左移07位(缺省为0)。功能:将累加器的内容送到输出移位寄存器后左移07位,移位时低位补0,高位丢失(dis)(累加器内容保持原值不变)。然后将移位后的高16位数值送到数据存储单元。操作:(PC)+1PC;(ACC)X2shift)的高16位数据存储单元。状态位:状态位不受SXM影响。例72:SACH0Ah,1;(设DP=4,则数据存储器地址为200h27Fh)累加器的内容左移1位后将高16位送入20Ah单元第94页/共120页第九十四页,共121页。63、移位并存储累加器低位字指令SACL句法:SACLdma,shift2;直接寻址SACLind,shift2,ARn;间接寻址操作数中s
69、hift2为左移07位(缺省为0)。功能:将累加器的内容送到输出移位寄存器后左移07位,移位时低位 补0,高位丢失(累加器内容保持原值不变)。然后将移位后的低16位数值送到数据存储单元(cnchdnyun)。操作:(PC)+1PC;(ACC)X2shift2的低16位数据存储单元(cnchdnyun)。状态位:不受SXM影响例73:SACL0Bh,1;(设DP=4,则数据存储地址为200h27Fh)累加器的内容左移1位后,将低16位送往20Bh单元第95页/共120页第九十五页,共121页。64、保存辅助寄存器的指令SAR句法:SARARx,dma;直接寻址SARARx,ind,ARn;间接寻
70、址操作数中x表示数值07,ARx指定待保存的辅助寄存器。功能:将指定的辅助寄存器ARx的内容(nirng)拷贝到被寻址的数据存储单元,然后再按指令指定的方式修改当前辅助寄存器的内容(nirng)和ARP的内 容(间接寻址时)。操作:(PC)+1PC;(ARx)数据存储器地址:若为间接寻址,按指定方式修改当前AR和ARP的内容(nirng)。例74:SARAR0,30;(设DP=6,则数据存储器的地址为300h37Fh)将AR0的内容(nirng)送到数据存储器31Eh第96页/共120页第九十六页,共121页。65、修改(xigi)当前辅助寄存器指令SBBK句法:SBBK#k;短立即数寻址操作
71、数中k为8位正整数。功能:将当前辅助寄存器的内容减去1个8位正整数k,结果存在当前辅助寄存器中。操作:(PC)+1PC:(当前AR)-k当前AR。例75:SBBK#0FFh第97页/共120页第九十七页,共121页。66、设置控制位指令SETC句法:SETCcontrolbit操作数中controlbit选择以下控制位之一:C状态寄存器ST1中的进位位:CNF状态寄存器ST1中的RAM配置控制位INTM状态寄存器ST0中的中断模式位;OVM状态寄存器ST0中的溢出(ych)模式位:SXM状态寄存器ST1中的符号扩展模式位:TC状态寄存器ST1中的测试控制标志位;XF状态寄存器ST1中的XF引脚
72、状态位。功能:将指定的控制位置1。操作:(PC)+1PC:1control例76:SETCTC第98页/共120页第九十八页,共121页。67、累加器左移指令SFL句法:SFL功能(gngnng):将累加器的32位数值左移1位,累加器的最低位填0,最高位移入进位位C。操作:(PC)+1PC;(ACC(31)C;(ACC(300)ACC(311);0ACC(0)。状态:影响C,不受SXM的影响。第99页/共120页第九十九页,共121页。68、累加器右移指令SFR句法:SFR功能:将累加器的32位数右移1位,最低位移入进位位C。若SXM=0,指令进行逻辑右移,最高位填0。若SXM=1,指令进行算
73、术右移,最高位(符号位)不变。操作:(PC)+1PC:若SXM=0,逻辑右移一位。若SXM=1,算术右移一位。状态位:受SXM影响(yngxing),影响(yngxing)C。例77:SFR(SXM=0,无符号扩展)累加器逻辑右移一位第100页/共120页第一百页,共121页。69、累加器和乘积(chngj)寄存器相减指令SPAC句法:SPAC功能:将累加器的内容减去按PM方式移位后的乘积(chngj)寄存器(PREG)的内容,结果存入累加器。操作:(PC)+1PC;(ACC)-移位后的(PREG)ACC。状态位:受PM和OVM影响,影响C和OV。例78:SPAC;(设PM=0,则不移位)将A
74、CC的内容减去PREG的内容,结果送ACC第101页/共120页第一百零一页,共121页。70、保存PREG高16位宇指令SPH句法:SPHdma;直接寻址SPHind,ARn;间接寻址功能:将乘积寄存器(PREG)的内容按PM状态位指定(zhdng)的方式移位,把移位后的高16位数值存在被寻址的数据存储单元中。PREG和ACC中的内容保持不变。操作:(PC)+1PC;(PREG)移位后的高16位数据存储器地址。状态位:受PM的影响。例79:SPH*,AR7;(设PM=2,则PREG左移4位,高位丢失,低位填0)将左移4位后的PREG的高16位字送当前AR指定(zhdng)的数据存储单元中,A
75、R7为下一次的辅助寄存器。第102页/共120页第一百零二页,共121页。70、保存PREG低16位字指令SPL句法:SPLdma;直接寻址SPLind,ARn;间接寻址功能:将乘积寄存器(PREG)的内容按PM状态位指定的方式移位,把移 位后的低16位数值存在被寻址的数据存储单元中。PREG和ACC中的内容保持不变。操作:(PC)+1PC;(PREG)移位后的低16位数据存储器地址。状态位:受PM的影响。例80:SPL5;(设DP=4,数据存储器地址为200h27Fh,PM=2,则PREG左移4位,高位丢失(dis),低位填0)将左移4位后的PREG的低16位字送205h单元第103页/共1
76、20页第一百零三页,共121页。72、存储长立即数至数据存储器指令SPLK句法:SPLK#lk,dma;直接寻址SPLK#lk,ind,ARn;间接(jinji)寻址功能:将16位的立即常数送到被寻址的数据存储单元中。操作:(PC)+1PC;lk数据存储器地址例:SPLK#7FFFh,3;(设DP=6,则数据存储器地址为300h37Fh)将7FFFh送到303h数据单元中例81:SPLK#1111h,*+,AR4;将1111h送到当前AR指 定的数据存储单元中,当前AR内容加1,AR4为下次AR第104页/共120页第一百零四页,共121页。73、设置乘积(chngj)移位模式指令SPM句法:
77、SPMconstant操作数中的constant为数值03,以确定乘积(chngj)移位模式。功能:将数值constant送到状态寄存器ST1的乘积(chngj)移位模式PM位(ST1的D1和D0位),以控制乘积(chngj)寄存器(PREG)输出时的移位模式。操作:(PC)+1PC;常数(03)乘积(chngj)移位模式PM位。状态位:影响PM。例82:SPM3;将乘积(chngj)移位模式位设置为3(PM=11),此后PREG的输出都将右移6位第105页/共120页第一百零五页,共121页。74、累加平方值指令SQRA句法:SQRAdma;直接(zhji)寻址SQRAind,ARn;间接寻
78、址功能:将累加器的内容与按PM方式移位后的乘积寄存器的内容相加,结果存入累加器中,并将被寻址的数据存储单元的内容求平方,结果存入乘积寄存器(PREG)中。操作:(PC)+1PC;(ACC)+被移位的(PREG)ACC:(数据存储器地址)TREG:(TREG)X(数据存储器地址)PREG状态位:受OVM和PM影响,影响OV和C。例83: SQRA30;(设DP=6,则数据存储器地址为300h37Fh;PM=0则PREG不移位)将ACC的内容与PREG的内容相加后送ACC,再将数据单元31Eh的内容求平方后送PREG第106页/共120页第一百零六页,共121页。75、累减平方值指令(zhlng)
79、SQRS句法:SQRSdma;直接寻址SQRSind,ARn;间接寻址功能:将累加器的值减去按PM方式移位的PREG的值,结果存入累加器中,并将被寻址的数据存储器的内容求平方,结果存入PREG中。操作:(PC)+1PC;(ACC)-被移位的(PREG)ACC;(数据存储器地址)TREG;(TREG)X(数据存储器地址)PREG。状态位:受OVM和PM影响,影响OV和C。例84:SQRS*,AR5;(设PM=0,则PREG不移位)将ACC的内容减去PREG的内容,结果送ACC,并将当前AR指定的数据存储单元的内容求平方,结果送PREG,并指定AR5为下次AR第107页/共120页第一百零七页,共
80、121页。76、保存状态寄存器指令SST句法:SST#m,dma;直接寻址SST#mind,ARn;间接寻址功能:将状态寄存器ST0(m=0)或ST1(m=1)的内容保存到指定的数据存储单元中接寻址时,不论ST0中的数据页面指针(DP)为何值,指定的状态寄存器的内容总是(znsh)被保存在0页,并由dma给出低7位地址。间接寻址时,由当前AR指定数据存储器的地址,此时状态寄存器的值可以保存到数据存储器的任何页面内。操作:(PC)+1PC;(状态寄存器STm)数据存储器地址。例85:SST#0,96;将ST0的内容保存到数据存储器60h单元中第108页/共120页第一百零八页,共121页。77、
81、带移位的减法指令SUB句法:SUBdma,shift;直接寻址,左移015位SUBdma,16;直接寻址,左移16位SUBind,shift,ARn;间接寻址,左移015位SUBind,16,ARn;间接寻址,左移16位SUB#k;短立即数寻址SUB#lk,shift;长立即数寻址,左移015位功能:当使用短立即数寻址时,累加器的内容减去8位正常数(chngsh),减法不受SXM响,并且该指令不能重复执行。当使用直接、间接和长立即数寻址时,被寻址的数据存储单元的内容或16位常数(chngsh)进行左移,移位时低位填0,高位用符号扩展(SXM=1)或填0(SXM=0),然后将累加器的内容减去移位
82、后的值,结果存入累加器。如果减法结果产生借位,则进位位清0(C=0)。如果减法结果没有借位,当移位次数为015位时,进位位置1(C=1);当移位次数为16位时,进位位保持不变。第109页/共120页第一百零九页,共121页。操作:(PC)+1PC;直接或间接寻址,左移015位(ACC)-(数据存储器地址)X2shift)ACC;直接或间接寻址,左移16位 (ACC)-(数据存储器地址)X216)ACC;短立即数寻址 (ACC)-kACC;长立即数寻址,左移015位 (ACC)-lk*2shiftACC。状态位:指令影响(yngxing)C和OV状态位。在直接、间接、长立即数寻址方式下,指令受S
83、XM和OVM的影响(yngxing),在短立即数寻址方式下,指令受OVM的影响(yngxing)。例86:SUB50h第110页/共120页第一百一十页,共121页。78、带借位的减法指令SUBB句法:SUBBdma;直接寻址SUBBind,ARn;间接寻址功能(gngnng):将累加器的值减去被寻址的数据存储单元的内容及进位位的逻辑反值。减法有借位时C=0,没有借位时C=1。该指令可实现多精度减法运算。操作:(PC)+1PC;(ACC)-(数据存储器地址)-(C的逻辑反)ACC。状态位:受OVM影响,不受SXM影响;影响C和OV。例88:SUBB*第111页/共120页第一百一十一页,共12
84、1页。79、正数的减法指令SUBC句法:SUBCdma;直接寻址SUBCind,ARn;间接寻址功能:如果累加器的内容和被寻址的数据存储单元的内容均为正数时,SUB做减法运算,将累加器的内容减去该数据单元的内容。若减法结果大于或等于0,则结果乘2并加1送累加器;若减法结果小于0,则将原累加器的内容乘以2送累加器。重复执行16次SUBC指令可实现16位正数的除法运算,方法如下:将正的16位被除数放在累加器的低16位,累加器的高16位清0;正的16位除数放在被寻址的数据存储单元中,执行SUBC指令16次,最后一次SUBC指令完成后,所得(sud)的商放在累加器的低16位中,余数放在累加器的高16位
85、中。第112页/共120页第一百一十二页,共121页。操作:若(ACC)0且(数据存储地址)0则(PC)+1PC;(ACC)-(数据存储器地址)X215ALU输出: 若ALU输出0,则(ALU输出)X2+1ACC,否则(ACC)X2ACC。状态位:影响C和OV。注意:若累加器和或数据单元的内容为负数,则不能用SUBC指令实现除法。SUBC指令影响OV但不受OVM的影响,执行该指令时累加器不会因正溢或负溢而饱和。进位位C按正常方式变化,若相减结果产生借位( jiwi),则C=0,若没有借位( jiwi)则C=I。例89:SUBC2;(设DP=6,则数据存储器地址为300h37Fh)累加器的内容减
86、去左移15次后的302h单元的内容,结果小于0,则累加器的内容乘以2第113页/共120页第一百一十三页,共121页。80、减法指令SUBS句法:SUBSdma;直接寻址SUBSind,ARn;间接寻址功能:累加器的内容减去被寻址的数据存储单元的内容,无论SXM为何值,数据存储单元的内容都作为无符号数处理,所以不进行符号扩展。累加器的内容仍为有符号数。当SXM=0,移位次数为0时,SUBS指令与SUB指令的结果相同(xintn)。若相减结果产生借位,则C=0,若没有借位则C=1。操作:(PC)+1PC:(ACC)-(数据存储器地址)ACC。状态位:影响OV和C,受OVM影响,不受SXM影响。例
87、90: SUBS2:(设DP=16,则数据存储器地址为800h87Fh)将ACC的内容减去数据存储器802h单元的内容,结果送ACC第114页/共120页第一百一十四页,共121页。81、带移位的减法指令SUBT(TREG决定移位次数)句法:SUBTdma;直接寻址SUBTind,ARn;间接( jinji)寻址功能:累加器减去左移后的数据存储单元的内容,结果送累加器。左移位数由暂时由暂时寄存器(TREG)的低4位指定,即可左移015位。移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。若减法结果产生借位,则C=0,否则C=1。操作:(PC)+1PC:(ACC)-(数据存储器地址
88、)X2TREG(30)ACC。若SXM=0,则(数据存储器地址)不进行符号扩展。若SXM=I,则(数据存储器地址)进行符号扩展。状态位:受SXM和OVM影响,影响OV和C。例91:SUBT07Fh;(设DP=5,则数据存储器地址为280h一2FFh)将累加器的内容减去左移8次后的2FFh单元的内容,结果送累加器第115页/共120页第一百一十五页,共121页。82、读程序存储器指令(zhlng)TBLR句法:TBLRdma;直接寻址TBLRind,ARn;间接寻址功能:把程序存储单元的内容(一个字)传送到被寻址的数据存储单元 中,程序存储单元的地址由累加器的低16位字指定。当用RPT指令(zh
89、lng)重复时,TBLR指令(zhlng)成为单周期指令(zhlng),可传送一组数据。操作:如图512所示。例92: TBLR*,AR7;将累加器指定的程序存储单元24h的内容送到当前AR指定的数据存储单元300h中,并指定下次AR为AR7第116页/共120页第一百一十六页,共121页。83、写程序存储器指令TBLW句法:TBLWdma;直接寻址TBLWind,ARn;间接寻址功能:将指令指定的数据(shj)存储单元的内容(1个字)传送到程序存储器中,程序存储器地址由累加器的低16位确定。操作:该指令与TBLR指令操作区别仅在于数据(shj)的传送方向不同。具体操作参见TBLR指令操作流程
90、,其中“(pma)数据(shj)存储器”改为“(数据(shj)存储器)pma”即可。例93: TBLW5;(设DP=32,则数据(shj)存储器地址为1000h一107Fh)将数据(shj)存储单元1005h的一个字送到累加器指定的程序存储单元257h中第117页/共120页第一百一十七页,共121页。85、“逻辑异或”指令XOR句法:XORdma ;直接寻址XORind,ARn;间接寻址XOR#lk,shift;长立即数寻址左移015位XOR#lk,16;长立即数寻址左移16位功能:直接或间接寻址时,将累加器的低16位和被寻址的数据存储单元的内容作“逻辑异或”操作,结果存入(cnr)累加器的
91、低16位,累加器的高16位不变。立即寻址时,长立即数左移,高位和低位均填0,然后和累加器中的32位数作“逻辑异或”操作。操作:(PC)+1PC:直接或间接寻址(ACC(150)XOR(数据存储器地址)ACC(150)(ACC(3116)ACC(3116)或长立即数寻址左移015位(ACC(310)XOR(lkX2shift)ACC(310)或长立即数寻址左移16位(ACC(310)XOR(lkX216)ACC(310) 。第118页/共120页第一百一十八页,共121页。86、装载累加器指令ZALR句法:ZALRdma;直接寻址ZALRind,ARn;间接寻址功能:将数据存储单元的内容送到累加
92、器的高16位,累加器的低15位(D14-D0)清0,D15位置1。操作(cozu):(PC)+1PC;(数据存储器地址)ACC(3116);8000hACC(150)。例94: ZALR*-,AR4;将当前AR指定的数据存储单元FF00h的内容送累加器的高16位,8000h送累加器的低16位,当前AR减1,下次的AR为AR4第119页/共120页第一百一十九页,共121页。感谢您的欣赏(xnshng)!第120页/共120页第一百二十页,共121页。内容(nirng)总结4.1.1 指令集分类。数值前面带“#”,表示该数值为一。数值前面不带“#”,表示该数值为数据存储器地址的。0300h037Fh,将0300h的内容传送到320h。PM=0 ,乘积不移位)将累加器的内容与乘积。把定点数规格化就是把它分成尾数(wish)和指数两分。重复指令本身不重复。感谢您的欣赏第一百二十一页,共121页。