《DSP课件第四章TMS320LF240x的数据寻址方式.ppt》由会员分享,可在线阅读,更多相关《DSP课件第四章TMS320LF240x的数据寻址方式.ppt(23页珍藏版)》请在三一办公上搜索。
1、第4章 TMS320LF240 x的数据寻址方式,立即寻址方式,即需要寻找的数就在指令里,不需要到存储器中去找,也称为立即数寻址。直接寻址方式,指令给出的是需要寻找的数的地址,按此地址直接去访问。间接寻址方式,指令给出的即不是立即数也不是直接地址,而是将此地址(或寄存器)的内容再作为地址。,4.1 立即寻址方式,立即寻址方式,就是指令中的操作数是常数。两种立即寻址方式:短立即寻址和长立即寻址。短立即寻址,指令可指定8、9或13位的常数做操作数,指令只需单个指令字,操作数包含在这个指令字中。长立即寻址,指令可指定16位的常数做操作数,需要2个指令字,该常数为第2个指令字。立即数寻址指令中在立即操
2、作数前加一个“”号,来表示立即数。,例1:使用短立即寻址方式的RPT指令。RPT#100;将RPT后面的指令执行101次,例2:使用长立即寻址方式的RPT指令。ADD#16384,2;将数值16384左移2位后与累加器内容相加,4.2 直接寻址方式,采用直接寻址方式,可以访问数据存储器的512个数据页面和每页中的128个字单元。在直接寻址方式中,偏移量是指令中的操作数,指出某个页面中的某个地址单元,是一个7位的立即数,是64K数据存储器地址的低7位,DP值是数据存储器地址的高9位,用来确定数据页,两者共同形成16位的数据存储器地址。指令寄存器IR的低7位提供偏移量,指令寄存器的内容是要执行的下
3、条指令的操作码。指令寄存器中,“8MSBs”是指令类型,同时包括指令所访问的数据值移位有关的信息。“0”指出是直接/间接寻址。“7LSBs”指出本指令引用的数据存储器的偏移量。,直接寻址方式下的数据格式,使用直接寻址方式的步骤,(1)设置数据页面将当前数据页面(0511)装入DP。可通过LDP指令或其他能向ST0装入值的任意指令来装载DP。LDP指令仅加载DP而不影响ST0的其他位,并明确指出装入的DP值。例:LDP#32;初始化数据页面指针(2)设置偏移量提供7位偏移量作为指令的操作数。例:ADD 1h;将当前数据页面中偏移量为1处的数据加到累加器,注意,(1)在所有程序中必须初始化DP。(
4、2)如果一个程序中所有指令均访问同一个数据页,只需在程序的前面装入DP,而不必在采用直接寻址方式的每个指令之前设置数据页。若访问新的数据页,需重新装入新的DP值。(3)用直接寻址方式的指令其操作数不加前缀“#”。,例3:使用直接寻址的ADD指令。LDP#4;设置数据页面为4(地址:0200h027Fh)ADD 9h,5;将数据存储器地址0209h中的内容左移5位后和累加器内容相加,例4:使用直接寻址的ADD指令。LDP#5;设置数据页面为5(地址:0280h02FFh)ADD 9h,16;将数据存储器地址0289h中的内容左移16位后和累加器内容相加,例5:使用直接寻址的ADDC指令。LDP#
5、500;设置数据页面为500(地址:FA00hFA7Fh)ADDC 6h;数据存储器地址FA06h中的内容和进位位(C)一起和累加器内容相加,4.3 间接寻址方式,利用8个16位的辅助寄存器AR0AR7可提供灵活且功能强大的间接寻址方式。辅助寄存器的内容作为一个16位地址可以访问64K数据存储器中的任意单元。除了具有立即数或没有操作数的指令外,所有的指令都能使用间接寻址方式。,4.3.1 辅助寄存器的选择,若选择某个辅助寄存器,可将数值07装入ST0的高3位D15、D14、D13,该3位为辅助寄存器指针ARP。由ARP指向的AR称当前AR。在使用间接寻址方式时,当前AR的内容是数据存储器的访问
6、地址。如果指令需要从数据存储器读数据,则ARAU就将地址送入数据读地址总线(DRAB),如果指令需要向数据存储器写数据,ARAU将该地址送到数据写地址总线(DWAB)。指令使用该数据值后,ARAU可使当前辅助寄存器的内容增加或减少。,4.3.2 间接寻址的选择,(1)无增量或减量指令使用当前辅助寄存器的内容作为数据存储器的地址,但当前辅助寄存器的内容不变。(2)加1或减1指令使用当前辅助寄存器的内容作为数据存储器的地址,但当前辅助寄存器的内容增加1或减少1。(3)加或减1个变址量AR0的值是这个变址量。指令使用当前辅助寄存器的内容作为数据存储器的地址,然后使当前辅助寄存器的内容增加或减少一个变
7、址量。(4)按逆向进位增加或减少一个变址量 AR0的值是这个变址量指令使用当前辅助寄存器的内容作为数据存储器的地址,然后使当前辅助寄存器的内容增加或减少一个变址量。此时,加或减是按逆向进位方式进行的,主要用于傅立叶变换。,间接寻址操作数,下一次的辅助寄存器,修改AR的指令完成时,它所指定的寄存器成为当前AR。指定下一次AR的指令可以向ARP载入一个新值。当ARP装入此值时,ARP中先前的值被加载到ARB中。例6:MAR*,AR1;将1装入ARP,使AR1成为下一次辅助寄存器 LT*+,AR2;将当前辅助寄存器AR1的内容作为地址,把该地址单元的内容装入临时寄存器TREG;然后将AR1的内容加1
8、;再使AR2成为下次使用的辅助寄存器 MPY*;将AR2的内容作为地址,把该地址单元的内容和TREG的内容相乘,乘积送入乘积寄存器PREG中,下次使用的辅助寄存器仍为AR2,修改辅助寄存器,(1)使用专用指令修改辅助寄存器LAR:直接将操作数指定的内容装入AR。ADRK:将当前AR值加一立即数。SBRK:将当前AR值减一立即数。MARK:将当前AR值加、减1或加、减一个变址量。(2)利用任何一条支持间接寻址操作数的指令都能修改AR。,4.3.5 间接寻址操作码的格式,8MSBs 用于指出指令类型和指令所访问的数据移位信息 1 直接或间接指示符。0-直接寻址;1-间接寻址ARU 辅助寄存器ARU
9、更新代码,决定当前辅助寄存器是否进行和如 何进行增加或减少N 下一个辅助寄存器指示符N。说明该指令是否改变辅助寄存器指针ARP的值。N=0-辅助寄存器指针ARP的内容保持不变;N=1-下一个辅助寄存器AR被装入辅助寄存器指针ARPNAR下一个辅助寄存器的值,当前辅助寄存器ARU代码的作用,间接寻址操作码字段的各位及其说明,例7:当前辅助寄存器的值不增加也不减少。ADD*,8例8:当前辅助寄存器的值增加1。ADD*+,8,AR4例9:当前辅助寄存器的值减少1。ADD*-,8例10:当前辅助寄存器增加一个变址量。ADD*0+,8例11:当前辅助寄存器减少一个变址量。ADD*0-,8,4.3.6 举例,例12:当前辅助寄存器按照逆位方式增加变址量。ADD*BR0+,8例13:当前辅助寄存器按照逆位方式减去变址量。ADD*BR0-,8,