《DSPTMS320LF240x汇编指令系统课件》由会员分享,可在线阅读,更多相关《DSPTMS320LF240x汇编指令系统课件(120页珍藏版)》请在金锄头文库上搜索。
1、第第5章章 TMS320LF240x汇编指令系统汇编指令系统4.1.1 指令集分类指令集分类(1)累加器、算术和逻辑指令(累加器、算术和逻辑指令(26条)条)(2)辅助寄存器和数据页面指针指令(辅助寄存器和数据页面指针指令(6条)条)(3)TREG、PREG和乘法指令(和乘法指令(20条)条)(4)转移指令(转移指令(12条)条)(5)控制指令(控制指令(15条)条)(6)I/O和存储器操作指令(和存储器操作指令(8条)条)4.1 汇编指令集概述汇编指令集概述4.1.2 指令常用符号定义指令常用符号定义nACC 累加器。累加器。nAR 辅助寄存器。辅助寄存器。nARX LAR和和SAR指令中使
2、用的指令中使用的3位的值,表示要加载(位的值,表示要加载( LAR) 或要保存(或要保存( SAR )哪个辅助寄存器的值。)哪个辅助寄存器的值。nBITX 在在BIT测试指令中出现,代表测试指令中出现,代表4位二进制数,表示测试数据存储位二进制数,表示测试数据存储 单元的某一位,若测试单元的某一位,若测试D1位,则位,则BITX为为1110(1110B=15- 1)。)。nCM 一个一个2位的值。位的值。 CM=00-测试是否当前测试是否当前AR=AR0 CM=01-测试是否当前测试是否当前ARAR0 CM=11-测试是否当前测试是否当前ARAR0nIAAA AAAA 左边的左边的I表示表示1
3、位,反映使用直接寻址(位,反映使用直接寻址(I=0)还是间接)还是间接 寻址(寻址(I=1)。当使用直接寻址时,)。当使用直接寻址时,7个个A 是数据存储器是数据存储器 地址的低地址的低7位;对于间接寻址,位;对于间接寻址, 7个个A 是控制辅助寄存是控制辅助寄存 器操作的器操作的7位。位。nIIII IIII 短立即寻址中使用的短立即寻址中使用的8位常数。位常数。nI IIII IIII LDP指令在短立即寻址中使用的指令在短立即寻址中使用的9位常数。位常数。nI IIII IIII IIII MPY指令在短立即寻址中使用的指令在短立即寻址中使用的13位常数。位常数。nINTR# 表示数值表
4、示数值031的的5位值。位值。INTR指令使用该值把程序转移指令使用该值把程序转移 到到32个中断矢量地址之一。个中断矢量地址之一。nPM SPM指令拷贝到状态寄存器指令拷贝到状态寄存器ST1中中PM位的位的2位值。位值。n SHF 3位的左移值。位的左移值。n SHFT 4位的左移值。位的左移值。nTP 条件执行指令用来表示以下条件执行指令用来表示以下4种条件的种条件的2位值。位值。 BIO引脚为低引脚为低-TP=00;TC=1-TP=01; TC=0-TP=10;无条件;无条件-TP=11。n ZLVC ZLVC 两个两个4位字段,每位表示以下条件:位字段,每位表示以下条件: ACC=0-
5、Z;ACC0-L;溢出;溢出-V;进位;进位-Cn +1word 双字操作码的第双字操作码的第2个字。包含个字。包含16位常数。根据指令不同该位常数。根据指令不同该 常数可能是长立即数、程序存储器地址、常数可能是长立即数、程序存储器地址、I/O端口或端口或I/O映映 射的寄存器地址。射的寄存器地址。4.2.1语法语法n指令助记符 ;操作数缺省n指令助记符 dma ,shift ;左移015位直接寻址n指令助记符 dma,16 ;左移16位直接寻址n指令助记符 ind,shift,ARn ;左移015位间接寻址n指令助记符 ind,16,ARn ;左移16位间接寻址n指令助记符 #k ;短立即寻
6、址n指令助记符 #lk,shift ;左移015位长立即寻址4.2 指令句法描述指令句法描述说明说明(1)指令助记符是指令中的关键字,表示本条指令的操作类型,不能缺省。指令助记符是指令中的关键字,表示本条指令的操作类型,不能缺省。(2)指令助记符与操作数之间要用空格分开,各操作数之间要用指令助记符与操作数之间要用空格分开,各操作数之间要用“,”分分开,操作数可缺省。黑体字符表示在该类型的指令中必须写出的字符,开,操作数可缺省。黑体字符表示在该类型的指令中必须写出的字符,其他字符为变量,指令中用数字和字符代替。各字符的含义如下:其他字符为变量,指令中用数字和字符代替。各字符的含义如下:ndma
7、数据存储器地址的低数据存储器地址的低7位,与数据页面指针(位,与数据页面指针(DP)构成一个完)构成一个完 整的整的16位数据存储器地址。位数据存储器地址。nshift 左移左移015位。位。nARn n为为07, ARn指定下次的辅助寄存器。指定下次的辅助寄存器。nInd 选择选择*、*+、*-、*0+、*0-、*BR0+、*BR0- 7中符号之一。中符号之一。 n# 立即寻址方式中常用的前缀。数值前面带立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为,表示该数值为一一 个立即数;数值前面不带个立即数;数值前面不带“#”,表示该数值为数据存储器地址,表示该数值为数据存储器地址的的 低
8、低7位。位。nk 8位短立即数位短立即数nlk 16位长立即数位长立即数n,x 操作数操作数x 是可选项是可选项nx1,x2 操作数操作数x1 、x2是可选项是可选项操作部分提供了指令完成的操作序列,即描述当指令执行时所进行操作部分提供了指令完成的操作序列,即描述当指令执行时所进行的处理过程。的处理过程。(r) 寄存器或存储单元寄存器或存储单元r的内容的内容xy 数数值x被被赋予寄存器或予寄存器或存储单元存储单元yr(n:m) 寄存器或存储单元寄存器或存储单元r中的位中的位n到位到位m(r(n:m))寄存器或存储单元寄存器或存储单元r中的位中的位n到位到位m的内容的内容 nnh 指出指出nn表
9、示一个十六表示一个十六进制数制数4.2.2 操作操作4.2.3 举例举例ADD *+,0,AR040302h2h2hARPAR4302hACCXC数据存储器指令执行前04hC00303h2hARPAR4302hACC0数据存储器指令执行后4.3 指令集指令集1、取累加器绝对值指令、取累加器绝对值指令 ABS句法:句法:ABS功能:对累加器功能:对累加器ACC的内容取绝对值后送回累加器,并将进位位的内容取绝对值后送回累加器,并将进位位C清清0操作操作: (PC)+1PC; (ACC) ACC;0 C例例1:ABS2、带移位的加法指令、带移位的加法指令ADD句法:句法: ADD dma ,shif
10、t ADD dma,16 ADD ind ,shift,ARn ADD ind,16, ARn ADD #k ADD #lk,shift功能:功能: 将被寻址的数据存储器单元的内容或立即数左移将被寻址的数据存储器单元的内容或立即数左移016位后加到累加器位后加到累加器 中,移位时低位填中,移位时低位填0,高位填,高位填0(SXM=0)或符号扩展()或符号扩展(SXM=1)操作:操作: (PC)+1PC; (ACC) +(数据存储器地址)(数据存储器地址)* 2shift) ACC或或 (ACC) + k ACC 或或(ACC) + lk * 2shift ACC例例2:ADD 1,1 ;设;设
11、DP=6,则数据存储器地址为,则数据存储器地址为0300h037Fh, (ACC)+(数据存储器(数据存储器0301h)*21 ACC例例3:ADD *+,0,AR0例例4:ADD #1h例例5:ADD #1111h,13、带进位加法指令、带进位加法指令ADDC句法:句法: ADDC dmaADDC ind,ARn功能:将被寻址的数据存储器单元的内容与累加器的内容及进位位相功能:将被寻址的数据存储器单元的内容与累加器的内容及进位位相 加,结加,结果送至累加器。果送至累加器。操作操作: (PC)+1PC; (ACC) +(数据存储器地址)(数据存储器地址)+(C) ACC状态位:影响状态位:影响
12、C和和OV位,受位,受OVM状态位影响,不受状态位影响,不受SXM影响。若相加结果影响。若相加结果产生进位,则产生进位,则C=1,否则,否则C=0。例例6:ADDC DAT300例例7:ADDC *-,AR4 ;(设;(设OVM=0),将当前),将当前AR指定的数据存储指定的数据存储 单元的内容与累加器的内容及进位位相加单元的内容与累加器的内容及进位位相加 后送累加器,并将当前后送累加器,并将当前AR的内容减的内容减1,然,然 后将后将AR4指定为下次的辅助寄存器。指定为下次的辅助寄存器。4、加法指令、加法指令ADDS句法:句法: ADDS dma ADDS ind,ARn功能:将被寻址的数据
13、存储器单元的内容与累加器的内容相加,结果送至功能:将被寻址的数据存储器单元的内容与累加器的内容相加,结果送至累加器。累加器。操作:操作:(PC)+1PC; (ACC) +(数据存储器地址)(数据存储器地址) ACC状态位:影响状态位:影响C和和OV位,受位,受OVM状态位影响,不受状态位影响,不受SXM影响。若相加结果影响。若相加结果产生进位,则产生进位,则C=1,否则,否则C=0。例例8:ADDS 6 ;设;设DP=5,则数据存储器地址为,则数据存储器地址为280h2FFh, (ACC)+(数据存储器(数据存储器286h) ACC例例9:ADDS *5、加法指令、加法指令ADDT句法:句法:
14、 ADDT dma ADDT ind,ARn功能:将被寻址的数据存储器单元的内容左移功能:将被寻址的数据存储器单元的内容左移015位后与累加器的内容相位后与累加器的内容相 加,结果送至累加器,移位时低位填加,结果送至累加器,移位时低位填0,高位填,高位填0(SXM=0)或符号)或符号 扩展(扩展(SXM=1)。)。操作:操作: (PC)+1PC; (ACC) +(数据存储器地址数据存储器地址)* 2(TREG(30) ACC状态位:影响状态位:影响C和和OV位,受位,受OVM 和和SXM状态位影响。若相加结果产生进位,状态位影响。若相加结果产生进位,则则C=1,否则,否则C=0。例例10:AD
15、DT 7Eh ;(设;(设DP=4,则数据存储器地址为,则数据存储器地址为0200h027Fh, 设设SXM=0)()(ACC)+(027Eh)*2(TREG(30) ACC例例11:ADDT *-,AR46、辅助寄存器增量指令、辅助寄存器增量指令ADRK句法:句法:ADRK #k功能:将功能:将8位立即数按右对齐方式与当前辅助寄存器位立即数按右对齐方式与当前辅助寄存器AR的内容相加,结的内容相加,结 果送至当前辅助寄存器。果送至当前辅助寄存器。操作:操作: (PC)+1PC; (当前(当前AR )+ 8位立即数位立即数当前当前AR 例例12:ADRK #80h7、与指令、与指令AND句法:句
16、法: AND dma AND ind ,ARn AND #lk ,shift AND #lk ,16功能:如果使用直接或间接寻址,累加器的低功能:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储器单位和被寻址的数据存储器单元的内容进行逻辑与操作,结果送累加器的低元的内容进行逻辑与操作,结果送累加器的低16位,累加器的高位,累加器的高16位清位清0。如果使用长立即数寻址,则如果使用长立即数寻址,则16位长立即数左移位长立即数左移016位后和位后和32位的累加器位的累加器相与,结果送累加器。相与,结果送累加器。操作:操作:(PC)+1PC; (ACC(150) ) AND (数据存储器地
17、址)(数据存储器地址) ACC(150);); 0 ACC(3116) (ACC(310) ) AND lk * 2 shift ACC例例13:AND 16 ; 设设DP=4,则数据存储器地址为,则数据存储器地址为0200h027Fh, (ACC(150)AND(0210h) ACC (150) 0 ACC (3116)例例14:AND *例例15:AND #00FFh,48、加法指令、加法指令APAC句法:句法:APAC功能:将累加器内容与移位后的乘积寄存器的内容相加,结果送至累加功能:将累加器内容与移位后的乘积寄存器的内容相加,结果送至累加 器。器。PREG的移位方式由的移位方式由ST1
18、中中PM为确定。为确定。操作:操作: (PC)+1PC;(ACC) +移位后的(移位后的(PREG) ACC状态位:影响状态位:影响C和和OV位,受位,受OVM 和和PM状态位影响。不受状态位影响。不受SXM 状态位影响。状态位影响。例例16:APAC9 、无条件转移指令、无条件转移指令B句法:句法: B pma ,ind,ARn功能:功能: 程序无条件转移到指令指定的程序存储器地址程序无条件转移到指令指定的程序存储器地址(pma),并按指,并按指 令要求修改当前辅助寄存器和令要求修改当前辅助寄存器和ARP的内容的内容.操作:操作: pmaPC (pma可以是符号地址或数值地址可以是符号地址或
19、数值地址); 按指令要求修改当前按指令要求修改当前AR和和ARP。例例17: B 1610、按累加器内容转移指令、按累加器内容转移指令BACC句法:句法: BACC功能:功能: 程序无条件转移到累加器的低程序无条件转移到累加器的低16位指定的地址中执行。位指定的地址中执行。操作:操作: ACC(150) PC例例18: BACC ;(设累加器的值是设累加器的值是0203h)0203hPC, 程序从程序从0203h处继续处继续 执行。执行。11、辅助寄存器不等于零转移指令、辅助寄存器不等于零转移指令BANZ句法:句法: BANZ pma,ind,ARn)功能:功能: 如果当前辅助寄存器如果当前辅
20、助寄存器(AR)的内容不为的内容不为0,则程序转移到,则程序转移到pma指定的指定的 程序存储器地址处继续执行;如果当前程序存储器地址处继续执行;如果当前AR的内容为的内容为0,则执行下一,则执行下一 条指令;修改当前条指令;修改当前AR的内容。的内容。操作:操作: 若若(当前当前AR)0,则,则pmaPC,否则,否则(PC)+2PC; 按指令要求的方式修改当前的按指令要求的方式修改当前的AR的内容和的内容和ARP,若不指定修改当若不指定修改当 前的前的AR的方式的方式,则当前则当前AR减半减半(若将当前若将当前AR作为循环计数器,可执作为循环计数器,可执 行行(当前当前AR)+1次循环次循环
21、).例例19:BANZ PGM012、条件转移指令、条件转移指令BCND句法:句法: BCND pma,cond1,cond2 操作数中的操作数中的cond1,cond2,为需满足的条件。为需满足的条件。功能:功能: 如果指令中指定的条件都满足,则程序转移到指令给出的程序存如果指令中指定的条件都满足,则程序转移到指令给出的程序存 储器地址储器地址(pma),只要有一个条件不满足就顺序执行下面的指令。,只要有一个条件不满足就顺序执行下面的指令。操作:操作: 如果如果cond1,cond2,均满足,则均满足,则pmaPC,否则,否则PC+2PC。注意:注意: 有些条件是不能组合在一起使用的。有些条
22、件是不能组合在一起使用的。例例20: BCND PGM191,LEQ,C13、测试指令、测试指令BIT句法:句法: BIT dma, bit code ;直接寻址;直接寻址 BIT ind, bit code,ARn ;间接寻址;间接寻址功能:功能: 把数据存储单元中被指定位把数据存储单元中被指定位(即测试位即测试位)的值送到状态寄存器的值送到状态寄存器 ST1中的中的TC位,即如果测试该位为位,即如果测试该位为1,则,则TC就置就置1。 指令中指令中bitcode的值与数据存储单元被指定的测试位的关系的值与数据存储单元被指定的测试位的关系 是:是:bit number=15- bit cod
23、e操作:操作: (PC)+IPC; (数据存储单元数据存储单元bit number) TC。状态位:影响状态位:影响TC状态位。状态位。例例20: BIT *,0,AR114、测试指令、测试指令BITT(由由TREG指定指定bit code)句法:句法: BITT dma ;直接寻址;直接寻址 BITT ind,ARn ;间接寻址;间接寻址功能:功能: 把数据存储单元中被指定位的值送到状态寄存器把数据存储单元中被指定位的值送到状态寄存器ST1中的中的TC位。位。 TREG低低4位位(D3D0)表示的表示的bit code值与数据存储单元被指定的测值与数据存储单元被指定的测 试位(试位(bit
24、number)的关系与的关系与BIT指令相同。指令相同。操作:操作: (PC)+I PC: (数据存储单元数据存储单元bit number) TC。状态位:状态位: 影响影响TC位。位。例例21: BITT 00h15、数据存储器串传送指令、数据存储器串传送指令BLDD句法:句法: BLDD 源地址,目的地址源地址,目的地址 ; 通用格式通用格式 BLDD #lk, dma ;源地址为长立即数,直接寻址源地址为长立即数,直接寻址 BLDD #lk,ind,ARn ;源地址为长立即数,间接寻址源地址为长立即数,间接寻址 BLDD dma,#lk ;目的地址为长立即数,直接寻址目的地址为长立即数,
25、直接寻址 BLDD ind,#lk, ARn ;目的地址为长立即数,间接寻址目的地址为长立即数,间接寻址功能:功能: 将将“源地址源地址”指定的数据存储器单元中的内容传送到指定的数据存储器单元中的内容传送到“目目 的地址的地址” 指定指定 的数据存储器单元中。的数据存储器单元中。操作:操作:注意注意: 复位时,重复计数器的复位时,重复计数器的RPTC的值为的值为0,可用,可用RPT指令装入计数值指令装入计数值(N)。RPT指令与间接寻址方式的指令与间接寻址方式的BLDD指令一起使用,可传送数据存储器中的指令一起使用,可传送数据存储器中的 N+1个字。个字。执行执行BLDD指令时,无论长立即数代
26、表源地址,还是代表目的地址,均保指令时,无论长立即数代表源地址,还是代表目的地址,均保存在存在PC中,每次重复时中,每次重复时PC加加1,从而访问一串地址,从而访问一串地址(目的地址或源地址目的地址或源地址)。另一串数据的地址另一串数据的地址(源地址或目的地址源地址或目的地址)通过间接寻址,按指令指定的方式通过间接寻址,按指令指定的方式修改当前修改当前AR和和ARP,从而实现两块数据区的数据传送。,从而实现两块数据区的数据传送。如果使用直接寻址,因数据地址是常量,不能改变,所以重复执行如果使用直接寻址,因数据地址是常量,不能改变,所以重复执行BLDD 指令的结果是仅对一个单元写数据或对一串地址
27、写同一个数据。指令的结果是仅对一个单元写数据或对一串地址写同一个数据。源数据串和目的数据串不要求同在片内或同在片外。源数据串和目的数据串不要求同在片内或同在片外。当与当与RPT指令一起使用时,一旦启动了指令一起使用时,一旦启动了RPT流水线,流水线,BLDD就变成了单周就变成了单周期指令,此时中断被禁止期指令,此时中断被禁止.例例22:BLDD #300h,20h ;设;设DP=6,则数据存储器地址为,则数据存储器地址为 0300h037Fh,将,将0300h的内容传送到的内容传送到320h例例23:BLDD *+,#321h, AR316、程序存储器串传送指令、程序存储器串传送指令BLPD句
28、法:句法: BLPD 源地址,目的地址源地址,目的地址 ;通用格式通用格式 BLPD #pma,dma ;源地址为长立即数,直接寻址源地址为长立即数,直接寻址 BLPD dma,ind,ARn ; 源地址为长立即数,间接寻址源地址为长立即数,间接寻址功能:将功能:将“源地址源地址”指定的程序存储单元中的内容传送到指定的程序存储单元中的内容传送到“目的地址目的地址”指定指定的数的数 据存储单元中。据存储单元中。操作:如指令操作:如指令15,将第二框中,将第二框中“lkPC改为改为“pmaPC,其余均相同。,其余均相同。注意:注意: BLPD指令与指令与BLDD指令有许多相似之处,指令有许多相似之
29、处,BLDD指令中的注意事指令中的注意事 项项同样适合于同样适合于BLPD指令。指令。 与与BLDD不同的是,不同的是,BLPD指令的源地址必须使用长立即数,并固指令的源地址必须使用长立即数,并固定指向程序存储器,而目的地址可由数据存定指向程序存储器,而目的地址可由数据存储器的地址或辅助寄存器储器的地址或辅助寄存器指定。当重复指定。当重复BLPD指令时,指令时, 源地址保存在源地址保存在PC中,每次重复中,每次重复PC加加1。目。目的地址若由辅助寄存器指定,则按指令指定方式修改,从而实现程序区的地址若由辅助寄存器指定,则按指令指定方式修改,从而实现程序区到数据区的数据传送。目的地址若由数据存储
30、器地址到数据区的数据传送。目的地址若由数据存储器地址 (常数常数)确定,则不能确定,则不能修改,此时重复执行修改,此时重复执行BLPD指令将没有什么意义指令将没有什么意义.例例24:BLPD #800h,00h ;设;设DP=6,则数据存储器地址为,则数据存储器地址为 0300h037Fh,将程序存储器,将程序存储器800h的内容的内容 传送到传送到300h例例25:BLPD #800h,*,AR717、无条件调用指令、无条件调用指令(由累加器指定由累加器指定)CALA句法:句法: CALA功能:功能: 无条件调用由累加器低无条件调用由累加器低16位指定的子程序。利用该指令可根据计算位指定的子
31、程序。利用该指令可根据计算 结果调用子程序。结果调用子程序。操作:操作: (PC)+1堆栈栈顶堆栈栈顶TOS; ACC的低的低16位位PC。例例26: CALA18、子程序调用指令、子程序调用指令CALL句法句法: CALL pam,ind1,ARn ;间接寻址;间接寻址功能功能: 无条件调用由指令操作数指定的子程序,并按指令要求修改当前辅无条件调用由指令操作数指定的子程序,并按指令要求修改当前辅 助寄存器和助寄存器和ARP的内容。的内容。操作操作: (PC)+2堆栈栈顶堆栈栈顶TOS; pamPC; 按指令要求修改按指令要求修改(当前当前AR)和和(ARP)。例例27: CALL 191,*
32、+,AR019、条件调用指令、条件调用指令CC句法:句法: CC pma,cond1,cond2,功能功能: 如果指定的条件都满足,则调用如果指定的条件都满足,则调用pma指定则子程序。指定则子程序。操作操作: 如果如果cond1, cond2 ,都满足,则都满足,则(PC)+2堆栈栈顶堆栈栈顶TOS, pamPC,否则,否则PC+2。例例28: CC 0BFh,LEQ,C ;若累加器的内容小于或等于若累加器的内容小于或等于0,且进位位为,且进位位为 1,则调用程序地址,则调用程序地址0BFh 处的子程序,只要处的子程序,只要 有一个条件不满足,则继续执行有一个条件不满足,则继续执行CC下面的
33、指下面的指 令。令。20、清、清0指令指令CLRC句法:句法: CLRC control bit 操作数中操作数中controlbit选择以下控制位之一:选择以下控制位之一: C 状态寄存器状态寄存器STI中的进位位中的进位位(D9); CNF 状态寄存器状态寄存器STl中的中的RAM配置控制位配置控制位(D12) INTM 状态寄存器状态寄存器ST0中的中断模式位中的中断模式位(D9); OVM 状态寄存器状态寄存器ST0中的溢出模式位中的溢出模式位(D11): SXM 状态寄存器状态寄存器STl中的符号扩展模式位中的符号扩展模式位(DiO); TC 状态寄存器状态寄存器STl中的测试控制标
34、志位中的测试控制标志位(D11); XF 状态寄存器状态寄存器STl中的中的XF引脚状态位引脚状态位(D4):功能功能: 把指定的控制位清把指定的控制位清0。操作:操作: (PC)+1PC; 0control bit。21、累加器取反指令、累加器取反指令CMPL句法:句法: CMPL功能:功能: 将累加器中的内容逻辑取反。将累加器中的内容逻辑取反。操作:操作: (PC)+1PC: (ACC) ACC。例例28: CMPL22、比较指令、比较指令CMPR句法:句法: CMPR CM功能:功能: 将当前辅助寄存器的内容与将当前辅助寄存器的内容与AR0的内容进行比较:的内容进行比较: 若若CM=0,
35、则比较是否,则比较是否(当前当前AR)=(AR0); 若若CM=I,则比较是否,则比较是否(当前当前AR)(AR0); 若若CM=3,则比较是否,则比较是否(当前当前AR) (AR0); 如果条件为真,则如果条件为真,则ST1中的中的TC位置位置1,如果条件为假,则,如果条件为假,则TC清清0.操作操作: (PC)+1PC, 。 完成由完成由CM值值(0-3)指定的当前指定的当前AR和和AR0的比较的比较,若为真若为真,则则1TC,若,若为假,则为假,则 0TC。注意注意: 比较时辅助寄存器的值作为无符号整数看待。比较时辅助寄存器的值作为无符号整数看待。23、数据移动指令、数据移动指令DMOV
36、句法句法: DMOV dma ;直接寻址;直接寻址 DMOV ind,ARn ;间接寻址;间接寻址功能功能: 将指定的数据存储单元的内容复制到地址加将指定的数据存储单元的内容复制到地址加1的单元。的单元。操作操作: (PC)+1 PC数据;数据; (数据存储器地址数据存储器地址) 数据存储地址数据存储地址+1。状态位状态位: 受受CNF状态位影响。状态位影响。注意注意: DMOV指令用于片内任何配置的数据存储器指令用于片内任何配置的数据存储器RAM块,数据的移动块,数据的移动 可以跨越块的边界。可以跨越块的边界。 DMOV指令不能用于外部数据存储器,如果指令指定了外部存储器指令不能用于外部数据
37、存储器,如果指令指定了外部存储器 地址,执行时只读指定的存储器单元,但不进行其他操作。地址,执行时只读指定的存储器单元,但不进行其他操作。 数据移动功能对于实现数据信号处理中的数据移动功能对于实现数据信号处理中的Z-1延时很有用。延时很有用。例例29: DMOV *,AR1 ;将当前辅助寄存器指定的数据存储器单元;将当前辅助寄存器指定的数据存储器单元 内容复制到地址加内容复制到地址加1单元,然后将下次辅助单元,然后将下次辅助 寄存器指定为寄存器指定为AR124、暂停指令、暂停指令IDLE句法句法: IDLE功能:功能: 程序停止执行,程序停止执行,DSP芯片进入低功耗模式,直到发生硬件复位、硬
38、芯片进入低功耗模式,直到发生硬件复位、硬件件NMI或未被屏蔽的硬件中断或未被屏蔽的硬件中断(外部的或内部的外部的或内部的)。操作:操作: (PC+1) PC; 等待硬件中断。等待硬件中断。状态位状态位: 受受INTM的影响。的影响。注意:注意: 如果因如果因NMI或复位使芯片退出低功耗模式或复位使芯片退出低功耗模式, 则执行则执行0024h或或0000h单元的中断服务程序。单元的中断服务程序。 不管状态寄存器不管状态寄存器ST0中的中断模式位中的中断模式位INTM为为0或或1,未被屏蔽的中,未被屏蔽的中断均可使芯片退出低功耗模式,但退出后的操作则取决于断均可使芯片退出低功耗模式,但退出后的操作
39、则取决于INTM。 INTM=0,程序转移到相应的中断服务程序;,程序转移到相应的中断服务程序; INTM=I,执行,执行IDLE后面的指令。后面的指令。 25、输入指令、输入指令IN句法:句法: IN dma,PA ;直接寻址;直接寻址 IN ind,PA,ARn ;间接寻址;间接寻址 操作数中操作数中PA表示表示16位位I/O端口或端口或I/O映射的寄存器地址。映射的寄存器地址。功能:功能: 从从I/O端口读入端口读入16位数据,送到指定的数据存储单元中。位数据,送到指定的数据存储单元中。 重复指令重复指令(RPT)与与IN指令一起使用可连续传送指令一起使用可连续传送I/O空间的一串字到空
40、间的一串字到 数据存储器。数据存储器。操作:操作: (PC)+2PC; (PA) 数据存储器地址。数据存储器地址。例例30: IN *,5h ;从端口地址为;从端口地址为5h的外设中读入一个字,并将该字保的外设中读入一个字,并将该字保 存到由当前辅助寄存器指定的数据存储单元中存到由当前辅助寄存器指定的数据存储单元中26、软中断指令、软中断指令INTR句法:句法: INTR k 操作数中操作数中k为数值为数值031,表示中断矢量号。,表示中断矢量号。功能:功能: 程序控制转换到与程序控制转换到与k对应的中断矢量单元对应的中断矢量单元(该单元存放的转移指令该单元存放的转移指令可引导相应的中断服务程
41、序可引导相应的中断服务程序)。操作:操作: (PC)+1堆栈:堆栈: k值对应的中断矢量地址值对应的中断矢量地址PC。状态位:状态位: 指令影响指令影响INTM状态位,但不受状态位,但不受INTM的影响。的影响。注意:注意: INTR指令是软中断指令,利用该指令可从程序的任意位置转移指令是软中断指令,利用该指令可从程序的任意位置转移 到任意一种中断服务程序中。到任意一种中断服务程序中。INTM位和中断屏蔽位都不影响位和中断屏蔽位都不影响INTR指令。指令。当响应当响应INTR中断时,中断时,INTM位置位置1,禁止可屏蔽中断,但不影响,禁止可屏蔽中断,但不影响 IFR标志。标志。27、装载累加
42、器指令、装载累加器指令LACC句法:句法: LACC dma,shift ;直接寻址,左移;直接寻址,左移015位位 LACC dma,16 ;直接寻址,左移;直接寻址,左移16位位 LACC ind ,shin,ARn ;间接寻址,左移;间接寻址,左移015位位 LACC ind,16,ARn ;间接寻址,左移;间接寻址,左移16位位 LACC #lk ,shift ;长立即数寻址,左移;长立即数寻址,左移015位位功能:功能: 将指定的数据存储单元的内容或将指定的数据存储单元的内容或16位常数左移后送累加器。移位时位常数左移后送累加器。移位时低位填低位填0,高位由,高位由SXM决定,决定,
43、SXM=1,用符号扩展;,用符号扩展;SXM=0,则填,则填0。操作:操作:(PC)+1 PC 或或 (PC)+2 PC(长立即数寻址长立即数寻址); (数据存储器地址数据存储器地址) X2shiftACC 或或 lkX2shiftACC(长立即数寻址长立即数寻址)。状态位:状态位: 指令受指令受SXM影响。影响。例例31: LACC *,4 ;(设;(设SXM=0)将当前)将当前AR指定的数据存储器的内容指定的数据存储器的内容 左移左移4位后送累加器位后送累加器 28、装载累加器低、装载累加器低16位指令位指令LACL句法:句法: LACL dma ;直接寻址;直接寻址 LACL ind,A
44、Rn ;间接寻址;间接寻址 LACL #k ;短立即数寻址;短立即数寻址功能:功能: 将指定的数据存储单元的内容或用将指定的数据存储单元的内容或用0扩展的扩展的8位常数送到累加器的位常数送到累加器的低低16位,累加器的高位,累加器的高16位填位填0。操作:操作: (PC)+1 PC; 直接或间接寻址直接或间接寻址 (数据存储器地址数据存储器地址) ACC(150);0 ACC(3116); 或短立即数寻址或短立即数寻址 k ACC(70);0 ACC(318)。状态位:状态位: 不受不受SXM影响。影响。例例32: LACL #10h;将;将10h送到累加器的低送到累加器的低8位,累加器的位,
45、累加器的D31D8填填029、装载累加器指令、装载累加器指令LACT(移位次数由移位次数由TREG确定确定)句法:句法: LACT dma ;直接寻址;直接寻址 LACT ind,ARn ; 间接寻址间接寻址功能:功能: 将指定的数据存储单元的内容左移后送到累加器。左移次数由将指定的数据存储单元的内容左移后送到累加器。左移次数由 TREG的低的低4位确定位确定(可移动可移动0l5位位)。移位时。移位时 低位填低位填0,高位由,高位由SXM 决定。决定。操作:操作: (PC)+1 PC; (数据存储器地址数据存储器地址)X2(TREG(3:0) ACC。状态位:状态位: 受受SXM影响。影响。例
46、例33: LACT *-,AR330、装载辅助寄存器指令、装载辅助寄存器指令LAR句法:句法: LAR ARx,dma ;直接寻址;直接寻址 LAR ARx,ind,ARn ;间接寻址;间接寻址 LAR ARx,#k ;短立即数寻址;短立即数寻址 LAR ARx,#lk ;长立即数寻址;长立即数寻址 操作数中操作数中x为数值为数值07,表示要装载的辅助寄存器。,表示要装载的辅助寄存器。功能:功能: 将指定的数据存储单元中的内容或将指定的数据存储单元中的内容或8位、位、16位常数送到指令指定的辅助寄位常数送到指令指定的辅助寄存器存器ARx中。不论中。不论SXM为何值,所指定的常数均为无符号整数。
47、为何值,所指定的常数均为无符号整数。操作:操作: (PC)+1PC; 直接或间接寻址直接或间接寻址 (数据存储器地址数据存储器地址) ARx; 或短立即数寻址或短立即数寻址 kARx (ARx的高位填的高位填0); 或长立即数寻址:或长立即数寻址:lkARx。注意:注意: 如果指令使用间接寻址,且指令指定的如果指令使用间接寻址,且指令指定的AR与与ARP所指定的所指定的AR相同,相同, LAR指令仅对该指令仅对该AR进行装载操作,而不对其进行增或减量修改。进行装载操作,而不对其进行增或减量修改。30、装载辅助寄存器指令、装载辅助寄存器指令LAR句法:句法: LAR ARx,dma ;直接寻址;
48、直接寻址 LAR ARx,ind,ARn ;间接寻址;间接寻址 LAR ARx,#k ;短立即数寻址;短立即数寻址 LAR ARx,#lk ;长立即数寻址;长立即数寻址 操作数中操作数中x为数值为数值07,表示要装载的辅助寄存器。,表示要装载的辅助寄存器。功能:功能: 将指定的数据存储单元中的内容或将指定的数据存储单元中的内容或8位、位、16位常数送到指令指定的辅助寄位常数送到指令指定的辅助寄存器存器ARx中。不论中。不论SXM为何值,所指定的常数均为无符号整数。为何值,所指定的常数均为无符号整数。操作:操作: (PC)+1PC; 直接或间接寻址直接或间接寻址 (数据存储器地址数据存储器地址)
49、 ARx; 或短立即数寻址或短立即数寻址 kARx (ARx的高位填的高位填0); 或长立即数寻址:或长立即数寻址:lkARx。注意:注意: 如果指令使用间接寻址,且指令指定的如果指令使用间接寻址,且指令指定的AR与与ARP所指定的所指定的AR相同,相同, LAR指令仅对该指令仅对该AR进行装载操作,而不对其进行增或减量修改。进行装载操作,而不对其进行增或减量修改。例例34: LAR AR4,*-例例35: LAR AR0,16 ;设;设DP=6,则数据存储器地址为,则数据存储器地址为 0300h037Fh, 将将310h单元的内容传送到单元的内容传送到AR0中中31、装载、装载DP指令指令L
50、DP句法:句法: LDP dma ;直接寻址;直接寻址 LDP ind,ARn ;间接寻址;间接寻址 LDP #k ;短立即数寻址;短立即数寻址功能:功能: 将指定的数据存储单元中的低将指定的数据存储单元中的低9位或位或9位立即数值送到状态寄存位立即数值送到状态寄存 器器ST0中的中的DP(LST指令也可加载指令也可加载DP)。操作:操作: (PC)+1PC; (数据存储器地址数据存储器地址)的低的低9位位DP(直接或间接寻址直接或间接寻址) 或或kDP(短立即数寻址短立即数寻址)。状态位:影响状态位:影响DP。例例36 : LDP *,AR532、装载、装载PREG高高16位指令位指令LPH
51、句法:句法: LPH dma ;直接寻址;直接寻址 LPH ind,ARn ;间接寻址;间接寻址功能:功能: 将指定的数据存储单元的内容送到将指定的数据存储单元的内容送到PREG的高的高16位,位,PREG的低的低 16位不变。在中断和子程序调用时,可用位不变。在中断和子程序调用时,可用LPH指令恢复指令恢复PREG的高的高 位字。位字。操作操作: (PC)+1PC; (数据存储器地址数据存储器地址) PREG(3116)。例例37:LPH *,AR6 ;将当前;将当前AR指定的数据存储单元的内容送到指定的数据存储单元的内容送到PREG 高高16位,位, AR6为下次的辅助寄存器。为下次的辅助
52、寄存器。33、装载状态寄存器指令、装载状态寄存器指令LST句法:句法: LST #m,dma ;直接寻址;直接寻址 LST #m,ind,ARn ;间接寻址;间接寻址 操作数操作数m=0表示要装载表示要装载ST0,m=1表示要装载表示要装载ST1。功能:功能: 将指定的数据存储单元中的内容送状态寄存器将指定的数据存储单元中的内容送状态寄存器ST0或或ST1操作:操作: (PC)+1PC: (数据存储器地址数据存储器地址) 状态寄存器状态寄存器STm。 当装载当装载ST0时,时,ST0的的D10位和位和D9位不受装载影响,保持原值;位不受装载影响,保持原值; 当装载当装载ST1时,时,ST1 的
53、的D8D5位、位、D3位、位、D2位保持位保持1不变,数据的不变,数据的D15D13位同时也位同时也装载到装载到ST0的的ARP中。中。状态位:影响状态位:影响ARB,ARP,OVOVM,DP,CNF,TC,SXM,C,XF,PM。不影响。不影响INTM。注意:注意: 在间接寻址方式中,如果在操作数中指定了下次的辅助寄存器,则该指定在间接寻址方式中,如果在操作数中指定了下次的辅助寄存器,则该指定无效,仍由数据存储单元内容中的高无效,仍由数据存储单元内容中的高3位装载位装载ARP。例例38: MAR *,AR0 ;0ARP,下次辅助寄存器为,下次辅助寄存器为AR0 LST #0,*,AR1 ;将
54、当前辅助寄存器;将当前辅助寄存器AR0指定的数据存储单元的内容送到指定的数据存储单元的内容送到 ST0中。原中。原ST0的的D10和和D9仍为原值。指定仍为原值。指定AR1为下次为下次 辅助寄存器的操作忽略,同时原来的辅助寄存器的操作忽略,同时原来的ARP值也不复制到值也不复制到 ARB中。中。例例39: LST #1,00h34、装载、装载TREG指令指令 LT句法:句法: LT dma ;直接寻址;直接寻址 LT ind,ARn ;间接寻址;间接寻址功能:功能: 将指定的数据存储单元的内容送到将指定的数据存储单元的内容送到TREG中。中。操作:操作: (PC)+1PC; (数据存储器地址数
55、据存储器地址) TREG。例例40: LT 24 ;(设设DP=8,则数据存储器地址为,则数据存储器地址为0400h047Fh)将将418h单元单元 的内容送的内容送TREG。35、装载、装载TREG和乘积累加指令和乘积累加指令LTA句法:句法: LTA dma ;直接寻址;直接寻址 LTA ind,ARn ;间接寻址;间接寻址功能:功能: 将指定的数据存储单元的内容送到将指定的数据存储单元的内容送到TREG;按;按PM状态位指定的方式状态位指定的方式 对乘积寄存器对乘积寄存器(PREG)的内容进行移位,并把移位后的值与累加器相的内容进行移位,并把移位后的值与累加器相 加,结果送累加器。若相加
56、结果有进位,则加,结果送累加器。若相加结果有进位,则C=1;若相加结果无进;若相加结果无进 位,则位,则C=0。操作:操作: (PC)+1PC; (数据存储器地址数据存储器地址) TREG; (ACC)+移位后的移位后的(PREG) ACC。状态位:受状态位:受PM和和OVM影响,影响影响,影响C和和OV。例例41: LTA 36;(设设DP=6,则数据存储器地址为,则数据存储器地址为0300h037Fh;PM=0,不,不移位移位)将将324h单元的内容送单元的内容送TREG,并将,并将PREG的内容与累加的内容与累加器相加,结果送累加器器相加,结果送累加器36、装载、装载TREG及数据移动,
57、乘积累加指令及数据移动,乘积累加指令LTD句法:句法: LTD dma ;直接寻址;直接寻址 LTD ind,ARn ;间接寻址;间接寻址功能:功能: 将指定的数据存储单元的内容送到将指定的数据存储单元的内容送到TREG和该地址加和该地址加1的单元中;按的单元中;按 PM状态位指定的方式对乘积寄存器状态位指定的方式对乘积寄存器(PREG)的内容进行移位,并把移的内容进行移位,并把移 位后的值与累加器相加,结果送累加器。若相加结果有进位,则位后的值与累加器相加,结果送累加器。若相加结果有进位,则 C=1;若相加结果没有进位,则;若相加结果没有进位,则C=0。操作:操作: (PC)+1PC; (数
58、据存储器地址数据存储器地址) TREG; 数据存储器地址数据存储器地址) 数据存储器地址十数据存储器地址十1; (ACC)+移位后的移位后的(PREG) ACC。状态位:受状态位:受PM和和OVM影响,影响影响,影响C和和OV。注意:注意:该指令适用于所有配置为数据存储器的片内该指令适用于所有配置为数据存储器的片内RAM,并可以跨越相邻块,并可以跨越相邻块的边界连续进行数据移动。的边界连续进行数据移动。 如果将如果将LTD指令用于外部数据存储器,其作用与指令用于外部数据存储器,其作用与LTA相同,即不执行相同,即不执行操作操作(不作数据移动不作数据移动)。例例42: LTD *,AR3 :(设
59、设PM=0)将当前将当前AR指定的数据存储单元的内容送指定的数据存储单元的内容送TREG 和该地址内容相加,结果送累加器,并指定和该地址内容相加,结果送累加器,并指定AR3为下次为下次 AR37、装载、装载TREG和累加器指令和累加器指令LTP句法:句法: LTP dma ;间接寻址;间接寻址 LTP ind,ARn ;直接寻址;直接寻址功能:功能: 将指定的数据存储单元的内容送到将指定的数据存储单元的内容送到TREG。并将。并将PREG的内容按的内容按PM 状态位指状态位指 定的方式移位后送到累加器中。定的方式移位后送到累加器中。操作:操作: (PC)+1PC; (数据存储器地址数据存储器地
60、址) TREG; 移位后的移位后的(PREG) ACC。状态位:状态位: 受受PM影响。影响。例例43: LTP 36 ;(设设DP=6,则数据存储器地址为,则数据存储器地址为0300h037Fh。PM=0,乘积不移位,乘积不移位)将将324h单元的内容送单元的内容送TREG,并将乘,并将乘积寄存器积寄存器(PREG)的内容送的内容送ACC38、装载、装载TREG和乘积累减指令和乘积累减指令LTS句法:句法: LTS dma ;直接寻址;直接寻址 LTS ind,ARn ;间接寻址;间接寻址功能:功能: 将指定的数据存储单元的内容送将指定的数据存储单元的内容送TREG;再用累加器的内容减去;再
61、用累加器的内容减去移位后移位后(PM状态位指定的方式状态位指定的方式)的的PREG的内容,结果送累加器。如果相的内容,结果送累加器。如果相减的结果产生借位,则进位位减的结果产生借位,则进位位C清清0,若无进位,则,若无进位,则C置置1。操作:操作: (PC)+1PC; (数据存储器地址数据存储器地址) TREG;(ACC)-移位后的移位后的(PREG) ACC。状态位:状态位: 受受PM和和OVM影响,影响影响,影响C和和OV。例例44: LTS *,AR2 ;(设设PM=0,则乘积不移位,则乘积不移位)将当前将当前AR指定的数指定的数据存储单元的内容送据存储单元的内容送TREG;累加器的内容
62、减去乘积寄存器的内容,结;累加器的内容减去乘积寄存器的内容,结果送累加器,果送累加器,AR2为下次为下次AR39、累加、累加-乘指令乘指令MAC句法:句法: MAC pma,dma ;直接寻址;直接寻址 MAC pma,ind,ARn ;间接寻址;间接寻址功能:功能:将前次乘积将前次乘积(PREG的内容的内容)按按PM指定的方式移位后结果送累加器。与累加器相指定的方式移位后结果送累加器。与累加器相加;如果相加产生进位,则加;如果相加产生进位,则C=I:若结果未产生进位,则:若结果未产生进位,则C=0。 将指定的数据存储单元的内容送到将指定的数据存储单元的内容送到TREG。 将将TREG中数据存
63、储单元的内容乘以指定的程序存储器地址中的内容。中数据存储单元的内容乘以指定的程序存储器地址中的内容。 每重复每重复MAC指令一次,在指令一次,在PC中的程序存储器地址加中的程序存储器地址加1。因此可以访问程序存。因此可以访问程序存储器中的一串操作数。如果使用间接寻址指定数据存储器地址,则每次重复时储器中的一串操作数。如果使用间接寻址指定数据存储器地址,则每次重复时就可能访问新的数据存储器地址。如果使用直接寻址,指定的数据存储器地址就可能访问新的数据存储器地址。如果使用直接寻址,指定的数据存储器地址是常数,重复时不对其进行修改。是常数,重复时不对其进行修改。 重复执行重复执行MAC指令可对两组数
64、据指令可对两组数据(或一组数据与一个常数或一组数据与一个常数)进行乘进行乘-累加运算。累加运算。重复时,重复时,RPT流水线一旦启动,它就变成了单周期指令。流水线一旦启动,它就变成了单周期指令。状态位:受状态位:受PM和和OVM影响,影口向影响,影口向C和和OV。注意:注意:MAC指令所寻址的数据和程序存储器单元可以是任意非保留的片内或片外存储单指令所寻址的数据和程序存储器单元可以是任意非保留的片内或片外存储单元。元。例例45: MAC 0FF0h,02h ;(设;(设DP=6,则数据存储器地址为,则数据存储器地址为0300h037Fh,PM=0,乘积不移位,乘积不移位,CNF=1,RAMB0
65、为程序存储器为程序存储器 )将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将数)将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将数据存储器据存储器302h单元的内容与程序存储器单元的内容与程序存储器FF00h单元内容相乘,结单元内容相乘,结果送果送PREG例例46: MAC 0FF00h,*,AR6 ;(设;(设PM=0,CNF=1 )将累加器的内容与)将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将当前乘积寄存器的内容相加,结果送累加器,然后将当前AR指定的数据存储指定的数据存储单元单元308h的内容与程序存储器的内容与程序存储器FF00h单元内容相乘,结果送单
66、元内容相乘,结果送PREG,并,并指定下次的辅助寄存器为指定下次的辅助寄存器为AR540、带数据移动的累加、带数据移动的累加-乘指令乘指令 MACD句法:句法: MACD pma,dma ;直接寻址;直接寻址 MACD pma,ind,ARn ;间接寻址;间接寻址功能:如果指定的数据存储器是片内功能:如果指定的数据存储器是片内RAM,则,则MACD指指 令在令在MAC指令功能指令功能的基础上多一条数据移动功能,如果的基础上多一条数据移动功能,如果MACD指令寻址存储器映射的寄存器指令寻址存储器映射的寄存器或外部数据存储器,则或外部数据存储器,则MACD指令与指令与MAC指令功能完全相同。指令功
67、能完全相同。状态位:状态位: 受受PM和和OVM影响,影响影响,影响C和和OV。例例47: MACD 0FF00h,08h ;(设设DP=6,则地址为,则地址为0300h037Fh;PM=0,乘积不移位;,乘积不移位;CNF=I,RAMB0配置为程序存储器配置为程序存储器)该指令将累加器的内容与乘积寄存器的内容相加,结果送累该指令将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将数据存储器加器,然后将数据存储器308h单元的内容与程序存储器单元的内容与程序存储器FF00h单元的内容相乘,结果送单元的内容相乘,结果送PREG,再将,再将308h的内容送的内容送309h单元中。单元中。41
68、、修改当前、修改当前AR和和ARP指令指令MAR句法:句法: MAR dma ;直接寻址;直接寻址 MAR ind,ARn ;间接寻址;间接寻址功能:功能: 在直接寻址方式下,在直接寻址方式下,MAR指令的作用同指令的作用同NOP指令一样,进行空操指令一样,进行空操 作。在间接寻址方式下,按指令指定的方式修改辅助寄存器的值作。在间接寻址方式下,按指令指定的方式修改辅助寄存器的值 和和ARP的值,并将原来的的值,并将原来的ARP的值复制到状态寄存器的值复制到状态寄存器ST1的的ARB 字段中。字段中。操作:操作: (PC)+1 PC: 按指令指定的方式修改当前按指令指定的方式修改当前AR和和AR
69、P(只有在间接寻址方式下才只有在间接寻址方式下才 执行此操作执行此操作)。状态位状态位:直接寻址方式下不影响状态位,间接寻址方式下影响直接寻址方式下不影响状态位,间接寻址方式下影响ARP和和ARB。例例48: MAR *+,AR5 ;将当前辅助寄存器的内容加;将当前辅助寄存器的内容加1,并将,并将5送到送到ARP, ARP原来的值送到原来的值送到ARB42、乘法指令、乘法指令MPY句法:句法: MPY dma ;直接寻址;直接寻址 MPY ind,ARn ;间接寻址;间接寻址 MPY #k ;短立即数寻址;短立即数寻址(k为有符号的为有符号的13位常数位常数)功能:功能: 将将TREG的内容乘
70、以指定的数据存储器单元的内容或短立即数,的内容乘以指定的数据存储器单元的内容或短立即数, 结果放在乘积寄存器结果放在乘积寄存器(PREG)中。乘以短立即数时,应将中。乘以短立即数时,应将13位有符位有符 号数值取右对齐,相乘前用符号扩展号数值取右对齐,相乘前用符号扩展(无论无论SXM为何值为何值)。操作:操作: (PC)+1 PC; (TREG)X(数据存储器地址数据存储器地址) PREG(直接或间接寻址直接或间接寻址) 或或(TREG)X k PREG(短立即数寻址短立即数寻址)。例例49: MPY 13 ;(设设DP=8,则地址为,则地址为400h47Fh)将将TREG的内容与数据的内容与
71、数据存储器存储器400h单元的内容相乘,结果送单元的内容相乘,结果送PREG43、累加、累加乘指令乘指令MPYA句法:句法: MPYA dma ;直接寻址;直接寻址 MPYA ind,ARn ;间接寻址;间接寻址功能:功能: 将前次乘积将前次乘积(PREG的内容的内容)按按PM指定的方式移位后,与累加器指定的方式移位后,与累加器 相加,结果送累加器:然后将相加,结果送累加器:然后将TREG的内容乘以指定的数据存的内容乘以指定的数据存 储单元的内容,结果送乘积寄存器储单元的内容,结果送乘积寄存器(PREG)。 操作:操作: (PC)+1 PC; (ACC)+移位后的移位后的(PREG) ACC;
72、 (TREG) X(数据存储器地址数据存储器地址) PREG。状态位:受状态位:受PM和和OVM影响,影响影响,影响C和和OV。例例50: MPYA 13h ;(设;(设DP=6,则数据存储器地址为,则数据存储器地址为300h37Fh, PM=0 ,乘积不移位)将累加器的内容与乘积,乘积不移位)将累加器的内容与乘积 寄存器的内容相加,结果送累加器,然后将寄存器的内容相加,结果送累加器,然后将 TREG的内容与数据存储器的内容与数据存储器300h单元的内容相单元的内容相 乘,结果送乘,结果送PREG 例例51: MPYA *,AR444、减、减乘指令乘指令MPYS句法:句法: MPYS dma
73、;直接寻址;直接寻址 MPYS ind,ARn ;间接寻址;间接寻址功能:功能: 将累加器的内容减去前次乘积将累加器的内容减去前次乘积(按按PM状态位指定的方式移位后的状态位指定的方式移位后的PREG的内容的内容),结果送累加器,有借位时,标志位,结果送累加器,有借位时,标志位C清清0,无借位,无借位C为为1。然后将暂存寄存器然后将暂存寄存器(TREG)的内容乘以指定的数据存储单元的内容,结果的内容乘以指定的数据存储单元的内容,结果送送PREG。操作:操作: (PC)+1 PC: (ACC)-移位后的移位后的(PREG) ACC; (TREG)X(数据存储器地址数据存储器地址) PREG。状态
74、位:状态位: 受受PM和和OVM影响,影响影响,影响C和和OV。例例52: MPYS 13;(设设DP=6,则地址为,则地址为300h37Fh:设:设PM=0,则乘积不移,则乘积不移 位位)将累加器的内容与将累加器的内容与PREG的内容相减,结果送累加器,再将的内容相减,结果送累加器,再将TREG 的内容与数据存储器单元的内容与数据存储器单元30Dh的内容相乘,结果送的内容相乘,结果送PREG45、无符号乘法指令、无符号乘法指令MPYU句法:句法: MPYU dma ; 直接寻址直接寻址 MPYU ind,ARn ;间接寻址;间接寻址功能:功能: 将暂存寄存器将暂存寄存器(TREG)中的无符号
75、数与指定的数据存储单元中的无符号数中的无符号数与指定的数据存储单元中的无符号数相乘,结果送乘积寄存器相乘,结果送乘积寄存器(PPEG)。操作:操作: (PC)+1 PC: (TREG)X(数据存储器地址数据存储器地址) PREG。注意:注意: 当其他指令把乘积寄存器当其他指令把乘积寄存器(PREG)中的值传递到数据存储器或中的值传递到数据存储器或CALU 时,需经过乘积移位器的输出。当时,需经过乘积移位器的输出。当PM=3(右移右移6位位)时,该移位总要将时,该移位总要将 PRE6的值进行符号扩展。因此,如果要求无符号相乘,则不能使用这的值进行符号扩展。因此,如果要求无符号相乘,则不能使用这
76、种移位模式。种移位模式。该指令可用于多精度乘法。如两个该指令可用于多精度乘法。如两个32位数相乘产生位数相乘产生64位乘积。位乘积。例例53: MPYU 16 ;(设设DP=4,则地址为,则地址为0200h027Fh)将将TREG中的无符号数中的无符号数 乘以数据存储器乘以数据存储器210h单元的无符号数,结果送单元的无符号数,结果送PREG 46、累加器取指令、累加器取指令NEG句法:句法: NEG功能:功能: 将累加器的内容取将累加器的内容取2的补数,即转换成它的相反数。的补数,即转换成它的相反数。操作:操作: (PC)+1 PC: (ACC)X(-1) ACC状态位:状态位: 受受OVM
77、影响,影响影响,影响C和和OV。注意:注意: 当对当对80000000h作作NEG操作时,操作时,OV位置位置1。 若若OVM=I,累加器的内容被,累加器的内容被NEG操作转换成操作转换成7FFFFFFFh 若若OVM=0,则累加器经过,则累加器经过NEG操作后,仍为操作后,仍为80000000h。 只要累加器的内容不为只要累加器的内容不为0,进位位,进位位(C)即清即清0;累加器的内容为;累加器的内容为0 时,进位位时,进位位C置置1。例例54: NEG ;(OVM为任意值为任意值)将累加器的内容取补将累加器的内容取补47、非屏蔽中断指令、非屏蔽中断指令NMI句法:句法: NMI功能:功能:
78、 将非屏蔽中断矢量地址将非屏蔽中断矢量地址24h送程序计数器执行非屏蔽中断服务程送程序计数器执行非屏蔽中断服务程 序。与硬件非屏蔽中断序。与硬件非屏蔽中断NMI效果相同。效果相同。操作:操作: (PC)+1 STACK; 24h PC; 1 INTM。状态位:状态位: 不受不受INTM影响,影响影响,影响INTM。48、空操作指令、空操作指令NOP句法:句法: NOP功能:功能: NOP指令仅影响指令仅影响PC,不进行其他操作,不进行其他操作,NOP指令可用于建立流水指令可用于建立流水 线和延时。线和延时。操作:操作: (PC)+1 PC。49、累加器规格化指令、累加器规格化指令NORM句法:
79、句法: NORM ind功能:功能: 将累加器中的有符号数规格化。把定点数规格化就是把它分成尾数和指数两分。将累加器中的有符号数规格化。把定点数规格化就是把它分成尾数和指数两分。方法如下。方法如下。将累计器的最高两位将累计器的最高两位D31和和D30作逻辑异或,如果两位相同,说明这是两个符号作逻辑异或,如果两位相同,说明这是两个符号 位位(符号扩展符号扩展),则累计器左移去掉多余的符号位。,则累计器左移去掉多余的符号位。按指定的方式修改当前按指定的方式修改当前AR以确定指数的大小。对当前以确定指数的大小。对当前AR默认的修改方式为加默认的修改方式为加1。为了将累加器中的为了将累加器中的32位数
80、规格化,可能需要多次执行位数规格化,可能需要多次执行NORM指令。指令。NORM指令可指令可 与与RPT一起使用以实现多次执行一起使用以实现多次执行NORM指令。指令。NORM指令对用指令对用2的补码表示的正数或的补码表示的正数或负数均适用。负数均适用。状态位:影响状态位:影响TC。注意:注意:NORM指令在流水线的第指令在流水线的第4阶段阶段(执行阶段执行阶段)完成对辅助寄存器的操作,而其他指令完成对辅助寄存器的操作,而其他指令在流水线的第在流水线的第2阶段阶段(译码阶段译码阶段)完成对辅助寄存器的操作。因此紧跟在完成对辅助寄存器的操作。因此紧跟在NORM指令后指令后的两条指令不能修改的两条
81、指令不能修改NORM指令所用的辅助寄存器的值和辅助寄存器指针指令所用的辅助寄存器的值和辅助寄存器指针(ARP)的值。的值。例例55: NORM *+例例56: 31位规格化程序位规格化程序MAR *,AR1LAR AR1,#0hLOOP: NORM *+BCND LOOP,NTC例例57: 15位规格化程序位规格化程序MAR *,AR1LAR AR1,#0FhRPT #14NORM *-50、或指令、或指令OR句法:句法: OR dma ;直接寻址;直接寻址 OR ind,ARn ;间接寻址;间接寻址OR #lk,shift ;长立即寻址,左移;长立即寻址,左移015位位OR #k,16 ;长
82、立即寻址,左移;长立即寻址,左移16位位功能:功能: 将累加器的内容和被寻址的数据存储单元的内容将累加器的内容和被寻址的数据存储单元的内容(或左移后的长立即数或左移后的长立即数)作作 “逻辑或逻辑或”操作,结果送累加器。操作数不足操作,结果送累加器。操作数不足32位的,高位补位的,高位补0:左:左移时,低位填移时,低位填0。操作:操作: (PC)+1 PC; (ACC(150)OR(数据存储器的地址数据存储器的地址) ACC(150) (ACC(3116) ACC(3116)(直接或间接寻址直接或间接寻址) 或或(ACC)OR lk*2shift ACC(长立即数左移长立即数左移015位位)
83、或或(ACC)OR lk*216 ACC(长立即数左移长立即数左移16位位)。状态位:指令不受状态位:指令不受SXM影响。影响。例例58:OR *,AR0 ;当前辅助寄存器指定的数据存储单元的内容与累加;当前辅助寄存器指定的数据存储单元的内容与累加 器的内容进行器的内容进行 “逻辑或逻辑或”结果送累加器,并将结果送累加器,并将AR0 指定为下次的辅助寄存器指定为下次的辅助寄存器例例59:OR #8111h,8 51 、输出指令、输出指令OUT句法:句法: OUT dma,PA ;直接寻址;直接寻址 OUT ind,PA,ARn ;间接寻址;间接寻址 操作数中的操作数中的PA为为I/O口地址。口
84、地址。功能:将被寻址的存储单元的内容送到指定的功能:将被寻址的存储单元的内容送到指定的I/O端口。此时端口。此时IS线变低,线变低, STRB,R/W和和READY的定时关系与外部数据存储器的写操作相同。的定时关系与外部数据存储器的写操作相同。 该指令与重复指令一起使用可以连续从数据存储器向该指令与重复指令一起使用可以连续从数据存储器向I/O空间输出数据。空间输出数据。操作:操作: (PC)+2 PC; (数据存储器的地址数据存储器的地址) PA。例例60:OUT 0,100h ;(设;(设DP=4)将数据存)将数据存储单元储单元200h中的内容中的内容 输出到输出到I/O地址为地址为100h
85、的外设中的外设中例例61:OUT *,100h ; 将当前将当前AR指定的数据存储单元的内容输出指定的数据存储单元的内容输出 到到I/O地址为地址为100h的外设中的外设中52、乘积寄存器移位指令、乘积寄存器移位指令PAC句法:句法: PAC功能:功能: 按按PM状态位指定的方式将乘积寄存器的内容移位,并把移位后的结状态位指定的方式将乘积寄存器的内容移位,并把移位后的结 果送累加器。果送累加器。操作:操作: (PC)+1 PC; 移位后的移位后的PREG ACC状态位:状态位: 受受PM影响。影响。53、弹栈至累加器指令、弹栈至累加器指令POP句法:句法: POP功能;功能; 将栈顶将栈顶(T
86、OS)的内容弹出并送到累加器的低的内容弹出并送到累加器的低16位,堆栈上弹一位,堆栈上弹一 级。累加器的高级。累加器的高16位字为位字为0。操作:操作: (PC)+1 PC; (TOS) ACC(150);0 ACC(3116);堆栈上弹一级。;堆栈上弹一级。注意:注意: 硬件堆栈是后进先出的硬件堆栈是后进先出的8个单元。当弹栈发生时,堆栈中的每个值个单元。当弹栈发生时,堆栈中的每个值 都被复制到上一个高栈单元,栈顶内容移出,栈底的两个字具有都被复制到上一个高栈单元,栈顶内容移出,栈底的两个字具有 相同的值。如果连续弹出的次数多于相同的值。如果连续弹出的次数多于7次次(POP,PODD,RET
87、C, RET指令均弹栈指令均弹栈),那么堆栈中的所有值都将相同。没有检查堆栈,那么堆栈中的所有值都将相同。没有检查堆栈 是否下溢的措施。是否下溢的措施。例例62: POP 54、弹栈至数据存储器指令、弹栈至数据存储器指令POPD句法:句法: POPD dma ;直接寻址;直接寻址 POPD ind,ARn ;间接寻址;间接寻址功能:将栈顶功能:将栈顶(TOS)的值弹出并传送到指令指定的数据存储单元。堆栈上弹的值弹出并传送到指令指定的数据存储单元。堆栈上弹 一级。一级。操作:操作: (PC)+1 PC; (TOS) 数据存储单元,堆栈上弹一级。数据存储单元,堆栈上弹一级。例例63: POPD 1
88、0例例64: POPD *+,AR155、数据存储器值进栈指令、数据存储器值进栈指令 PSHD句法:句法: PSHD dma ;直接寻址;直接寻址 PSHD ind,ARn ;间接寻址;间接寻址功能:功能: 堆栈中堆栈中8个单元的值均向下移动一级,最低一级单元的内容丢失,个单元的值均向下移动一级,最低一级单元的内容丢失, 并将指定的数据存储单元的内容传送到栈顶并将指定的数据存储单元的内容传送到栈顶(TOS)。操作:操作: (PC)+1 PC; 堆栈下压一级:堆栈下压一级:(数据存储器地址数据存储器地址) TOS。注意:参照注意:参照PUSH指令。指令。例例65: PSHD 127 ;(设设DP
89、=3,则地址为,则地址为0180h01FFh)将数据存储器将数据存储器 1FFh单元的内容压入堆栈单元的内容压入堆栈56、累加器低位进栈指令、累加器低位进栈指令PUSH句法:句法: PUSH功能:功能: 将堆栈的内容下移一级,最低一级单元的内容丢失,并将累加器的低将堆栈的内容下移一级,最低一级单元的内容丢失,并将累加器的低 16位字压入栈顶位字压入栈顶(TOS)。操作:操作: (PC)+1 PC: 堆栈下压一级;堆栈下压一级; (ACC(150) TOS。注意:注意: 硬件堆栈是后进先出的硬件堆栈是后进先出的8个单元。如果连续进行个单元。如果连续进行8次以上的压栈操作次以上的压栈操作 (CAL
90、A, CALL,CC,PSHD,PUSH,TRAP,INTR,NMI指令均指令均 进行压栈操作进行压栈操作),那么最低一级的内容将会丢失。,那么最低一级的内容将会丢失。例例66: PUSH57、无条件返回指令、无条件返回指令RET句法:句法: RET功能:功能: 将栈顶将栈顶(TOS)的内容复制到程序计数器的内容复制到程序计数器(PC) 中,堆栈上弹一级。子中,堆栈上弹一级。子 程序和中断服务程序均以程序和中断服务程序均以RET指令结束,并返回到原来调用子程指令结束,并返回到原来调用子程 序或中断的端点处。序或中断的端点处。例例67: RET58、条件返回指令、条件返回指令RETC句法:句法:
91、 RETC cond1,cond2, 操作数中的操作数中的cond为需满足的条件,其对应关系见为需满足的条件,其对应关系见 BCND指令。指令。功能:功能: 如果指定的条件都满足,则执行如果指定的条件都满足,则执行RETC指令的操作;若不满足,则指令的操作;若不满足,则 继续执行继续执行RETC下面的指令。下面的指令。操作:操作: 如果如果cond1, cond2,都满足,则都满足,则 TOS PC,堆栈上弹一,堆栈上弹一 级;否则(级;否则(PC)+1 PC。例例68: RETC GEQ,NOV59、循环左移指令、循环左移指令ROL句法:句法: ROL功能:功能: 将累加器的内容连同进位位将
92、累加器的内容连同进位位C循环左移一位,进位位移入累加循环左移一位,进位位移入累加 器的器的MSB,累加器的,累加器的LSB移入进位位。移入进位位。操作:操作: (PC)+1 PC:状态位:影响状态位:影响C,不受,不受SXM影响。影响。 例例69: ROLACCMSBLSBC60、循环右移指令、循环右移指令ROR句法:句法: ROR功能:功能: 将累加器的内容连同进位位将累加器的内容连同进位位C循环右移一位,进位位移入累加器循环右移一位,进位位移入累加器 的的MSB,累加器的,累加器的LSB移入进位位。移入进位位。操作:操作: (PC)+1 PC:状态位:影响状态位:影响C,不受,不受SXM影
93、响。影响。 例例70: RORACCMSBLSBC61、重复执行下条指令、重复执行下条指令RPT句法:句法: RPT dma ;直接寻址;直接寻址 RPT ind,ARn ;间接寻址;间接寻址 RPT #k ; 短立即数寻址短立即数寻址功能:功能: 将被寻址的数据存储单元的内容或将被寻址的数据存储单元的内容或8位立即数位立即数(假设均用假设均用N表示表示)装载到装载到 重复计数器重复计数器(RPTC)中,中,RPT后面的那条指令将重复执行后面的那条指令将重复执行N+1次,且重复次,且重复时是不可中断的。时是不可中断的。 重复指令本身不重复。复位时重复指令本身不重复。复位时RPTC清清0。操作:
94、操作: (PC)+1 PC; (数据存储器地址数据存储器地址) RPTC(直接或间接寻址直接或间接寻址) 或或k RPTC(短立即数寻址(短立即数寻址)。例例71: RPT 127 ;(设设DP=31,则数据存储器地址为,则数据存储器地址为0F58h一一0FFFh)将将0FFFh 单元的内容单元的内容OCh送入送入RPTC,RPT下面的那条指令将重复执行下面的那条指令将重复执行13次次62、移位并存储累加器高位字指令、移位并存储累加器高位字指令SACH句法:句法: SACH dma,shift ;直接寻址;直接寻址 SACH ind,shift ,ARn ;间接寻址;间接寻址 操作数中操作数中
95、shift为左移为左移07位位(缺省为缺省为0)。功能:功能: 将累加器的内容送到输出移位寄存器后左移将累加器的内容送到输出移位寄存器后左移07位,移位时低位补位,移位时低位补0,高位丢失,高位丢失(累加器内容保持原值不变累加器内容保持原值不变)。然后将移位后的高。然后将移位后的高16位位数值送到数据存储单元。数值送到数据存储单元。操作:操作: (PC)+1 PC; (ACC)X2shift)的高的高16位位数据存储单元。数据存储单元。状态位:状态位不受状态位:状态位不受SXM影响。影响。例例72: SACH 0Ah,1 ;(设设DP=4,则数据存储器地址为,则数据存储器地址为200h27Fh
96、)累加累加器的内容左移器的内容左移1位后将高位后将高16位送入位送入20Ah单元单元63、移位并存储累加器低位字指令、移位并存储累加器低位字指令SACL句法:句法: SACL dma,shift2 ;直接寻址;直接寻址 SACL ind,shift2,ARn ; 间接寻址间接寻址 操作数中操作数中shift2为左移为左移07位位(缺省为缺省为0)。功能:功能: 将累加器的内容送到输出移位寄存器后左移将累加器的内容送到输出移位寄存器后左移07位,移位时低位位,移位时低位补补0,高位丢失,高位丢失(累加器内容保持原值不变累加器内容保持原值不变)。然后将移位后的低。然后将移位后的低16位数值送到数据
97、存储单元。位数值送到数据存储单元。操作:操作: (PC)+1 PC; (ACC)X2shift2的低的低16位位 数据存储单元。数据存储单元。状态位:状态位: 不受不受SXM影响影响例例73: SACL 0Bh,1 ;(设设DP=4,则数据存储地址为,则数据存储地址为200h27Fh)累累加器的内容左移加器的内容左移1位后,将低位后,将低16位送往位送往20Bh单元单元64、保存辅助寄存器的指令、保存辅助寄存器的指令SAR句法:句法: SAR ARx,dma ;直接寻址;直接寻址SAR ARx,ind,ARn ;间接寻址;间接寻址操作数中操作数中x表示数值表示数值07,ARx指定待保存的辅助寄
98、存器。指定待保存的辅助寄存器。功能:功能: 将指定的辅助寄存器将指定的辅助寄存器ARx的内容拷贝到被寻址的数据存储单元,的内容拷贝到被寻址的数据存储单元,然后再按指令指定的方式修改当前辅助寄存器的内容和然后再按指令指定的方式修改当前辅助寄存器的内容和ARP的内的内容容(间接寻址时间接寻址时)。操作:操作: (PC)+1 PC; (ARx) 数据存储器地址:数据存储器地址: 若为间接寻址,按指定方式修改当前若为间接寻址,按指定方式修改当前AR和和ARP的内容。的内容。例例74: SAR AR0,30 ;(设设DP=6,则数据存储器的地址为,则数据存储器的地址为300h37Fh)将将AR0的内容送
99、到数据存储器的内容送到数据存储器31Eh65、修改当前辅助寄存器指令、修改当前辅助寄存器指令SBBK句法:句法: SBBK #k ;短立即数寻址;短立即数寻址 操作数中操作数中k为为8位正整数。位正整数。功能:功能: 将当前辅助寄存器的内容减去将当前辅助寄存器的内容减去1个个8位正整数位正整数k,结果存在当前辅助寄,结果存在当前辅助寄 存器中。存器中。操作:操作: (PC)+1 PC: (当前当前AR)-k 当前当前AR。例例75: SBBK #0FFh66、设置控制位指令、设置控制位指令SETC句法:句法: SETC control bit操作数中操作数中control bit选择以下控制位
100、之一:选择以下控制位之一: C 状态寄存器状态寄存器ST1中的进位位:中的进位位: CNF 状态寄存器状态寄存器ST1中的中的RAM配置控制位配置控制位 INTM 状态寄存器状态寄存器ST0中的中断模式位;中的中断模式位; OVM 状态寄存器状态寄存器ST0中的溢出模式位:中的溢出模式位: SXM 状态寄存器状态寄存器ST1中的符号扩展模式位:中的符号扩展模式位: TC 状态寄存器状态寄存器ST1中的测试控制标志位;中的测试控制标志位; XF 状态寄存器状态寄存器ST1中的中的XF引脚状态位。引脚状态位。功能:将指定的控制位置功能:将指定的控制位置1。操作:操作: (PC)+1 PC: 1 c
101、ontrol例例76: SETC TC67、累加器左移指令、累加器左移指令SFL句法:句法: SFL功能:功能: 将累加器的将累加器的32位数值左移位数值左移1位,累加器的最低位填位,累加器的最低位填0,最高位移入进位,最高位移入进位 位位C。操作:操作: (PC)+1 PC; (ACC(31) C;(ACC(300) ACC(311); 0 ACC(0)。状态:状态: 影响影响C,不受,不受SXM的影响。的影响。68、累加器右移指令、累加器右移指令SFR句法:句法: SFR功能:功能: 将累加器的将累加器的32位数右移位数右移1位,最低位移入进位位位,最低位移入进位位C。 若若SXM=0,指
102、令进行逻辑右移,最高位填,指令进行逻辑右移,最高位填0。 若若SXM=1,指令进行算术右移,最高位,指令进行算术右移,最高位(符号位符号位)不变。不变。操作:操作: (PC)+1 PC: 若若SXM=0,逻辑右移一位。,逻辑右移一位。 若若SXM=1,算术右移一位。,算术右移一位。状态位:状态位: 受受SXM影响,影响影响,影响C。例例77: SFR (SXM=0,无符号扩展,无符号扩展)累加器逻辑右移一位累加器逻辑右移一位69、累加器和乘积寄存器相减指令、累加器和乘积寄存器相减指令SPAC句法:句法: SPAC功能:将累加器的内容减去按功能:将累加器的内容减去按PM方式移位后的乘积寄存器方式
103、移位后的乘积寄存器 (PREG)的内容,的内容, 结果存入累加器。结果存入累加器。操作:操作:(PC)+1 PC; (ACC)-移位后的移位后的(PREG) ACC。状态位:受状态位:受PM和和OVM影响,影响影响,影响C和和OV。例例78:SPAC ;(设设PM=0,则不移位,则不移位)将将ACC的内容减去的内容减去PREG的内容,的内容, 结果送结果送ACC70、保存、保存PREG高高16位宇指令位宇指令SPH句法:句法: SPH dma ;直接寻址;直接寻址 SPH ind,ARn ;间接寻址;间接寻址功能:功能: 将乘积寄存器将乘积寄存器(PREG)的内容按的内容按PM状态位指定的方式
104、移位,把移状态位指定的方式移位,把移 位后的高位后的高16位数值存在被寻址的数据存储单元中。位数值存在被寻址的数据存储单元中。PREG和和ACC 中的内容保持不变。中的内容保持不变。操作:操作: (PC)+1 PC; (PREG)移位后的高移位后的高16位位数据存储器地址。数据存储器地址。状态位:状态位: 受受PM的影响。的影响。例例79:SPH *,AR7 ;(设设PM=2,则,则PREG左移左移4位,高位丢失,低位位,高位丢失,低位填填0)将左移)将左移4位后的位后的PREG的高的高16位字送当前位字送当前AR指定的数指定的数据存储单元中,据存储单元中,AR7为下一次的辅助寄存器。为下一次
105、的辅助寄存器。70、保存、保存PREG低低16位字指令位字指令SPL句法:句法: SPL dma ;直接寻址;直接寻址 SPL ind,ARn ;间接寻址;间接寻址功能:功能: 将乘积寄存器将乘积寄存器(PREG)的内容按的内容按PM状态位指定的方式移位,把移状态位指定的方式移位,把移 位后的低位后的低16位数值存在被寻址的数据存储单元中。位数值存在被寻址的数据存储单元中。PREG和和ACC 中的内容保持不变。中的内容保持不变。操作:操作: (PC)+1 PC; (PREG)移位后的低移位后的低16位位数据存储器地址。数据存储器地址。状态位:状态位: 受受PM的影响。的影响。例例80:SPL
106、5 ;(设设DP=4,数据存储器地址为,数据存储器地址为200h27Fh,PM=2,则则PREG左移左移4位,高位丢失,低位填位,高位丢失,低位填0)将左移)将左移4位后的位后的PREG的低的低16位字送位字送205h单元单元72、存储长立即数至数据存储器指令、存储长立即数至数据存储器指令SPLK句法:句法: SPLK #lk,dma ;直接寻址;直接寻址 SPLK #lk,ind,ARn ;间接寻址;间接寻址功能:功能: 将将16位的立即常数送到被寻址的数据存储单元中。位的立即常数送到被寻址的数据存储单元中。操作:操作: (PC)+1 PC; lk 数据存储器地址数据存储器地址例:例:SPL
107、K #7FFFh,3 ;(设设DP=6,则数据存储器地址为,则数据存储器地址为300h37Fh) 将将7FFFh送到送到303h数据单元中数据单元中例例81:SPLK #1111h,*+,AR4 ;将;将1111h送到当前送到当前AR指指 定的数据定的数据存储单元中,当前存储单元中,当前AR内容加内容加1,AR4为下次为下次AR73、设置乘积移位模式指令、设置乘积移位模式指令SPM句法:句法: SPM constant 操作数中的操作数中的constant为数值为数值03,以确定乘积移位模式。,以确定乘积移位模式。功能:功能: 将数值将数值constant送到状态寄存器送到状态寄存器ST1的乘
108、积移位模式的乘积移位模式PM位位(ST1的的D1和和 D0位位),以控制乘积寄存器,以控制乘积寄存器(PREG)输出时的移位模式。输出时的移位模式。操作:操作: (PC)+1 PC; 常数常数(03) 乘积移位模式乘积移位模式PM位。位。状态位:状态位: 影响影响PM。例例82:SPM 3 ;将乘积移位模式位设置为;将乘积移位模式位设置为3(PM=11),此后,此后PREG的输出都将右移的输出都将右移6位位74、累加平方值指令、累加平方值指令SQRA句法:句法: SQRA dma ;直接寻址;直接寻址 SQRA ind,ARn ;间接寻址;间接寻址功能:功能: 将累加器的内容与按将累加器的内容
109、与按PM方式移位后的乘积寄存器的内容相加,结方式移位后的乘积寄存器的内容相加,结 果果存入累加存入累加 器中,并将被寻址的数据存储单元的内容求平方,结果存器中,并将被寻址的数据存储单元的内容求平方,结果存入乘积寄存器入乘积寄存器(PREG)中。中。操作:操作: (PC)+1 PC;(ACC)+被移位的被移位的(PREG) ACC:(数据存储器地址数据存储器地址) TREG:(TREG)X(数据存储器地址数据存储器地址) PREG状态位:受状态位:受OVM和和PM影响,影响影响,影响OV和和C。例例83: SQRA 30 ;(设设DP=6,则数据存储器地址为,则数据存储器地址为300h37Fh;
110、PM=0 则则PREG不移位不移位)将将ACC的内容与的内容与PREG的内容相加后送的内容相加后送 ACC,再将数据单元,再将数据单元31Eh的内容求平方后送的内容求平方后送PREG75、累减平方值指令、累减平方值指令SQRS句法:句法: SQRS dma ;直接寻址;直接寻址 SQRS ind,ARn ;间接寻址;间接寻址功能:功能: 将累加器的值减去按将累加器的值减去按PM方式移位的方式移位的PREG的值,结果存入累加器中,的值,结果存入累加器中,并将被寻址的数据存储器的内容求平方,结果存入并将被寻址的数据存储器的内容求平方,结果存入PREG中。中。操作:操作: (PC)+1 PC; (A
111、CC)-被移位的被移位的(PREG) ACC; (数据存储器地址数据存储器地址) TREG; (TREG)X(数据存储器地址数据存储器地址) PREG。状态位:状态位: 受受OVM和和PM影响,影响影响,影响OV和和C。例例84:SQRS *,AR5 ;(设设PM=0,则,则PREG不移位不移位)将将ACC的内容减去的内容减去PREG的内容,结果送的内容,结果送ACC,并将当前,并将当前AR指定的数据存储单指定的数据存储单元的内容求平方,结果送元的内容求平方,结果送PREG,并指定,并指定AR5为下次为下次AR76、保存状态寄存器指令、保存状态寄存器指令SST句法:句法: SST #m,dma
112、 ;直接寻址;直接寻址 SST #m ind,ARn ;间接寻址;间接寻址功能:功能: 将状态寄存器将状态寄存器ST0(m=0)或或ST1(m=1)的内容保存到指定的数据存储的内容保存到指定的数据存储单元中接寻址时,不论单元中接寻址时,不论ST0中的数据页面指针中的数据页面指针(DP)为何值,指定的为何值,指定的状态寄存器的内容总是被保存在状态寄存器的内容总是被保存在0页,并由页,并由dma给出低给出低7位地址。间位地址。间接寻址时,由当前接寻址时,由当前AR指定数据存储器的地址,此时状态寄存器的指定数据存储器的地址,此时状态寄存器的值可以保存到数据存储器的任何页面内。值可以保存到数据存储器的
113、任何页面内。操作:操作: (PC)+1 PC;(状态寄存器(状态寄存器STm)数据存储器地址。数据存储器地址。例例85:SST #0,96 ;将;将ST0的内容保存到数据存储器的内容保存到数据存储器60h单元中单元中77、带移位的减法指令、带移位的减法指令SUB句法:句法: SUB dma,shift ;直接寻址,左移;直接寻址,左移015位位 SUB dma,16 ;直接寻址,左移;直接寻址,左移16位位 SUB ind,shift,ARn ;间接寻址,左移;间接寻址,左移015位位 SUB ind,16,ARn ;间接寻址,左移;间接寻址,左移16位位 SUB #k ;短立即数寻址;短立即
114、数寻址 SUB #lk,shift ;长立即数寻址,左移;长立即数寻址,左移015位位功能:功能: 当使用短立即数寻址时,累加器的内容减去当使用短立即数寻址时,累加器的内容减去8位正常数,减法不受位正常数,减法不受SXM响,响,并且该指令不能重复执行。当使用直接、间接和长立即数寻址时,被寻址的并且该指令不能重复执行。当使用直接、间接和长立即数寻址时,被寻址的数据存储单元的内容或数据存储单元的内容或16位常数进行左移,移位时低位填位常数进行左移,移位时低位填0,高位用符号扩展,高位用符号扩展(SXM=1)或填或填0(SXM=0),然后将累加器的内容减去移位后的值,结果存入),然后将累加器的内容减
115、去移位后的值,结果存入累加器。如果减法结果产生借位,则进位位清累加器。如果减法结果产生借位,则进位位清0(C=0)。如果减法结果没有借。如果减法结果没有借位,当移位次数为位,当移位次数为015位时,进位位置位时,进位位置1(C=1);当移位次数为;当移位次数为16位时,进位位时,进位位保持不变。位保持不变。操作:操作: (PC)+1 PC; 直接或间接寻址,左移直接或间接寻址,左移015位位 (ACC)-(数据存储器地址数据存储器地址)X2shift) ACC; 直接或间接寻址,左移直接或间接寻址,左移16位位 (ACC)-(数据存储器地址数据存储器地址)X216) ACC; 短立即数寻址短立
116、即数寻址 (ACC)-k ACC;长立即数寻址,左移长立即数寻址,左移015位位 (ACC)-lk*2shift ACC。状态位:指令影响状态位:指令影响C和和OV状态位。在直接、间接、长立即数寻址方式下,指状态位。在直接、间接、长立即数寻址方式下,指令受令受SXM和和OVM的影响,在短立即数寻址方式下,指令受的影响,在短立即数寻址方式下,指令受OVM的影响。的影响。例例86:SUB 50h78、带借位的减法指令、带借位的减法指令SUBB句法:句法: SUBB dma ;直接寻址;直接寻址 SUBB ind,ARn ;间接寻址;间接寻址功能:功能: 将累加器的值减去被寻址的数据存储单元的内容及
117、进位位的逻辑反将累加器的值减去被寻址的数据存储单元的内容及进位位的逻辑反值。减法有借位时值。减法有借位时C=0,没有借位时,没有借位时C=1。该指令可实现多精度减。该指令可实现多精度减法运算。法运算。操作:操作:(PC)+1 PC; (ACC)-(数据存储器地址数据存储器地址)-(C的逻辑反的逻辑反) ACC。状态位:状态位: 受受OVM影响,不受影响,不受SXM影响;影响影响;影响C和和OV。例例88: SUBB *79、正数的减法指令、正数的减法指令SUBC句法:句法: SUBC dma ;直接寻址;直接寻址 SUBC ind,ARn ;间接寻址;间接寻址功能功能:如果累加器的内容和被寻址
118、的数据存储单元的内容均为正数时,如果累加器的内容和被寻址的数据存储单元的内容均为正数时,SUB做减做减法运算,将累加器的内容减去该数据单元的内容。若减法结果大于或等于法运算,将累加器的内容减去该数据单元的内容。若减法结果大于或等于0,则结果乘,则结果乘2并加并加1送累加器;若减法结果小于送累加器;若减法结果小于0,则将原累加器的内容乘,则将原累加器的内容乘以以2送累加器。送累加器。重复执行重复执行16次次SUBC指令可实现指令可实现16位正数的除法运算,方法如下:将正的位正数的除法运算,方法如下:将正的16位被除数放在累加器的低位被除数放在累加器的低16位,累加器的高位,累加器的高16位清位清
119、0;正的;正的16位除数放位除数放在被寻址的数据存储单元中,执行在被寻址的数据存储单元中,执行SUBC指令指令16次,最后一次次,最后一次SUBC指令指令完成后,所得的商放在累加器的低完成后,所得的商放在累加器的低16位中,余数放在累加器的高位中,余数放在累加器的高16位中。位中。 操作:若操作:若(ACC)0且且(数据存储地址数据存储地址)0则则 (PC)+1 PC; (ACC)-(数据存储器地址数据存储器地址)X215 ALU输出:输出: 若若ALU输出输出0,则,则(ALU输出输出)X2+1 ACC,否则,否则(ACC)X2 ACC。状态位:影响状态位:影响C和和OV。注意:注意:若累加
120、器和或数据单元的内容为负数,则不能用若累加器和或数据单元的内容为负数,则不能用SUBC指令实现除法。指令实现除法。 SUBC指令影响指令影响OV但不受但不受OVM的影响,执行该指令时累加器不会因正的影响,执行该指令时累加器不会因正 溢或负溢而饱和。溢或负溢而饱和。 进位位进位位C按正常方式变化,若相减结果产生借位,则按正常方式变化,若相减结果产生借位,则C=0,若没有借位则,若没有借位则 C=I。例例89:SUBC 2 ;(设设DP=6,则数据存储器地址为,则数据存储器地址为300h37Fh)累加器的内容累加器的内容减去左移减去左移15次后的次后的302h单元的内容,结果小于单元的内容,结果小
121、于0,则累加器的内,则累加器的内容乘以容乘以280、减法指令、减法指令SUBS句法:句法: SUBS dma ;直接寻址;直接寻址SUBS ind,ARn ;间接寻址;间接寻址功能:累加器的内容减去被寻址的数据存储单元的内容,无论功能:累加器的内容减去被寻址的数据存储单元的内容,无论SXM为何值,为何值,数据存储单元的内容都作为无符号数处理,所以不进行符号扩展。累加器数据存储单元的内容都作为无符号数处理,所以不进行符号扩展。累加器的内容仍为有符号数。的内容仍为有符号数。 当当SXM=0,移位次数为,移位次数为0时,时,SUBS指令与指令与SUB指令的结果相同。若指令的结果相同。若相减结果产生借
122、位,相减结果产生借位, 则则C=0,若没有借位则,若没有借位则C=1。操作:操作: (PC)+1 PC: (ACC)-(数据存储器地址数据存储器地址) ACC。状态位:影响状态位:影响OV和和C,受,受OVM影响,不受影响,不受SXM影响。影响。例例90: SUBS 2 :(设设DP=16,则数据存储器地址为,则数据存储器地址为800h87Fh)将将ACC的内容减去数据存储器的内容减去数据存储器802h单元的内容,结果送单元的内容,结果送ACC81、带移位的减法指令、带移位的减法指令SUBT(TREG决定移位次数决定移位次数)句法:句法: SUBT dma ;直接寻址;直接寻址 SUBT in
123、d,ARn ;间接寻址;间接寻址功能:功能: 累加器减去左移后的数据存储单元的内容,结果送累加器。左移位数由暂累加器减去左移后的数据存储单元的内容,结果送累加器。左移位数由暂时由暂时寄存器时由暂时寄存器(TREG)的低的低4位指定,即可左移位指定,即可左移015位。移位时低位填位。移位时低位填 0,高位填,高位填0(SXM=0) 或符号扩展或符号扩展(SXM=1)。若减法结果产生借位,则。若减法结果产生借位,则 C=0,否则,否则C=1。操作:操作: (PC)+1 PC: (ACC)-(数据存储器地址数据存储器地址)X2TREG(30) ACC。 若若SXM=0,则,则(数据存储器地址数据存储
124、器地址)不进行符号扩展。不进行符号扩展。 若若SXM=I,则,则(数据存储器地址数据存储器地址)进行符号扩展。进行符号扩展。状态位:受状态位:受SXM和和OVM影响,影响影响,影响OV和和C。例例91:SUBT 07Fh ;(设设DP=5,则数据存储器地址为,则数据存储器地址为280h一一2FFh)将累加器将累加器的内容减去左移的内容减去左移8次后的次后的2FFh单元的内容,结果送累加器单元的内容,结果送累加器82、读程序存储器指令、读程序存储器指令TBLR句法:句法: TBLR dma ;直接寻址;直接寻址 TBLR ind,ARn ; 间接寻址间接寻址功能:功能: 把程序存储单元的内容把程
125、序存储单元的内容(一个字一个字)传送到被寻址的数据存储单元传送到被寻址的数据存储单元 中,程序存储单元的地址由累加器的低中,程序存储单元的地址由累加器的低16位字指定。当用位字指定。当用RPT 指令重复时,指令重复时,TBLR指令成为单周期指令,可传送一组数据。指令成为单周期指令,可传送一组数据。操作:操作: 如图如图512所示。所示。例例92: TBLR *,AR7 ;将累加器指定的程序存储单元;将累加器指定的程序存储单元24h的内容的内容送到当前送到当前AR指定的数据存储单元指定的数据存储单元300h中,并中,并指定下次指定下次AR为为AR783、写程序存储器指令、写程序存储器指令TBLW
126、句法:句法: TBLW dma ;直接寻址;直接寻址TBLW ind,ARn ;间接寻址;间接寻址功能:功能: 将指令指定的数据存储单元的内容将指令指定的数据存储单元的内容(1个字个字)传送到程序存储器中,程序存储传送到程序存储器中,程序存储器地址由累加器的低器地址由累加器的低16位确定。位确定。操作:操作: 该指令与该指令与TBLR指令操作区别仅在于数据的传送方向不同。具体操作参见指令操作区别仅在于数据的传送方向不同。具体操作参见 TBLR指令操作流程,其中指令操作流程,其中“(pma) 数据存储器数据存储器”改为改为“(数据存储器数据存储器) pma”即可。即可。例例93:TBLW 5 ;
127、(设设DP=32,则数据存储器地址为,则数据存储器地址为1000h一一107Fh)将数据将数据存储单元存储单元1005h的一个字送到累加器指定的程序存储单的一个字送到累加器指定的程序存储单元元257h中中85、“逻辑异或逻辑异或”指令指令XOR句法:句法: XOR dma ;直接寻址;直接寻址XOR ind,ARn ;间接寻址;间接寻址XOR #lk,shift ;长立即数寻址左移;长立即数寻址左移015位位XOR #lk,16 ;长立即数寻址左移;长立即数寻址左移16位位功能:功能: 直接或间接寻址时,将累加器的低直接或间接寻址时,将累加器的低16位和被寻址的数据存储单元的内容作位和被寻址的
128、数据存储单元的内容作“逻辑异或逻辑异或”操作,结果存入累加器的低操作,结果存入累加器的低16位,累加器的高位,累加器的高16位不变。立即位不变。立即寻址时,长立即数左移,高位和低位均填寻址时,长立即数左移,高位和低位均填0,然后和累加器中的,然后和累加器中的32位数作位数作“逻辑异或逻辑异或”操作。操作。操作:操作:(PC)+1 PC:直接或间接寻址直接或间接寻址(ACC(150)XOR(数据存储器地址数据存储器地址) ACC(150) (ACC(3116) ACC(3116)或长立即数寻址左移或长立即数寻址左移015位位 (ACC(310)XOR(lkX2shift) ACC(310)或长立
129、即数寻址左移或长立即数寻址左移16位位(ACC(310)XOR(lkX216) ACC(310)。86、装载累加器指令、装载累加器指令ZALR句法:句法: ZALR dma ;直接寻址;直接寻址 ZALR ind,ARn ;间接寻址;间接寻址功能:将数据存储单元的内容送到累加器的高功能:将数据存储单元的内容送到累加器的高16位,累加器的低位,累加器的低15位位(D14-D0)清清0,D15位置位置1。操作:操作:(PC)+1 PC; (数据存储器地址数据存储器地址) ACC(3116);8000h ACC(150)。例例94: ZALR *-,AR4 ;将当前;将当前AR指定的数据存储单元指定的数据存储单元FF00h的内的内容送累加器的高容送累加器的高16位,位,8000h送累加器的低送累加器的低16位,当前位,当前AR减减1,下次的,下次的AR为为AR4