DSPC2000汇编指令 联系客服

发布时间 : 星期二 文章DSPC2000汇编指令更新完毕开始阅读c49e07386edb6f1aff001fd3

值。XT寄存器的低16位部分是TL寄存器。该寄存器能装载一个16位有符号数,能自动对该数进行符号扩展,然后将其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。该寄存器主要用来存储16位乘法操作之前的16位整数值。T寄存器也可以为一些移位操作设定移位值,在这种情况下,根据指令,只可以使用T寄存器的一部分。具体的操作说明看表6-19. 助记符 ADDUL P,loc32 MAXCUL P,loc32 MINCUL P,loc32 MOV PH,loc16 MOV PL,loc16 MOV loc16,P MOV T,loc16 MOV loc16,T MOV TL,#0 MOVA T,loc16 MOVH loc16,P MOVL P,loc16 MOVL loc16,P MOVL loc32,P MOVL P,loc32 MOVL XT,loc32 MOVL loc32,XT MOVP T,loc16 MOVS T,loc16 MOVX TL,loc16 SUBUL P,loc32 说明 无符号数[loc32]加到寄存器P 有条件地求无符号数[loc32]和P的最大值,存储到P 有条件地求无符号数[loc32]和P的最小值,存储到P [loc16]加载PH [loc16]加载PL 存储移位后的P寄存器的低16位 [loc16]加载到T 存储T寄存器到loc16 清除TL [loc16]加载到T寄存器并与先前的乘积相加 保存PH到loc16 [loc16]加载到P寄存器 寄存器P加载到[loc16] 寄存器P加载到[loc32] [loc32]加载到P寄存器 [loc32]加载到XT寄存器 存储寄存器XT到loc32 [loc16]加载到T寄存器并将寄存器的内容保存到ACC [loc16]加载到T寄存器并从ACC中减去P寄存器的内容 [loc16]符号扩展后加载到TL P减去[loc32] MOVDL XT,loc32 存储XT寄存器并加载新XT寄存器 表6-19 P或XT的操作的说明

6.对中断控制寄存器的操作(IFR、IER、DBGIER)

C28x有3个寄存器用于控制中断:中断标志寄存器(IFR)、中断使能寄存器(IER)和调试中断使能寄存器(DBGIER)。IFR包含的标志位用于可屏蔽中断(可以用软件进行屏蔽)。当通过硬件或软件设定了其中某位时,则相应的中断就被使能。可以用IER中的相应位屏蔽和使能中断。当DSP工作在实时仿真模式并且CPU被挂起时,DBGIER表明可以使用时间临近中断(如果被使能)。具体操作看表6-20。 助记符 AND IER,#16bit AND IFR,#16bit IACK #16bit 说明 按位进行“与”操作来禁止指定的CPU中断 按位进行“与”操作来清除挂起的CPU中断 中断确认 INTR INT1/.../INT14、NMI、EMUINT、 仿真硬件中断 DLOGINT、RTOSINT、 MOV IER,loc16 加载中断允许寄存器 MOV loc16,IER OR IER,#16bit OR IFR,#16bit TRAT #0...31 存储中断允许寄存器 按位相“或” 按位相“或” 软件陷阱 表6-20中断寄存器的操作说明

7.对状态寄存器(ST0、ST1)的操作 C28x有两个状态寄存器ST0和STl,其中包含着不同的标志位和控制位。这些寄存器可以和数据寄存器交换数据,也可以保存机器的状态和为子程序恢复状态。状态位根据流水线中位值的改变而改变,ST0的位在流水线的执行阶段中改变,STl的位在流水线的译码2阶段中改变。状态寄存器ST0的各位,所有这些位都可以在流水线执行的过程中进行更改。状态寄存器ST0的位分布如图6-4所示,ST1的位分布如图6-5所示。具体的寄存器操作说明看表6-21

D15~D10OVC/OVCUD9~D7PMD6VD5ND4ZD3CD2TCD1OVMD0SXM

图6-4状态寄存器ST0的位分布

D15~D13ARPD6EALLOW助记符 CLRC mode CLRC XF CLRC AMODE C28ADDR D12XFD5LOOPD11D10D9D8D7M0M1MAP保留OBJMODEAMODEIDLESTATD4SPAD3VMAPD2PAGE0说明 清除各状态位 清除状态位XF并输出信号 清除AMODE位 清除AMODE状态位 清除OBJMODE位 清除M0M1MAP位 清除OVC位 清除OVC位 禁止屏蔽中断(置INTM位) 允许可屏蔽中断(清除INTM) 令乘积移位方式位PM=AX(2:0) 用指定单元高6位数加载溢出计数器 存储溢出计数器 置各状态位 D1BGMD0INTM

图6-5状态寄存器ST1的位分布

CLRC OBJMODE C27MAP CLRC OVC ZAP OVC DINT EINT MOV PM,AX MOV OVC,loc16 MOV loc16,OVC SETC Mode MOVU OVC,loc16 用指定单元低6位数加载溢出计数器 MOVU loc16,OVC 存储溢出计数器到指定单元的低6位并且高10位清0 SETC XF SETC M0M1MAP C28MAP SETC OBJMODE SETC AMODE LPADDR SPM PM 置XF位并输出信号 置M0M1MAP位 置M0M1MAP位 置OBJMODE位 置AMODE位 置AMODE位 设置乘积移位方式 表6-21状态寄存器操作说明

8.对16*16乘法操作的说明(见表6-22 16*16乘法操作说明) 助记符 MAC P,loc16,0:pma MAC P,loc16,*XAR7/++ MAY P,T,loc16 MPY ACC,loc16,#16bit MPYA P,loc16,#16bit MPYA P,T,loc16 MPYB P,T,#8bit MPYS P,T,loc16 MPYB ACC,T,#8bit MPYU ACC,T,loc16 MPYU P,T,loc16 MPYXU P,T,loc16 MPYXU ACC,T,loc16 SQRA loc16 SQRS loc16 XMAC P,loc16,*(pma) XMACD P,loc16,*(pma) 相乘且累加 相乘且累加 16位*16位乘法 16位*16位乘法 16位*16位乘法并加上先前乘积 16位*16位乘法并加上先前乘积 有符号数与8位无符号立即数相乘 16位*16位乘法并做减法 与8位立即数相乘 16位*16位无符号乘法 16位*16位无符号乘法 有符号数与无符号数相乘 有符号数与无符号数相乘 求平方值并讲P寄存器的内容加到ACC 求平方值并且ACC做减法 与C2xLP兼容性的相乘且累加 带有数据移动的、与C2xLP兼容性的相乘且累加 说明 DMAC ACC:P,loc32,*XAR7/++ 双16*16乘法且累加 表6-22 16*16乘法操作说明

9.对32*32乘法操作的说明(见表6-23 32*32乘法操作说明) 助记符 IMPYAL P,XT,loc32 IMPYL P,XT,loc32 IMPYL ACC,XT,loc32 IMPYSL P,XT,loc32 IMPXUL P,XT,loc32 QMACL P,XT,loc32 QMPYAL P,XT,loc32 QMPYL P,XT,loc32 QMPYL ACC,XT,loc32 说明 有符号32位数乘法(低半段)且加上先前P的内容 有符号32位数*有符号32位数(低半段) 有符号32位数*有符号32位数(低半段) 有符号32位数乘法(低半段)且减去先前P的内容 有符号32位数*无符号32位数(低半段) 有符号32位数*有符号32位数且累加(高半段) 有符号32位数乘法(高半段)且加上先前P的内容 有符号32位数*有符号32位数(高半段) 有符号32位数*有符号32位数(高半段) IMACL P,loc32,*XAR7/++ 有符号32位数*有符号32位数且累加(低半段) QMPYSL P,XT,loc32 QMPXUL P,XT,loc32 有符号32位数乘法(高半段)且减去先前P的内容 有符号32位数*无符号32位数(高半段) 表6-23 32*32乘法操作说明

10.直接寄存器操作(见表6-24) 助记符 ADD loc16,#16bit AND loc16,#16bit CMP loc16,#16bit DEC loc16 DMOV loc16 INC loc16 MOV loc16,*(0:16bit) MOV loc16,16bit MOV loc16,#0 OR loc16,#16bit TBIT loc16,#bit TBIT loc16,T TCLR loc16,#bit TSET loc16,#bit XOR loc16,#16bit 说明 有符号16位立即数与[loc16]相加,结果保存到loc16 有符号16位立即数与[loc16]按位“与”,结果保存到loc16 有符号16位立即数与[loc16]比较 [loc16] 减1 [loc16-1]=[loc16] [loc16]加1 16位地址指向存储单元的内容加载到loc16 存储16位立即数到loc16 清除[loc16] [loc16]和16位立即数按位“或”,结果保存到loc16 测试[loc16]中的指定位 测试[loc16]中由T寄存器指定的内容 测试并清除[loc16]中的指定位 测试并置[loc16]中的指定位为1 [loc16]和16位立即数按位“异或” MOVB loc16,#8bit,COND 有条件存储8位立即数(零扩展)到loc16 表6-24对直接存储器操作的说明

11.对I/O空间操作的说明(看表6-25) 助记符 IN loc16,*(PA) OUT *(PA),loc16 说明 从端口输入数据 从端口输出数据 UOUT *(PA),loc16 想I/O端口输出不受保护的数据 表6-25 I/O空间操作的说明

12.程序空间的操作说明(看表6-26)

助记符 PREAD loc16,*XAR7 PWRITE *XAR7,loc16 XPREAD loc16,*AL XPWRITE *AL,loc16 说明 将XAR7指向的程序空间的16位数据放到loc16 将[loc16]放到XAR7指向的程序空间的一个存储单元 与C2xLP兼容性的读程序操作 与C2xLP兼容性的写程序操作 XPREAD loc16,*(pma) 与C2xLP兼容性的读程序操作 表6-26程序空间操作的说明

13.跳转/调用/返回操作(看表6-27) 助记符 B 16bitoff,COND 说明 有条件跳转,PC=PC+16位偏移地址(-32768~+32767)