文档介绍:烧友 http://bbs. 电子技术论坛
DSP常用汇编语言指令简介
南航自动化学院DSP应用技术实验室
南航自动化学院DSP技术应用实验
室
烧友 http://bbs. 电子技术论坛
一、指令系统简介一、指令系统简介
TMS320C24x系列DSP伪指令极为丰富,安装指令可
以分为六大类:
1. Accumulator(累加器指令), arithmetic(算术指
令), and logic instructions(逻辑操作指令)等
2. Auxiliary register(辅助寄存器指令),data page
pointer instructions(数据页指针指令)
3. TREG(暂存单元指令),PREG(乘积单元指
令),multiply instructions (乘积指令)
4. Branch instructions (程序分支转移指令)
5. Control instructions (控制指令)
6. I/O and memory instruction(I/O和存储器指令)
南航自动化学院DSP技术应用实验
室
烧友 http://bbs. 电子技术论坛
. 累加器等指令举例累加器等指令举例
z Example 1:ADD 1,1;(假设DP = 6),把
第6个数据页的第一个内存单元内容左移一
位加到累加器
z Example 2: *,4; (与SXM有关)
z Example 3:ROL;把累加器内容循环左移
z Example 4:SACL *,0,AR7 ;把当前工作寄
存器指示内容左移0位送入累加器的低8位
z Example 5:RPT #15
SUBC * ;累加器减去当前寄存
器指的内容,连续减16次,结果存累加器
南航自动化学院DSP技术应用实验
室
烧友 http://bbs. 电子技术论坛
. 累加器等指令举例累加器等指令举例
z Example 6: AND 16 ;(假设DP = 4),把地址
=相逻辑“与”,结果存
入累加器。
z Example 7:SFL ;内容左移一位,低
位填0,最高位送入进位位,不受SXM影响。
z Example 8:SFR ;内容右移一位,高
位根据SXM进行符号位扩展。例如:
1.=B0001234h,SXM=0,=
5800091Ah;
2.=B0001234h,SXM=0,
=5800091Ah;
南航自动化学院DSP技术应用实验
室
烧友 http://bbs. 电子技术论坛
. 累加器等指令举例累加器等指令举例
z Example 10:ZALR 1 ; (DP = 32:1000h-
107Fh) 把内存地址为1001的单元内容放入
ACC的高16位,的低16位设置为常
数:8000H。
z Example 11:ABS ;ACC取绝对值命令,
命令执行之后进位位=0。例如:命令执行
=1234h,=1234;
=ffffh,那么程序执行
=01h;=
8000h,如果执行之前OVM位=0,那么
ACC=8000h;如果执行之前OVM=1,那
么= 南航自动化学院。 DSP技术应用实验
ACC 7ffffh 室
烧友 http://bbs. 电子技术论坛
. 工作寄存器等指令举例工作寄存器等指令举例
z Example1:MAR *+,AR1;把当前工作寄
存器的内容加1,然后再改变工作寄存器为
AR1。
z Example2:LAR AR4,#8123h;把AR4的
值改变为立即数。
LAR AR0,16;(DP=6)把
地址=310H的内存单元内容装入AR0。
z Example3:SAR AR0,*+;(如果当前工
作寄存器=AR1)把AR0的内容拷贝到AR1
指向的内存单元。南航自动化学院DSP技术应用实验
室
. 工作寄存器等指令举例工作寄存器等指令举例烧友 http://bbs. 电子技术论坛
z Example4:ADRK #80h ;把当前工作寄存器内容
加一个立即数80h(注意立即数范围:00~FFh)。类
似的指令还有SBRK。
z Example5:BANZ指令使用举例。例:
MAR *, AR0 ;当前ARP=AR0
LAR AR1, #03h ;AR1内容赋值为03h
LAR AR0, #60h ;AR0内容赋值为60h
ZAC ; 清零
loop: ADD *+, AR1 ;把当前工作寄