1、例 MAR *, AR1; 选择AR1为当前辅助寄存器,ARP=1 LAR AR1, #208h; AR1=#208h ADD *, 8; ACC=ACC+(208h)*28 间接寻址间接寻址类型: * 地址不变 *+ AR= AR+1 当前AR中的地址加1 *- AR= AR-1 *0+ AR= AR+AR0 *0- AR= AR-AR0 *BR0+ AR= B(AR+AR0) 地址反向进位加,用于FFT *BR0- AR= B(AR-AR0)下一个辅助寄存器: 许多指令除了可以修改当前辅助寄存器的数值外,还可以指定下一个辅助寄存器,作为下一条指令的当前辅助寄存器。例. MAR *, AR1
2、 ; AR1为当前AR,即ARP=1 LT *+, AR2 ; T=(AR1), AR1=AR1+1, ARP=2 MPY * ; P=T*(AR2)=(AR1)*(AR2)间接寻址举例 ADD *, 8 ADD *+, 8, AR4 ADD *-, 8 ADD *0+, 8 ADD *0-, 8 ADD *BR0+, 8 ADD *BR0-, 8指令概述C24X指令分类表 : 86条 传送指令,算术操作,逻辑运算指令,分支转移指令1)累加器、算术和逻辑操作指令,26条2)辅助寄存器和DP操作指令,7条3)T寄存器、P寄存器和乘操作指令,20条4)跳转指令,12条5)控制指令,13条6)I/O
3、及数据存储器操作指令,8条7)汇编指令格式: 标号 指令(操作码) 操作数 ;注释1、累加器、算术、逻辑指令2、辅助寄存器指令3、T, P寄存器与乘法指令 4、分支转移指令5、控制指令6、/即存储器指令指令中常用符号表 AR:辅助寄存器 ACC:累加器 dma: DM地址低7位 DP:9位数据页面指针ind: 间接寻址方式 #:立即数shift: 左移位数 0-15 PA: 16位口地址shift2: 左移位数 0-7 pma: 16位程序地址ARn:指定的辅助寄存器 cond: 条件指令的条件( ):存储单元内容 :可选项汇编语言指令举例: 加法指令例如, 加法指令:ADD dma , sh
4、ift ;ADD dma, 16 ;左移16位直接寻址ADD ind , shift , ARn ;ADD ind, 16 , ARn ;左移16位间接寻址ADD #k ;短立即寻址ADD #lk , shift ;长立即寻址例. 指令 ADD *+, 0, AR0 功能: ACC=ACC+(AR), ARP=0执行前 ARP=4 AR4=302HDM: (302H)=2 ACC=2 C=X 执行后 ARP=0 AR4=303HACC=4 C=0 汇编语言指令(1)(1)ABS 累加器取绝对值(2)ADD累加器加(3)ADDC带进位累加器加(4)ADDS 抑制符号扩展的累加器加(5)ADDT:
5、 T寄存器指定移位次数的累加器加(6)ADRK 辅助寄存器加短立即数(7)AND 和累加器进行与操作(8)APAC: P加到ACC(9)B 无条件跳转(10)BACC 跳转到ACCL确定的地址(11)BANZ辅助寄存器非0跳转 语法: BANZ pma ,ind,ARn 例 BANZ PGM191,*-,AR0汇编语言编程例1将数据存储器60H-69H单元内容求和。MAR *,AR0 ;设AR0为当前ARLAR AR1,#09H ;10个单元,计数器LAR AR0,#60H ;初始单元AR0=#60H,地址指针LACC #0 ;和初值 ACC=0PGM191: ADD *+,AR1 ;累加,A
6、R0+1,下一当前AR为AR1BANZ PGM191,AR0 ;AR10 则循环, 且AR1=AR1-1;下一当前AR为AR0 ; ACC=0+(60H)+(61H)+(69H)汇编语言指令(2)(12)BCND无条件跳转(13)BIT 位测试(14)BITT: T寄存器指定测试(15)BLDD数据块移动(16)BLPD程序区到数据区的块移动(17)CALA: 调用ACC指定的子程序(18)CALL: 无条件调用子程序(19)CC条件调用(20)CLRC 控制位清0(21)CMPL:ACC取反 (22)CMPR 辅助寄存器AR与AR0比较(23)DMOV 数据移动(24)IDLE等待中断(25
7、)IN 从端口读入数据BITT指令: T寄存器指定位测试语法:1) BITT dma 2) BITT ind ,ARn功能:将DM单元中指定的位复制到状态寄存器ST1的TC位。指定的位对应于15-T(3:0)。例 BITT 00H ;(DP=6)执行后 (300H)=4DC8H 0100 DC8 T=1 D(15-1)=D14=1TC=1执行前 (300H)=4DC8HT=1TC=0BLDD指令:数据块移动 1) BLDD #lk, dma 2) BLDD #lk, ind , ARn 3) BLDD dma, #lk 4) BLDD ind,#lk , Arn说明:该指令实现DM到DM的块移
8、动,第一个数指定源地址,第二个数指定目的地址。一旦启动了流水线,它就成为单周期指令。例子 BLDD #300h,20h; (DP=6)执行前: (300h)=0h (320h)=0fh执行后: (300h)=0h (320h)=0h汇编语言指令(3)(26)INTR 软件中断(27)LACC带移位的ACC装载(28)LACL 装载ACCL,ACCH=0(29)LACT 由T指定移位次数的ACC装载(30)LAR: Load AR 装载辅助寄存器(31)LDP: Load DP 装载DP(32)LPH: Load PH(33)LST: Load ST(34)LT: Load T(35)LTA:
9、Load T and Add(36)LTD装载T寄存器、累加前次乘积并移动(37)LTP装载T寄存器并将P送到ACC(38)LTS: Load T and Subtract(39)MAC: 乘累加MAC指令:语法 1) MAC pma, dma 2) MAC pma, ind , ARn功能:ACC=ACC+P, T=(DM), P=(PM)*(DM) = (PM)*T例 MAC 0FF00H, 08 ; (DP=6, PM=00) (308h)=23hPM: (FF00H)=4T= 23h P=8CHACC=76975b3hT= 45h P=458972h ACC=723EC41hMACD
10、指令:乘累加并移动数据语法 1) MACD pma, dma 2) MACD pma, ind ,ARn例 MACD 0FF00H, 08 ;ACC=ACC+P, T=(DM), P=(PM)*(DM), (DM+1)=(DM)执行前 执行后 (308h)=23h DM: (309h)=18h DM: (309h)=23h (FF00H)=4 PM:T= 45h T= 23h P=458972h P=8CHACC=723EC41h ACC=76975b3h 汇编语言指令(4)(40)MACD 乘累加并移动数据(41)MAR:Modify AR 修改辅助寄存器(42)MPY: Multiply
11、乘(43)MPYA:乘且累加前次积(44)MPYS:乘且减去前次积(45)MPYU:无符号乘(46)NEG:ACC取补码(47)NMI:Non Maskable Interrupt 非屏蔽中断(48)NOP: No Operation 空操作(49)NORM: ACC规格化(50)OR: 与ACC或运算(51)OUT:输出数据到端口(52)PAC: P送到ACC(53)POP栈定内容弹出到ACCL汇编语言指令(5)(54)POPD:POP to Data memory栈定内容弹出到数据存储器单元(55)PSHD:数据存储器单元压入堆栈(56)PUSH: ACCL压入堆栈(57)RET: 子程序
12、返回(58)RETC:条件返回(59)ROL: A循环左移(60)ROR: A循环右移(61)RPT:重复执行下一条指令(62)SACH: Store ACCH(63)SACL: Store ACCL(64)SAR: Store AR(65)SBRK: AR减去短立即数PSHD指令:语法: 1) PSHD dma 2) PSHD ind , ARn堆栈依次向下移动一级,指定存储器单元的内容复制到栈顶。堆栈底部的值丢失。例子 PSHD *, AR1ARP=1AR0=1FFH (1FFH)=12H硬件堆栈 12h 2h 33h 78h 99h 42h 50h 0hARP=0POPD指令: 栈定内容
13、弹出到存储器单元 1) POPD dma 2) POPD ind , ARn栈顶的内容复制到DM单元中。堆栈值依次向上复制一级。例子 POPD 20h ; (320H)=45H 16h 7h 42h 56h 37h 61h 61h (320H)=82H 45h 16h 7h 33h 56h 37h 61h汇编语言指令(6)(66)SETC 控制位置位(67)SFL:A左移(68)SFR: A右移(69)SPAC: A减P(70)SPH: Store PH (71)SPL: Store PL(72)SPLK:长立即数送到DM单元(73)SPM: 设置移位模式PM(74)SQRA: 乘方并累加前一
14、次乘积(75)SQRS:乘方并减去前一次乘积(76)SST: Store ST(77)SUB: ACC减(78)SUBB:带借位的:ACC减(79)SUBC条件减SPLK 指令: 1)SPLK #lk,dma 2)SPLK #lk, ind ,ARn 例子 SPLK #1111H,*+,AR4ARP=4AR0=301H (300H)=1111HAR0=300H (300H)=07H条件减指令用于除法运算语法格式: SUBC dma SUBC ind , ARn 移位相减实现除法:ACCL/(DM)=ACCL 余数ACCH 例. RPT #15 SUBC * ;执行情况16次A执行后 ARP=3
15、 AR3=1000H (1000H)=7 ACCH=2, ACCL=0009HA执行前 ACCH=0, ACCL=41H 65/7=9余数2汇编语言指令(7)(80)SUBS: 抑制符号扩展的累加器减 (81)SUBT: T确定移位的累加器减 (82)TBLR: Table Read 表读 1) TBLR dma; 2) TBLR ind , ARN 说明 :将PM单元中的内容复制到 指定的DM单元。(83)TBLW : Table Write 表写(84)TRAP 软件中断(85)XOR 与累加器进行异或操作(86)ZALR: ACCL=0,ACCH=8000H 累加器低位字清0, 高位字带舍入装载汇编语言编程例2查表程序0x9, 求y=x1/5 , x=0,1,2,9, y值用Q14格式 。设 x值在402H单元,查表y值送404H单元 LDP #8 LACC 2 ;(402H)ACC x ADD #TAB ;表首地址#TABTBLR 4 ;ACC(404H) y思考题与习题1.C24x DSP 有哪些寻址方式?2.直接寻址方式中,数据存储单元的地址是如何形成的?3.间接寻址方式中,数据存储单元的地址是如何形成的?间接寻址方式有哪些类型?4.C24x DSP 有哪几种类型的指令?5.编程将数据存储器300H-30AH单元内容求和。6.试编写一简单查表程序。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1