TMSLF的寻址方式.ppt

上传人:小飞机 文档编号:6522027 上传时间:2023-11-08 格式:PPT 页数:75 大小:823.55KB
返回 下载 相关 举报
TMSLF的寻址方式.ppt_第1页
第1页 / 共75页
TMSLF的寻址方式.ppt_第2页
第2页 / 共75页
TMSLF的寻址方式.ppt_第3页
第3页 / 共75页
TMSLF的寻址方式.ppt_第4页
第4页 / 共75页
TMSLF的寻址方式.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《TMSLF的寻址方式.ppt》由会员分享,可在线阅读,更多相关《TMSLF的寻址方式.ppt(75页珍藏版)》请在三一办公上搜索。

1、第三章 寻址方式和指令系统,本章基本要求1、熟悉DSP汇编语言指令2、能编写简单应用程序3、了解完整应用程序的结构,3.1 寻址方式,3 种基本寻址方式:立即寻址方式,直接寻址方式,间接寻址方式,3.1.1 立即寻址方式指令中包含该指令要操作的常数,1、短立即寻址 指定8/9/13位的常数作为操作数,2、长立即寻址 指定16位的常数作为操作数,例1:短立即寻址RPT#7;将RPT后面的那条指令执行8次,指令机器代码为:,操作码 操作数,例2、长立即寻址 LACC#0FFF,3;将0FFFH左移3位后与累加器内容相加,指令机器代码为:,指令操作码 左移位数,0 0 0 0 1 1 1 1 1 1

2、 1 1 1 1 1 1,3.1.2 直接寻址方式状态寄存器ST0,8 0,数据页指针,直接寻址模式下的数据存储器地址由数据页指针DP与偏移地址构成,15 13,3.1.2 直接寻址方式,数据存储器,在使用直接寻址时,必须确保正确的数据页,DP值保存在ST0中,可以通过 LDP#XXH XX0511或 LST 指令对DP 赋值,数据页面指针(DP)指令寄存器(IR),9位,8MSB,页面(9MSB),偏移量(7LSB),0,7LSB,16位地址的形成,使用直接寻址的方法:1、设置数据页(LDP#XX)2、指明偏移量,采用直接寻址时,不必每条指令前面都要设置数据页,如果一段代码的所有直接寻址指令

3、都访问同一个数据页,则只需在该段代码的最前面装载一次DP值即可。,8MSB,0,7LSB,操作码,直接寻址,偏移地址,数据页面指针DP=4,0000 0010 0,0 0 1 0,0 0 1 0,0,000 1001,0000 0010 0,000 1001,指令寄存器(IR),ADD的操作码,移5位 直接寻址,LDP#4ADD 9H,5,0 2 0 9,数据页面指针DP=500,1111 1010 0,0 1 1 0 0 0 0 0,0,000 1001,1111 1010 0,000 1001,指令寄存器(IR),ADD的操作码,移5位 直接寻址,LDP#500ADDC 9H,F B 0

4、9,LDP#0H LACC 64H ADD 50H LDP#6H SUB 2H,数据存储器空间64H内的值与数据存储器空间50H内的值相加再减去数据存储器空间302内的值。,3.1.3 间接寻址方式使用AR0AR7作为辅助寄存器,系统用当前辅助寄存器(当前AR)的内容作为操作数的地址,状态寄存器ST0,3.1.3 间接寻址方式使用AR0AR7,1、当前辅助寄存器2、间接寻址选项,(1)不增不减,(2)增1/减1,(3)增加/减少一个变址量(AR0),(4)按逆向进位方式增加/减少一个编址量,间接寻址操作数,15 8 7 6 4 3 2 0,七种选项,重定位指示,下一辅助寄存器指针,操作码及左移

5、位数,AR0赋值为FFT长度的一半N/2=4,AR1中存放位反转的基地址,例如AR1=0200H,重复执行输入指令N=8次,使数据以N为8的倒序方式排列,即RPT 7IN*BR0+,PA0(将PA0口顺序输入的数据以位反转的地址存储)则依次由AR1产生的地址分别为0200H 0204H 0202H 0206H 0201H 0205H 0203H 0207H,例6 ADD*,8,0002h,0002h,指令执行前,指令执行后,数据存储器,数据存储器,302h,ACC,C,ACC,0,C,2h,0202h,302h,302,3,3,302,ARP,AR3,例7 ADD*+,8,AR4,0002h,

6、0002h,指令执行前,指令执行后,数据存储器,数据存储器,302h,ACC,C,ACC,0,C,2h,0202h,302h,302,3,4,303,ARP,AR3,例8 ADD*-,8,0002h,0002h,指令执行前,指令执行后,数据存储器,数据存储器,302h,ACC,C,ACC,0,C,2h,0202h,302h,302h,3,3,301h,ARP,AR3,例9 ADD*0+,8,0002h,0002h,指令执行前,指令执行后,数据存储器,数据存储器,0302h,ACC,C,ACC,0,C,2h,0202h,0302h,0302h,3,3,0306h,ARP,AR3,0004h,00

7、04h,AR0,3.2 指令集,3.2.1 累加器、算术和逻辑指令1、ABS 累加器内容取绝对值2、ADD 1,1(DP=6),1h,1h,指令执行前,指令执行后,数据存储器,数据存储器,301h,ACC,C,ACC,0,C,2h,4h,301h,相加有进位则1-C,否则C清零,2h,2h,指令执行前,指令执行后,数据存储器,数据存储器,302h,ACC,C,ACC,0,C,2h,04h,302h,302,4,0,303,ARP,AR4,ADD*+,0,AR0,将当前辅助寄存器所指向的单元的内容与累加器内容相加,并指定下一辅助寄存器为AR0,ffffh,ffffh,指令执行前,指令执行后,数据

8、存储器,数据存储器,302h,ACC,C,ACC,0,C,7fff0000h,7fffffffh,302h,302h,0,0,302h,ARP,AR0,3、ADDC 带进位位加至累加器(ACC)+(数据存储器地址)+(C)(ACC),4、ADDS 抑制符号扩展加至累加器 ADDS*,0FF94H,0FF94h,指令执行前,指令执行后,数据存储器,数据存储器,TREG,ACC,C,ACC,0,C,0F715h,F7A5h,09h,09h,027FH,5、ADDT 按TREG寄存器内容移位后加至累加器 ADDT 127(DP=4,SXM=0),027FH,TREG,0FF94H,0FF94h,指令

9、执行前,指令执行后,数据存储器,数据存储器,TREG,ACC,C,ACC,0,C,0F715h,0F7A5h,90h,90h,027FH,练习:ADDS*-,AR4,027FH,TREG,027FH,027Eh,AR0,0,4,ARP,ARP,AR0,6、AND 和累加器逻辑“与”1)AND*2)LDP#1 AND 16 3)AND#00FFH,47、CMPL 累加器求反(补),01h,01h,指令执行前,指令执行后,数据存储器,数据存储器,406h,ACC,C,ACC,0,C,12345678h,10h,406h,8、LACC 数据左移后装入累加器 LACC 6,4(DP=8,SXM=0),

10、LACC*,4LACC#1234H,2,00ffh,00FFh,指令执行前,指令执行后,数据存储器,数据存储器,401h,ACC,C,ACC,0,C,7FFFFFFFh,0FFh,401h,401h,0,4,400h,ARP,AR0,9、LACL 装载累加器低位并清累加器高位 LACL*-,AR4,10、NEG 累加器求负11、NORM 规格化累加器,14h,14h,指令执行前,指令执行后,数据存储器,数据存储器,TREG,ACC,C,ACC,0,C,98F7EC83h,13760h,301h,1376h,1376h,301h,12、LACT 按TREG规定的移位后装入累加器 LACT 1(D

11、P=6),TREG,6,ARP,6,ARP,1111h,1111h,指令执行前,指令执行后,数据存储器,数据存储器,ACC,C,0,C,222h,1333h,AR1,301h,301h,AR1,13、OR 与累加器逻辑“或”OR*,AR0,301h,ARP,1,301h,0,ARP,14、ROL 累加器逻辑循环左移,指令执行前,指令执行后,B0001234H,60002468H,ACC,0,ACC,1,15、ROR 累加器逻辑循环右移,C,16、SACH 移位并存储累加器高位 SACH*+,0,AR2,0h,0420h,指令执行前,指令执行后,数据存储器,数据存储器,ACC,C,ACC,0,C

12、,4208001h,4208001h,AR1,301h,302h,AR1,301h,ARP,1,301h,2,ARP,17、SACL 移位并存储累加器低位,18、SFL 累加器算术左移,19、SFR 累加器算术右移,B0001234H,ACC,0,C,0,LSB,MSB,B0001234H,ACC,0,C,5800091AH,ACC,0,C,B0001234H,ACC,0,D800091AH,ACC,0,SXM=1,SXM=0,20SUB 从累加器减21 SUBB 带借位从累加器减22 SUBS 抑制符号扩展从累加器减23 SUBT 按TREG指定的值进行移位后从累加器减,0E0E0h,0E0

13、E0h,指令执行前,指令执行后,数据存储器,数据存储器,ACC,C,ACC,C,107777h,0E0E08000h,AR7,0FF00h,FEFFh,AR7,24、XOR 与累加器逻辑“异或”25、ZALR 累加器低位清零并四舍五入装载累加器高位 ZALR*-AR4,0FF00h,ARP,7,0FF00h,4,ARP,26、ADRK 短立即数加至当前辅助寄存器 ADRK#80H(假设ARP=5),27、BANZ 辅助寄存器不等于零转移 MAR*,AR0;ARP指向AR0 LAR AR1,#3;AR1中装入3 LAR AR0,#60h;AR0中装入60LOOP:ADD*+,AR1 BANZ L

14、OOP,*-AR0,4321H,AR5,43A1H,指令执行后,C,28、CMPR 比较当前辅助寄存器和AR0,并把比较结果放在ST1的TC位 CMPR CM CM=00 测试当前AR是否等于AR0 CM=01 测试当前AR是否小于AR0 CM=10 测试当前AR是否大于AR0 CM=11 测试当前AR是否不等于AR0如果条件满足,TC置1,7FFFh,7FFFh,指令执行前,指令执行后,TC,1h,0h,0FFFFh,0FFFFh,AR0,CMPR 2,ARP,4,AR4,4,32h,32h,AR0,300h,32h,数据存储器,29 LAR 装载辅助寄存器LDP#6 LAR AR0,16,

15、310H,30 MAR 修改辅助寄存器31 SAR 存储辅助寄存器(ARx)数据存储器,SAR AR0,*+指令执行前:ARP=0,(AR0)=401H(401H)=0H,指令执行后:ARP=0,(AR0)=402H(401H)=401H,LDP#6HLAR AR0,0SAR AR0,10H,MAR*,AR1 LAR AR0,#37FH LAR AR1,#300H LACL#0HLOOP1:SACL*+CPR 00 BCND LOOP1,NTC,32 SBRK 从当前辅助寄存器减去短立即数33 APAC P寄存器加至累加器,F79Ch,F79Ch,指令执行前,指令执行后,PREG,300798

16、44h,F79C9844h,200h,200h,AR0,ARP,0,200h,6,数据存储器,34 LPH 装载乘积寄存器高位 LPH*AR6,35 LT 装载TREG寄存器36 LTA 装载TREG寄存器并累加前次乘积 LAT*,AR5,62h,62h,指令执行前,指令执行后,TREG,3h,62h,324h,324h,AR4,ARP,4,324h,5,0Fh,0Fh,PREG,ACC,C,ACC,0,5h,14h,37 LTD 装载TREG寄存器、累加前次乘积并移动数据 LTD*,AR5,62h,62h,指令执行前,指令执行后,TREG,3h,62h,324h,324h,AR4,ARP,4

17、,324h,5,0Fh,0Fh,PREG,ACC,C,ACC,0,5h,14h,0h,62h,325h,38 LTP 装载TREG寄存器并存储PREG寄存器到累计器 LTP*,AR5(数据空间地址)TREGShift(PREG)ACC,62h,62h,指令执行前,指令执行后,TREG,3h,62h,324h,324h,AR2,ARP,2,324h,5,0Fh,0Fh,PREG,ACC,C,ACC,0,5h,0Fh,39 LTS 装载TREG寄存器并减去前次乘积(数据空间地址)TREG ACC-Shift(PREG)ACC40 MAC 乘且累加 MAC 0FF00H,*,AR5,C,41 MAC

18、D 乘且累加 并带数据移动SPM 0CLRC CNFMACD 0FF00H,*,AR6,23h,23h,指令执行前,指令执行后,TREG,45h,23h,324h,324h,AR2,ARP,2,324h,6,458972h,8Ch,PREG,ACC,C,ACC,0,723EC41h,76975B3h,数据存储器,程序存储器,FF00H,4h,4h,21h,23h,325H,42 MPY 乘43 MPYA 乘且累加前次乘积 MPYA*,AR4(ACC)+shift(PREG)-ACC(TREG)x(数据空间地址)-PREG,C,7h,7h,指令执行前,指令执行后,TREG,6h,6h,324h,

19、324h,AR3,ARP,3,324h,4,36h,2Ah,PREG,ACC,C,ACC,0,54h,8Ah,数据存储器,44 MPYS 乘且减去前次乘积45 MPYU 无符号乘法,46 PAC 将乘积寄存器装入累加器47 SPAC 从累加器减去PREG寄存器48 SPH 存储PREG高位49 SPL 存储PREG低位50 SPM 设置PREG移位方式51 SQRA 平方并累加前次乘积52 SQRS平方并减去前次乘积,转移指令,53 B 无条件转移54 BACC 按累加器内容转移55 BANZ 当前辅助寄存器不等于零转移(当前寄存器内容缺省修改为减1)MAR*,AR0 LAR AR1,#3H

20、LAR AR0,#60HLOOP1:ADD*+,AR1 BANZ LOOP1,AR0,转移指令,56 BCND 条件转移用于条件调用和返回的条件,使用多个条件,组1:最多可选两个条件,每个条件必须来自不同的类(A类或B类),不能从同一类中选择两个条件组 2:最多可选3个条件,每一个条件必须来自不同的类,57 CALA 调用累加器低16位指定地址处的子程序58 CALL 无条件调用指令59 CC 条件转移指令60 INTR 软中断 K=03161 NMI 不可屏蔽中断 转移到程序存储器 0024H处62 RET 子程序返回63 RETC 条件返回 64 TRAP 软件陷阱中断 转移到程序存储器0

21、022处,C,控制指令,65 BIT 位测试将数据的指定位复制到状态寄存器ST1的TC位位码值0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15位位置15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LDP#6 BIT 0H,15 测试300H处的最低有效位,66 BITT 测试TREG寄存器规定的位TREG四位LSB0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15位位置 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0假设TREG=1H 数据存储器(300h)=4DC8h(301h)=077

22、7hLDP#6HBITT 00HBITT 01H执行完后TC=?67 CLRC 状态位清零 68 IDEL 空闲直至中断发生LDP 装载数据页指针,70 LST 装载状态寄存器 LDP#0H LST#0,60H,2404h,2404h,指令执行前,指令执行后,ST0,6E00h,2604h,60h,05ECh,05ECh,ST1,数据存储器,71 NOP 空操作72 POP 栈顶弹出至累加器的低位73 POPD栈顶弹出至数据存储器74PUSH 累加器低位进栈75PSHD 数据存储器值进栈,压栈操作,堆栈,PUSH/PSHD POP/POPD,PSHD*,AR1,12h,指令执行前,指令执行后,

23、ARP,0,1,1FFh,1FFh,1FFh,AR0,数据存储器,2h,33h,78h,99h,42h,50h,0h,0h,堆栈,12h,12h,2h,33h,78h,99h,42h,50h,0h,76 RPT 重复执行下条指令 RPT#177 SETC78 SPM 设置PREG移位输出方式,79 SST 存储状态寄存器 SST#0,96,2404h,6E00h,ST0,6E00h,6E00h,60h,数据存储器,GISR:SST#0,60HSST 31,61HLDP#0HPUSHSAR AR0,62H,I/O和存储器指令,80 BLDD 数据存储器到数据存储器的块传送 LDP#6H BLDD

24、#300H,20H,0h,0h,指令执行前,指令执行后,320h,0Fh,0h,300h,数据存储器,LAR AR0,#2HLAR AR1,#380HMAR*AR1RPT#15BLDD#300,*0+将300H-30F内的16个数存入380H-39FH内地址为偶数的空间中。,81 BLPD 程序存储器到数据存储器的块传82 DMOV 在数据存储器内传送数据LDP#6DMOV 8,43h,43h,指令执行前,指令执行后,309h,2h,43h,308h,数据存储器,83 IN84 OUT85 SPLK 存储长立即数值至数据存储器SPLK#1111H,*+,AR4,300h,301h,指令执行前,指令执行后,300h,02h,1111h,AR0h,数据存储器,0,4,ARP,86 TBLR 读表 LDP#4 TBLR 6,300h,301h,指令执行前,指令执行后,206h,75h,306h,AR0h,数据存储器,23H,23H,ACC,程序存储器,306h,306h,23h,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号