DSP课件第五章TMS320LF240x汇编指令系统

上传人:san****019 文档编号:15982806 上传时间:2020-09-15 格式:PPT 页数:120 大小:1.08MB
收藏 版权申诉 举报 下载
DSP课件第五章TMS320LF240x汇编指令系统_第1页
第1页 / 共120页
DSP课件第五章TMS320LF240x汇编指令系统_第2页
第2页 / 共120页
DSP课件第五章TMS320LF240x汇编指令系统_第3页
第3页 / 共120页
资源描述:

《DSP课件第五章TMS320LF240x汇编指令系统》由会员分享,可在线阅读,更多相关《DSP课件第五章TMS320LF240x汇编指令系统(120页珍藏版)》请在装配图网上搜索。

1、第5章 TMS320LF240 x汇编指令系统,4.1.1 指令集分类,(1)累加器、算术和逻辑指令(26条) (2)辅助寄存器和数据页面指针指令(6条) (3)TREG、PREG和乘法指令(20条) (4)转移指令(12条) (5)控制指令(15条) (6)I/O和存储器操作指令(8条),4.1 汇编指令集概述,4.1.2 指令常用符号定义,ACC 累加器。 AR 辅助寄存器。 ARX LAR和SAR指令中使用的3位的值,表示要加载( LAR) 或要保存( SAR )哪个辅助寄存器的值。 BITX 在BIT测试指令中出现,代表4位二进制数,表示测试数据存储 单元的某一位,若测试D1位,则BI

2、TX为1110(1110B=15- 1)。 CM 一个2位的值。 CM=00-测试是否当前AR=AR0 CM=01-测试是否当前ARAR0 CM=11-测试是否当前ARAR0,IAAA AAAA 左边的I表示1位,反映使用直接寻址(I=0)还是间接 寻址(I=1)。当使用直接寻址时,7个A 是数据存储器 地址的低7位;对于间接寻址, 7个A 是控制辅助寄存 器操作的7位。 IIII IIII 短立即寻址中使用的8位常数。 I IIII IIII LDP指令在短立即寻址中使用的9位常数。 I IIII IIII IIII MPY指令在短立即寻址中使用的13位常数。 INTR# 表示数值031的5

3、位值。INTR指令使用该值把程序转移 到32个中断矢量地址之一。 PM SPM指令拷贝到状态寄存器ST1中PM位的2位值。 SHF 3位的左移值。 SHFT 4位的左移值。,TP 条件执行指令用来表示以下4种条件的2位值。 BIO引脚为低-TP=00;TC=1-TP=01; TC=0-TP=10;无条件-TP=11。 ZLVC ZLVC 两个4位字段,每位表示以下条件: ACC=0-Z;ACC0-L;溢出-V;进位-C +1word 双字操作码的第2个字。包含16位常数。根据指令不同该 常数可能是长立即数、程序存储器地址、I/O端口或I/O映 射的寄存器地址。,4.2.1语法,指令助记符 ;操

4、作数缺省 指令助记符 dma ,shift ;左移015位直接寻址 指令助记符 dma,16 ;左移16位直接寻址 指令助记符 ind,shift,ARn ;左移015位间接寻址 指令助记符 ind,16,ARn ;左移16位间接寻址 指令助记符 #k ;短立即寻址 指令助记符 #lk,shift ;左移015位长立即寻址,4.2 指令句法描述,说明,(1)指令助记符是指令中的关键字,表示本条指令的操作类型,不能缺省。 (2)指令助记符与操作数之间要用空格分开,各操作数之间要用“,”分开,操作数可缺省。黑体字符表示在该类型的指令中必须写出的字符,其他字符为变量,指令中用数字和字符代替。各字符的

5、含义如下:,dma 数据存储器地址的低7位,与数据页面指针(DP)构成一个完 整的16位数据存储器地址。 shift 左移015位。 ARn n为07, ARn指定下次的辅助寄存器。 Ind 选择*、*+、*-、*0+、*0-、*BR0+、*BR0- 7中符号之一。 # 立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为一 个立即数;数值前面不带“#”,表示该数值为数据存储器地址的 低7位。 k 8位短立即数 lk 16位长立即数 ,x 操作数x 是可选项 x1,x2 操作数x1 、x2是可选项,操作部分提供了指令完成的操作序列,即描述当指令执行时所进行的处理过程。 (r) 寄存器或存储

6、单元r的内容 xy 数值x被赋予寄存器或存储单元y r(n:m) 寄存器或存储单元r中的位n到位m (r(n:m))寄存器或存储单元r中的位n到位m的内容 nnh 指出nn表示一个十六进制数,4.2.2 操作,4.2.3 举例,ADD *+,0,AR0,4.3 指令集,1、取累加器绝对值指令 ABS 句法:ABS 功能:对累加器ACC的内容取绝对值后送回累加器,并将进位位C清0 操作: (PC)+1PC; (ACC) ACC;0 C 例1:ABS,2、带移位的加法指令ADD 句法: ADD dma ,shift ADD dma,16 ADD ind ,shift,ARn ADD ind,16,

7、 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 ;设DP=6,则数据存储器地址为0300h037Fh, (ACC)+(数据存储器0301h)*21 ACC 例3:ADD *+,0,AR0 例4:ADD #1h 例5:ADD #1111h,1,3、带进位加法指令ADD

8、C 句法: ADDC dma ADDC ind,ARn 功能:将被寻址的数据存储器单元的内容与累加器的内容及进位位相 加,结果送至累加器。 操作: (PC)+1PC; (ACC) +(数据存储器地址)+(C) ACC 状态位:影响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

9、ind,ARn 功能:将被寻址的数据存储器单元的内容与累加器的内容相加,结果送至累加器。 操作:(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 句法: ADDT dma ADDT ind,ARn 功能:将被寻址的数据存储器单元的内容左移015位后与累加器的内容相 加,结果送至累加器,移位时低位填0,高位填0(SXM=0)或

10、符号 扩展(SXM=1)。 操作: (PC)+1PC; (ACC) +(数据存储器地址)* 2(TREG(30) ACC 状态位:影响C和OV位,受OVM 和SXM状态位影响。若相加结果产生进位,则C=1,否则C=0。,例10:ADDT 7Eh ;(设DP=4,则数据存储器地址为0200h027Fh, 设SXM=0)(ACC)+(027Eh)*2(TREG(30) ACC 例11:ADDT *-,AR4,6、辅助寄存器增量指令ADRK 句法:ADRK #k 功能:将8位立即数按右对齐方式与当前辅助寄存器AR的内容相加,结 果送至当前辅助寄存器。 操作: (PC)+1PC; (当前AR )+ 8

11、位立即数当前AR 例12:ADRK #80h,7、与指令AND 句法: AND dma AND ind ,ARn AND #lk ,shift AND #lk ,16 功能:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储器单元的内容进行逻辑与操作,结果送累加器的低16位,累加器的高16位清0。如果使用长立即数寻址,则16位长立即数左移016位后和32位的累加器相与,结果送累加器。 操作:(PC)+1PC; (ACC(150) ) AND (数据存储器地址) ACC(150); 0 ACC(3116) (ACC(310) ) AND lk * 2 shift ACC,例13:AND

12、16 ; 设DP=4,则数据存储器地址为0200h027Fh, (ACC(150)AND(0210h) ACC (150) 0 ACC (3116) 例14:AND * 例15:AND #00FFh,4,8、加法指令APAC 句法:APAC 功能:将累加器内容与移位后的乘积寄存器的内容相加,结果送至累加 器。PREG的移位方式由ST1中PM为确定。 操作: (PC)+1PC; (ACC) +移位后的(PREG) ACC 状态位:影响C和OV位,受OVM 和PM状态位影响。不受SXM 状态位影响。 例16:APAC,9 、无条件转移指令B 句法: B pma ,ind,ARn 功能: 程序无条件

13、转移到指令指定的程序存储器地址(pma),并按指 令要求修改当前辅助寄存器和ARP的内容. 操作: pmaPC (pma可以是符号地址或数值地址); 按指令要求修改当前AR和ARP。 例17: B 16,10、按累加器内容转移指令BACC 句法: BACC 功能: 程序无条件转移到累加器的低16位指定的地址中执行。 操作: ACC(150) PC 例18: BACC ;(设累加器的值是0203h)0203hPC, 程序从0203h处继续 执行。,11、辅助寄存器不等于零转移指令BANZ 句法: BANZ pma,ind,ARn) 功能: 如果当前辅助寄存器(AR)的内容不为0,则程序转移到pm

14、a指定的 程序存储器地址处继续执行;如果当前AR的内容为0,则执行下一 条指令;修改当前AR的内容。 操作: 若(当前AR)0,则pmaPC,否则(PC)+2PC; 按指令要求的方式修改当前的AR的内容和ARP,若不指定修改当 前的AR的方式,则当前AR减半(若将当前AR作为循环计数器,可执 行(当前AR)+1次循环). 例19:BANZ PGM0,12、条件转移指令BCND 句法: BCND pma,cond1,cond2 操作数中的cond1,cond2,为需满足的条件。 功能: 如果指令中指定的条件都满足,则程序转移到指令给出的程序存 储器地址(pma),只要有一个条件不满足就顺序执行下

15、面的指令。 操作: 如果cond1,cond2,均满足,则pmaPC,否则PC+2PC。 注意: 有些条件是不能组合在一起使用的。 例20: BCND PGM191,LEQ,C,13、测试指令BIT 句法: BIT dma, bit code ;直接寻址 BIT ind, bit code,ARn ;间接寻址 功能: 把数据存储单元中被指定位(即测试位)的值送到状态寄存器 ST1中的TC位,即如果测试该位为1,则TC就置1。 指令中bitcode的值与数据存储单元被指定的测试位的关系 是:bit number=15- bit code 操作: (PC)+IPC; (数据存储单元bit numb

16、er) TC。 状态位:影响TC状态位。 例20: BIT *,0,AR1,14、测试指令BITT(由TREG指定bit code) 句法: BITT dma ;直接寻址 BITT ind,ARn ;间接寻址 功能: 把数据存储单元中被指定位的值送到状态寄存器ST1中的TC位。 TREG低4位(D3D0)表示的bit code值与数据存储单元被指定的测 试位(bit number)的关系与BIT指令相同。 操作: (PC)+I PC: (数据存储单元bit number) TC。 状态位: 影响TC位。 例21: BITT 00h,15、数据存储器串传送指令BLDD 句法: BLDD 源地址,

17、目的地址 ; 通用格式 BLDD #lk, dma ;源地址为长立即数,直接寻址 BLDD #lk,ind,ARn ;源地址为长立即数,间接寻址 BLDD dma,#lk ;目的地址为长立即数,直接寻址 BLDD ind,#lk, ARn ;目的地址为长立即数,间接寻址 功能: 将“源地址”指定的数据存储器单元中的内容传送到“目 的地址” 指定 的数据存储器单元中。,操作:,注意: 复位时,重复计数器的RPTC的值为0,可用RPT指令装入计数值(N)。RPT指令与间接寻址方式的BLDD指令一起使用,可传送数据存储器中的 N+1个字。 执行BLDD指令时,无论长立即数代表源地址,还是代表目的地址

18、,均保存在PC中,每次重复时PC加1,从而访问一串地址(目的地址或源地址)。另一串数据的地址(源地址或目的地址)通过间接寻址,按指令指定的方式修改当前AR和ARP,从而实现两块数据区的数据传送。 如果使用直接寻址,因数据地址是常量,不能改变,所以重复执行BLDD 指令的结果是仅对一个单元写数据或对一串地址写同一个数据。 源数据串和目的数据串不要求同在片内或同在片外。 当与RPT指令一起使用时,一旦启动了RPT流水线,BLDD就变成了单周期指令,此时中断被禁止.,例22:BLDD #300h,20h ;设DP=6,则数据存储器地址为 0300h037Fh,将0300h的内容传送到320h 例23

19、:BLDD *+,#321h, AR3,16、程序存储器串传送指令BLPD 句法: BLPD 源地址,目的地址 ;通用格式 BLPD #pma,dma ;源地址为长立即数,直接寻址 BLPD dma,ind,ARn ; 源地址为长立即数,间接寻址 功能:将“源地址”指定的程序存储单元中的内容传送到“目的地址”指定的数 据存储单元中。 操作:如指令15,将第二框中“lkPC改为“pmaPC,其余均相同。,注意: BLPD指令与BLDD指令有许多相似之处,BLDD指令中的注意事 项同样适合于BLPD指令。 与BLDD不同的是,BLPD指令的源地址必须使用长立即数,并固定指向程序存储器,而目的地址可

20、由数据存储器的地址或辅助寄存器指定。当重复BLPD指令时,源地址保存在PC中,每次重复PC加1。目的地址若由辅助寄存器指定,则按指令指定方式修改,从而实现程序区到数据区的数据传送。目的地址若由数据存储器地址 (常数)确定,则不能修改,此时重复执行BLPD指令将没有什么意义.,例24:BLPD #800h,00h ;设DP=6,则数据存储器地址为 0300h037Fh,将程序存储器800h的内容 传送到300h 例25:BLPD #800h,*,AR7,17、无条件调用指令(由累加器指定)CALA 句法: CALA 功能: 无条件调用由累加器低16位指定的子程序。利用该指令可根据计算 结果调用子

21、程序。 操作: (PC)+1堆栈栈顶TOS; ACC的低16位PC。 例26: CALA,18、子程序调用指令CALL 句法: CALL pam,ind1,ARn ;间接寻址 功能: 无条件调用由指令操作数指定的子程序,并按指令要求修改当前辅 助寄存器和ARP的内容。 操作: (PC)+2堆栈栈顶TOS; pamPC; 按指令要求修改(当前AR)和(ARP)。 例27: CALL 191,*+,AR0,19、条件调用指令CC 句法: CC pma,cond1,cond2, 功能: 如果指定的条件都满足,则调用pma指定则子程序。 操作: 如果cond1, cond2 ,都满足,则(PC)+2堆

22、栈栈顶TOS, pamPC,否则PC+2。 例28: CC 0BFh,LEQ,C ;若累加器的内容小于或等于0,且进位位为 1,则调用程序地址0BFh 处的子程序,只要 有一个条件不满足,则继续执行CC下面的指 令。,20、清0指令CLRC 句法: CLRC control bit 操作数中controlbit选择以下控制位之一: C 状态寄存器STI中的进位位(D9); CNF 状态寄存器STl中的RAM配置控制位(D12) INTM 状态寄存器ST0中的中断模式位(D9); OVM 状态寄存器ST0中的溢出模式位(D11): SXM 状态寄存器STl中的符号扩展模式位(DiO); TC 状

23、态寄存器STl中的测试控制标志位(D11); XF 状态寄存器STl中的XF引脚状态位(D4): 功能: 把指定的控制位清0。 操作: (PC)+1PC; 0control bit。,21、累加器取反指令CMPL 句法: CMPL 功能: 将累加器中的内容逻辑取反。 操作: (PC)+1PC: (ACC) ACC。 例28: CMPL,22、比较指令CMPR 句法: CMPR CM 功能: 将当前辅助寄存器的内容与AR0的内容进行比较: 若CM=0,则比较是否(当前AR)=(AR0); 若CM=I,则比较是否(当前AR)(AR0); 若CM=3,则比较是否(当前AR) (AR0); 如果条件为

24、真,则ST1中的TC位置1,如果条件为假,则TC清0. 操作: (PC)+1PC, 。 完成由CM值(0-3)指定的当前AR和AR0的比较,若为真,则1TC,若为假,则 0TC。 注意: 比较时辅助寄存器的值作为无符号整数看待。,23、数据移动指令DMOV 句法: DMOV dma ;直接寻址 DMOV ind,ARn ;间接寻址 功能: 将指定的数据存储单元的内容复制到地址加1的单元。 操作: (PC)+1 PC数据; (数据存储器地址) 数据存储地址+1。 状态位: 受CNF状态位影响。 注意: DMOV指令用于片内任何配置的数据存储器RAM块,数据的移动 可以跨越块的边界。 DMOV指令

25、不能用于外部数据存储器,如果指令指定了外部存储器 地址,执行时只读指定的存储器单元,但不进行其他操作。 数据移动功能对于实现数据信号处理中的Z-1延时很有用。,例29: DMOV *,AR1 ;将当前辅助寄存器指定的数据存储器单元 内容复制到地址加1单元,然后将下次辅助 寄存器指定为AR1,24、暂停指令IDLE 句法: IDLE 功能: 程序停止执行,DSP芯片进入低功耗模式,直到发生硬件复位、硬件NMI或未被屏蔽的硬件中断(外部的或内部的)。 操作: (PC+1) PC; 等待硬件中断。 状态位: 受INTM的影响。 注意: 如果因NMI或复位使芯片退出低功耗模式, 则执行0024h或00

26、00h单元的中断服务程序。 不管状态寄存器ST0中的中断模式位INTM为0或1,未被屏蔽的中断均可使芯片退出低功耗模式,但退出后的操作则取决于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空间的一串字到 数据存储器。 操作: (PC)+2PC; (PA) 数据存储器地址。

27、 例30: IN *,5h ;从端口地址为5h的外设中读入一个字,并将该字保 存到由当前辅助寄存器指定的数据存储单元中,26、软中断指令INTR 句法: INTR k 操作数中k为数值031,表示中断矢量号。 功能: 程序控制转换到与k对应的中断矢量单元(该单元存放的转移指令可引导相应的中断服务程序)。 操作: (PC)+1堆栈: k值对应的中断矢量地址PC。 状态位: 指令影响INTM状态位,但不受INTM的影响。 注意: INTR指令是软中断指令,利用该指令可从程序的任意位置转移 到任意一种中断服务程序中。 INTM位和中断屏蔽位都不影响INTR指令。 当响应INTR中断时,INTM位置1

28、,禁止可屏蔽中断,但不影响 IFR标志。,27、装载累加器指令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决定,SXM=1,用符号扩展;SXM=0,则填0。 操作:(PC)+1 PC 或 (PC)+2 PC(长立即数寻址); (数据存储器地址) X2

29、shiftACC 或 lkX2shiftACC(长立即数寻址)。 状态位: 指令受SXM影响。,例31: LACC *,4 ;(设SXM=0)将当前AR指定的数据存储器的内容 左移4位后送累加器,28、装载累加器低16位指令LACL 句法: LACL dma ;直接寻址 LACL ind,ARn ;间接寻址 LACL #k ;短立即数寻址 功能: 将指定的数据存储单元的内容或用0扩展的8位常数送到累加器的低16位,累加器的高16位填0。 操作: (PC)+1 PC; 直接或间接寻址 (数据存储器地址) ACC(150);0 ACC(3116); 或短立即数寻址 k ACC(70);0 ACC(

30、318)。 状态位: 不受SXM影响。,例32: LACL #10h;将10h送到累加器的低8位,累加器的D31D8填0,29、装载累加器指令LACT(移位次数由TREG确定) 句法: LACT dma ;直接寻址 LACT ind,ARn ; 间接寻址 功能: 将指定的数据存储单元的内容左移后送到累加器。左移次数由 TREG的低4位确定(可移动0l5位)。移位时 低位填0,高位由SXM 决定。 操作: (PC)+1 PC; (数据存储器地址)X2(TREG(3:0) ACC。 状态位: 受SXM影响。 例33: LACT *-,AR3,30、装载辅助寄存器指令LAR 句法: LAR ARx,

31、dma ;直接寻址 LAR ARx,ind,ARn ;间接寻址 LAR ARx,#k ;短立即数寻址 LAR ARx,#lk ;长立即数寻址 操作数中x为数值07,表示要装载的辅助寄存器。 功能: 将指定的数据存储单元中的内容或8位、16位常数送到指令指定的辅助寄存器ARx中。不论SXM为何值,所指定的常数均为无符号整数。 操作: (PC)+1PC; 直接或间接寻址 (数据存储器地址) ARx; 或短立即数寻址 kARx (ARx的高位填0); 或长立即数寻址:lkARx。 注意: 如果指令使用间接寻址,且指令指定的AR与ARP所指定的AR相同, LAR指令仅对该AR进行装载操作,而不对其进行

32、增或减量修改。,30、装载辅助寄存器指令LAR 句法: LAR ARx,dma ;直接寻址 LAR ARx,ind,ARn ;间接寻址 LAR ARx,#k ;短立即数寻址 LAR ARx,#lk ;长立即数寻址 操作数中x为数值07,表示要装载的辅助寄存器。 功能: 将指定的数据存储单元中的内容或8位、16位常数送到指令指定的辅助寄存器ARx中。不论SXM为何值,所指定的常数均为无符号整数。 操作: (PC)+1PC; 直接或间接寻址 (数据存储器地址) ARx; 或短立即数寻址 kARx (ARx的高位填0); 或长立即数寻址:lkARx。 注意: 如果指令使用间接寻址,且指令指定的AR与

33、ARP所指定的AR相同, LAR指令仅对该AR进行装载操作,而不对其进行增或减量修改。,例34: LAR AR4,*- 例35: LAR AR0,16 ;设DP=6,则数据存储器地址为0300h037Fh, 将310h单元的内容传送到AR0中,31、装载DP指令LDP 句法: LDP dma ;直接寻址 LDP ind,ARn ;间接寻址 LDP #k ;短立即数寻址 功能: 将指定的数据存储单元中的低9位或9位立即数值送到状态寄存 器ST0中的DP(LST指令也可加载DP)。 操作: (PC)+1PC; (数据存储器地址)的低9位DP(直接或间接寻址) 或kDP(短立即数寻址)。 状态位:影

34、响DP。 例36 : LDP *,AR5,32、装载PREG高16位指令LPH 句法: LPH dma ;直接寻址 LPH ind,ARn ;间接寻址 功能: 将指定的数据存储单元的内容送到PREG的高16位,PREG的低 16位不变。在中断和子程序调用时,可用LPH指令恢复PREG的高 位字。 操作: (PC)+1PC; (数据存储器地址) PREG(3116)。 例37:LPH *,AR6 ;将当前AR指定的数据存储单元的内容送到PREG 高16位, AR6为下次的辅助寄存器。,33、装载状态寄存器指令LST 句法: LST #m,dma ;直接寻址 LST #m,ind,ARn ;间接寻

35、址 操作数m=0表示要装载ST0,m=1表示要装载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。,例

36、38: MAR *,AR0 ;0ARP,下次辅助寄存器为AR0 LST #0,*,AR1 ;将当前辅助寄存器AR0指定的数据存储单元的内容送到 ST0中。原ST0的D10和D9仍为原值。指定AR1为下次 辅助寄存器的操作忽略,同时原来的ARP值也不复制到 ARB中。 例39: LST #1,00h,34、装载TREG指令 LT 句法: LT dma ;直接寻址 LT ind,ARn ;间接寻址 功能: 将指定的数据存储单元的内容送到TREG中。 操作: (PC)+1PC; (数据存储器地址) TREG。 例40: LT 24 ;(设DP=8,则数据存储器地址为0400h047Fh)将418h单

37、元 的内容送TREG。,35、装载TREG和乘积累加指令LTA 句法: LTA dma ;直接寻址 LTA ind,ARn ;间接寻址 功能: 将指定的数据存储单元的内容送到TREG;按PM状态位指定的方式 对乘积寄存器(PREG)的内容进行移位,并把移位后的值与累加器相 加,结果送累加器。若相加结果有进位,则C=1;若相加结果无进 位,则C=0。 操作: (PC)+1PC; (数据存储器地址) TREG; (ACC)+移位后的(PREG) ACC。 状态位:受PM和OVM影响,影响C和OV。 例41: LTA 36;(设DP=6,则数据存储器地址为0300h037Fh;PM=0,不移位)将3

38、24h单元的内容送TREG,并将PREG的内容与累加器相加,结果送累加器,36、装载TREG及数据移动,乘积累加指令LTD 句法: LTD dma ;直接寻址 LTD ind,ARn ;间接寻址 功能: 将指定的数据存储单元的内容送到TREG和该地址加1的单元中;按 PM状态位指定的方式对乘积寄存器(PREG)的内容进行移位,并把移 位后的值与累加器相加,结果送累加器。若相加结果有进位,则 C=1;若相加结果没有进位,则C=0。 操作: (PC)+1PC; (数据存储器地址) TREG; 数据存储器地址) 数据存储器地址十1; (ACC)+移位后的(PREG) ACC。 状态位:受PM和OVM

39、影响,影响C和OV。,注意:该指令适用于所有配置为数据存储器的片内RAM,并可以跨越相邻块的边界连续进行数据移动。 如果将LTD指令用于外部数据存储器,其作用与LTA相同,即不执行操作(不作数据移动)。 例42: LTD *,AR3 :(设PM=0)将当前AR指定的数据存储单元的内容送TREG 和该地址内容相加,结果送累加器,并指定AR3为下次 AR,37、装载TREG和累加器指令LTP 句法: LTP dma ;间接寻址 LTP ind,ARn ;直接寻址 功能: 将指定的数据存储单元的内容送到TREG。并将PREG的内容按PM 状态位指 定的方式移位后送到累加器中。 操作: (PC)+1P

40、C; (数据存储器地址) TREG; 移位后的(PREG) ACC。 状态位: 受PM影响。 例43: LTP 36 ;(设DP=6,则数据存储器地址为0300h037Fh。PM=0,乘积不移位)将324h单元的内容送TREG,并将乘积寄存器(PREG)的内容送ACC,38、装载TREG和乘积累减指令LTS 句法: LTS dma ;直接寻址 LTS ind,ARn ;间接寻址 功能: 将指定的数据存储单元的内容送TREG;再用累加器的内容减去移位后(PM状态位指定的方式)的PREG的内容,结果送累加器。如果相减的结果产生借位,则进位位C清0,若无进位,则C置1。 操作: (PC)+1PC;

41、(数据存储器地址) TREG; (ACC)-移位后的(PREG) ACC。 状态位: 受PM和OVM影响,影响C和OV。 例44: LTS *,AR2 ;(设PM=0,则乘积不移位)将当前AR指定的数据存储单元的内容送TREG;累加器的内容减去乘积寄存器的内容,结果送累加器,AR2为下次AR,39、累加-乘指令MAC 句法: MAC pma,dma ;直接寻址 MAC pma,ind,ARn ;间接寻址 功能:将前次乘积(PREG的内容)按PM指定的方式移位后结果送累加器。与累加器相加;如果相加产生进位,则C=I:若结果未产生进位,则C=0。 将指定的数据存储单元的内容送到TREG。 将TRE

42、G中数据存储单元的内容乘以指定的程序存储器地址中的内容。 每重复MAC指令一次,在PC中的程序存储器地址加1。因此可以访问程序存储器中的一串操作数。如果使用间接寻址指定数据存储器地址,则每次重复时就可能访问新的数据存储器地址。如果使用直接寻址,指定的数据存储器地址是常数,重复时不对其进行修改。 重复执行MAC指令可对两组数据(或一组数据与一个常数)进行乘-累加运算。重复时,RPT流水线一旦启动,它就变成了单周期指令。 状态位:受PM和OVM影响,影口向C和OV。 注意:MAC指令所寻址的数据和程序存储器单元可以是任意非保留的片内或片外存储单元。,例45: MAC 0FF0h,02h ;(设DP

43、=6,则数据存储器地址为0300h037Fh,PM=0,乘积不移位,CNF=1,RAMB0为程序存储器 )将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将数据存储器302h单元的内容与程序存储器FF00h单元内容相乘,结果送PREG 例46: MAC 0FF00h,*,AR6 ;(设PM=0,CNF=1 )将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将当前AR指定的数据存储单元308h的内容与程序存储器FF00h单元内容相乘,结果送PREG,并指定下次的辅助寄存器为AR5,40、带数据移动的累加-乘指令 MACD 句法: MACD pma,dma ;直接寻址 MACD p

44、ma,ind,ARn ;间接寻址 功能:如果指定的数据存储器是片内RAM,则MACD指 令在MAC指令功能的基础上多一条数据移动功能,如果MACD指令寻址存储器映射的寄存器或外部数据存储器,则MACD指令与MAC指令功能完全相同。 状态位: 受PM和OVM影响,影响C和OV。 例47: MACD 0FF00h,08h ;(设DP=6,则地址为0300h037Fh;PM=0,乘积不移位;CNF=I,RAMB0配置为程序存储器)该指令将累加器的内容与乘积寄存器的内容相加,结果送累加器,然后将数据存储器308h单元的内容与程序存储器FF00h单元的内容相乘,结果送PREG,再将308h的内容送309

45、h单元中。,41、修改当前AR和ARP指令MAR 句法: MAR dma ;直接寻址 MAR ind,ARn ;间接寻址 功能: 在直接寻址方式下,MAR指令的作用同NOP指令一样,进行空操 作。在间接寻址方式下,按指令指定的方式修改辅助寄存器的值 和ARP的值,并将原来的ARP的值复制到状态寄存器ST1的ARB 字段中。 操作: (PC)+1 PC: 按指令指定的方式修改当前AR和ARP(只有在间接寻址方式下才 执行此操作)。 状态位:直接寻址方式下不影响状态位,间接寻址方式下影响ARP和ARB。,例48: MAR *+,AR5 ;将当前辅助寄存器的内容加1,并将5送到ARP, ARP原来的

46、值送到ARB,42、乘法指令MPY 句法: MPY dma ;直接寻址 MPY ind,ARn ;间接寻址 MPY #k ;短立即数寻址(k为有符号的13位常数) 功能: 将TREG的内容乘以指定的数据存储器单元的内容或短立即数, 结果放在乘积寄存器(PREG)中。乘以短立即数时,应将13位有符 号数值取右对齐,相乘前用符号扩展(无论SXM为何值)。 操作: (PC)+1 PC; (TREG)X(数据存储器地址) PREG(直接或间接寻址) 或(TREG)X k PREG(短立即数寻址)。 例49: MPY 13 ;(设DP=8,则地址为400h47Fh)将TREG的内容与数据存储器400h单

47、元的内容相乘,结果送PREG,43、累加乘指令MPYA 句法: MPYA dma ;直接寻址 MPYA ind,ARn ;间接寻址 功能: 将前次乘积(PREG的内容)按PM指定的方式移位后,与累加器 相加,结果送累加器:然后将TREG的内容乘以指定的数据存 储单元的内容,结果送乘积寄存器(PREG)。 操作: (PC)+1 PC; (ACC)+移位后的(PREG) ACC; (TREG) X(数据存储器地址) PREG。 状态位:受PM和OVM影响,影响C和OV。,例50: MPYA 13h ;(设DP=6,则数据存储器地址为300h37Fh, PM=0 ,乘积不移位)将累加器的内容与乘积

48、寄存器的内容相加,结果送累加器,然后将 TREG的内容与数据存储器300h单元的内容相 乘,结果送PREG 例51: MPYA *,AR4,44、减乘指令MPYS 句法: MPYS dma ;直接寻址 MPYS ind,ARn ;间接寻址 功能: 将累加器的内容减去前次乘积(按PM状态位指定的方式移位后的PREG的内容),结果送累加器,有借位时,标志位C清0,无借位C为1。然后将暂存寄存器(TREG)的内容乘以指定的数据存储单元的内容,结果送PREG。 操作: (PC)+1 PC: (ACC)-移位后的(PREG) ACC; (TREG)X(数据存储器地址) PREG。 状态位: 受PM和OV

49、M影响,影响C和OV。 例52: MPYS 13;(设DP=6,则地址为300h37Fh:设PM=0,则乘积不移 位)将累加器的内容与PREG的内容相减,结果送累加器,再将TREG 的内容与数据存储器单元30Dh的内容相乘,结果送PREG,45、无符号乘法指令MPYU 句法: MPYU dma ; 直接寻址 MPYU ind,ARn ;间接寻址 功能: 将暂存寄存器(TREG)中的无符号数与指定的数据存储单元中的无符号数相乘,结果送乘积寄存器(PPEG)。 操作: (PC)+1 PC: (TREG)X(数据存储器地址) PREG。 注意: 当其他指令把乘积寄存器(PREG)中的值传递到数据存储

50、器或CALU 时,需经过乘积移位器的输出。当PM=3(右移6位)时,该移位总要将 PRE6的值进行符号扩展。因此,如果要求无符号相乘,则不能使用这 种移位模式。 该指令可用于多精度乘法。如两个32位数相乘产生64位乘积。 例53: MPYU 16 ;(设DP=4,则地址为0200h027Fh)将TREG中的无符号数 乘以数据存储器210h单元的无符号数,结果送PREG,46、累加器取指令NEG 句法: NEG 功能: 将累加器的内容取2的补数,即转换成它的相反数。 操作: (PC)+1 PC: (ACC)X(-1) ACC 状态位: 受OVM影响,影响C和OV。 注意: 当对80000000h

51、作NEG操作时,OV位置1。 若OVM=I,累加器的内容被NEG操作转换成7FFFFFFFh 若OVM=0,则累加器经过NEG操作后,仍为80000000h。 只要累加器的内容不为0,进位位(C)即清0;累加器的内容为0 时,进位位C置1。 例54: NEG ;(OVM为任意值)将累加器的内容取补,47、非屏蔽中断指令NMI 句法: NMI 功能: 将非屏蔽中断矢量地址24h送程序计数器执行非屏蔽中断服务程 序。与硬件非屏蔽中断NMI效果相同。 操作: (PC)+1 STACK; 24h PC; 1 INTM。 状态位: 不受INTM影响,影响INTM。,48、空操作指令NOP 句法: NOP

52、 功能: NOP指令仅影响PC,不进行其他操作,NOP指令可用于建立流水 线和延时。 操作: (PC)+1 PC。,49、累加器规格化指令NORM 句法: NORM ind 功能: 将累加器中的有符号数规格化。把定点数规格化就是把它分成尾数和指数两分。方法如下。 将累计器的最高两位D31和D30作逻辑异或,如果两位相同,说明这是两个符号 位(符号扩展),则累计器左移去掉多余的符号位。 按指定的方式修改当前AR以确定指数的大小。对当前AR默认的修改方式为加1。 为了将累加器中的32位数规格化,可能需要多次执行NORM指令。NORM指令可 与RPT一起使用以实现多次执行NORM指令。NORM指令对

53、用2的补码表示的正数或负数均适用。 状态位:影响TC。 注意:NORM指令在流水线的第4阶段(执行阶段)完成对辅助寄存器的操作,而其他指令在流水线的第2阶段(译码阶段)完成对辅助寄存器的操作。因此紧跟在NORM指令后的两条指令不能修改NORM指令所用的辅助寄存器的值和辅助寄存器指针(ARP)的值。,例55: NORM *+ 例56: 31位规格化程序 MAR *,AR1 LAR AR1,#0h LOOP: NORM *+ BCND LOOP,NTC 例57: 15位规格化程序 MAR *,AR1 LAR AR1,#0Fh RPT #14 NORM *-,50、或指令OR 句法: OR dma

54、;直接寻址 OR ind,ARn ;间接寻址 OR #lk,shift ;长立即寻址,左移015位 OR #k,16 ;长立即寻址,左移16位 功能: 将累加器的内容和被寻址的数据存储单元的内容(或左移后的长立即数)作 “逻辑或”操作,结果送累加器。操作数不足32位的,高位补0:左移时,低位填0。 操作: (PC)+1 PC; (ACC(150)OR(数据存储器的地址) ACC(150) (ACC(3116) ACC(3116)(直接或间接寻址) 或(ACC)OR lk*2shift ACC(长立即数左移015位) 或(ACC)OR lk*216 ACC(长立即数左移16位)。 状态位:指令不

55、受SXM影响。,例58:OR *,AR0 ;当前辅助寄存器指定的数据存储单元的内容与累加 器的内容进行 “逻辑或”结果送累加器,并将AR0 指定为下次的辅助寄存器 例59:OR #8111h,8,51 、输出指令OUT 句法: OUT dma,PA ;直接寻址 OUT ind,PA,ARn ;间接寻址 操作数中的PA为I/O口地址。 功能:将被寻址的存储单元的内容送到指定的I/O端口。此时IS线变低, STRB,R/W和READY的定时关系与外部数据存储器的写操作相同。 该指令与重复指令一起使用可以连续从数据存储器向I/O空间输出数据。 操作: (PC)+2 PC; (数据存储器的地址) PA

56、。,例60:OUT 0,100h ;(设DP=4)将数据存储单元200h中的内容 输出到I/O地址为100h的外设中 例61:OUT *,100h ; 将当前AR指定的数据存储单元的内容输出 到I/O地址为100h的外设中,52、乘积寄存器移位指令PAC 句法: PAC 功能: 按PM状态位指定的方式将乘积寄存器的内容移位,并把移位后的结 果送累加器。 操作: (PC)+1 PC; 移位后的PREG ACC 状态位: 受PM影响。,53、弹栈至累加器指令POP 句法: POP 功能; 将栈顶(TOS)的内容弹出并送到累加器的低16位,堆栈上弹一 级。累加器的高16位字为0。 操作: (PC)+

57、1 PC; (TOS) ACC(150);0 ACC(3116);堆栈上弹一级。 注意: 硬件堆栈是后进先出的8个单元。当弹栈发生时,堆栈中的每个值 都被复制到上一个高栈单元,栈顶内容移出,栈底的两个字具有 相同的值。如果连续弹出的次数多于7次(POP,PODD,RETC, RET指令均弹栈),那么堆栈中的所有值都将相同。没有检查堆栈 是否下溢的措施。 例62: POP,54、弹栈至数据存储器指令POPD 句法: POPD dma ;直接寻址 POPD ind,ARn ;间接寻址 功能:将栈顶(TOS)的值弹出并传送到指令指定的数据存储单元。堆栈上弹 一级。 操作: (PC)+1 PC; (T

58、OS) 数据存储单元,堆栈上弹一级。 例63: POPD 10 例64: POPD *+,AR1,55、数据存储器值进栈指令 PSHD 句法: PSHD dma ;直接寻址 PSHD ind,ARn ;间接寻址 功能: 堆栈中8个单元的值均向下移动一级,最低一级单元的内容丢失, 并将指定的数据存储单元的内容传送到栈顶(TOS)。 操作: (PC)+1 PC; 堆栈下压一级: (数据存储器地址) TOS。 注意:参照PUSH指令。 例65: PSHD 127 ;(设DP=3,则地址为0180h01FFh)将数据存储器 1FFh单元的内容压入堆栈,56、累加器低位进栈指令PUSH 句法: PUSH

59、 功能: 将堆栈的内容下移一级,最低一级单元的内容丢失,并将累加器的低 16位字压入栈顶(TOS)。 操作: (PC)+1 PC: 堆栈下压一级; (ACC(150) TOS。 注意: 硬件堆栈是后进先出的8个单元。如果连续进行8次以上的压栈操作 (CALA, CALL,CC,PSHD,PUSH,TRAP,INTR,NMI指令均 进行压栈操作),那么最低一级的内容将会丢失。 例66: PUSH,57、无条件返回指令RET 句法: RET 功能: 将栈顶(TOS)的内容复制到程序计数器(PC) 中,堆栈上弹一级。子 程序和中断服务程序均以RET指令结束,并返回到原来调用子程 序或中断的端点处。

60、例67: RET,58、条件返回指令RETC 句法: RETC cond1,cond2, 操作数中的cond为需满足的条件,其对应关系见 BCND指令。 功能: 如果指定的条件都满足,则执行RETC指令的操作;若不满足,则 继续执行RETC下面的指令。 操作: 如果cond1, cond2,都满足,则 TOS PC,堆栈上弹一 级;否则(PC)+1 PC。 例68: RETC GEQ,NOV,59、循环左移指令ROL 句法: ROL 功能: 将累加器的内容连同进位位C循环左移一位,进位位移入累加 器的MSB,累加器的LSB移入进位位。 操作: (PC)+1 PC:,状态位:影响C,不受SXM影

61、响。 例69: ROL,60、循环右移指令ROR 句法: ROR 功能: 将累加器的内容连同进位位C循环右移一位,进位位移入累加器 的MSB,累加器的LSB移入进位位。 操作: (PC)+1 PC:,状态位:影响C,不受SXM影响。 例70: ROR,61、重复执行下条指令RPT 句法: RPT dma ;直接寻址 RPT ind,ARn ;间接寻址 RPT #k ; 短立即数寻址 功能: 将被寻址的数据存储单元的内容或8位立即数(假设均用N表示)装载到 重复计数器(RPTC)中,RPT后面的那条指令将重复执行N+1次,且重复时是不可中断的。 重复指令本身不重复。复位时RPTC清0。 操作:

62、(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 ;间接寻址 操作数中shift为左移07位(缺省为0)。 功能: 将累加器的内容送到输出移位寄存器后左移07位,移位时低位补0,高位丢失(累加器内容保持原值不变)。然后将移位后的高16位数值送到数据存储单元。 操作: (PC)+1 PC; (ACC)X2shift)的高16位数据存储单元。 状态位:状态位不受SXM影响。 例72: SACH 0Ah,1 ;(设DP=4,则数据存储器地址为200h27Fh)累加器的内容左移1位后将高16位送入20Ah单元,63、移位并存储累加器低位字指令SACL 句法: SACL dma,shift2 ;直接寻址 SACL ind,shift2,ARn ; 间接寻址 操作数中shift2为左移07位(缺省为0

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!