《DSPTMSLFx数据寻址方式实用教案》由会员分享,可在线阅读,更多相关《DSPTMSLFx数据寻址方式实用教案(24页珍藏版)》请在金锄头文库上搜索。
1、立即寻址方式,即需要寻找的数就在指令里,不需要到存储器中去找,也称为立即数寻址。直接寻址方式,指令给出的是需要寻找的数的地址(dzh),按此地址(dzh)直接去访问。间接寻址方式,指令给出的即不是立即数也不是直接地址(dzh),而是将此地址(dzh)(或寄存器)的内容再作为地址(dzh)。第1页/共23页第一页,共24页。4.1立即(lj)寻址方式立即寻址方式,就是指令中的操作数是常数。两种立即寻址方式:短立即寻址和长立即寻址。短立即寻址,指令可指定(zhdng)8、9或13位的常数做操作数,指令只需单个指令字,操作数包含在这个指令字中。长立即寻址,指令可指定(zhdng)16位的常数做操作数
2、,需要2个指令字,该常数为第2个指令字。立即数寻址指令中在立即操作数前加一个“”号,来表示立即数。第2页/共23页第二页,共24页。例1:使用短立即寻址方式的RPT指令(zhlng)。RPT#100;将RPT后面的指令(zhlng)执行101次1 0 101 1 0 1 10 1 1 01 0 0D0D7D8D15采用立即寻址方式的RPT的操作码8位常数=100第3页/共23页第三页,共24页。例2:使用长立即(lj)寻址方式的RPT指令。ADD#16384,2;将数值16384左移2位后与累加器内容相加1 0 101 11011010D0D3D4D15采用长立即寻址方式的ADD 的操作码第一
3、个指令字110移位次数00 100 00D0D1516位常数16384=4000h第二个指令字00000 00第4页/共23页第四页,共24页。4.2直接(zhji)寻址方式采用直接寻址方式,可以访问(fngwn)数据存储器的512个数据页面和每页中的128个字单元。在直接寻址方式中,偏移量是指令中的操作数,指出某个页面中的某个地址单元,是一个7位的立即数,是64K数据存储器地址的低7位,DP值是数据存储器地址的高9位,用来确定数据页,两者共同形成16位的数据存储器地址。 指令寄存器IR的低7位提供偏移量,指令寄存器的内容是要执行的下条指令的操作码。指令寄存器中,“8MSBs”是指令类型,同时
4、包括指令所访问(fngwn)的数据值移位有关的信息。“0”指出是直接/间接寻址。 “7LSBs”指出本指令引用的数据存储器的偏移量。第5页/共23页第五页,共24页。直接(zhji)寻址方式下的数据格式D15D13 D12D11 D10D9D8D0ARPOV OVM 1 INTM 数据页面指针DP7MSBs8MSBs0D15D8D6D0D7D6D0D15D7页面(9MSBs)偏移量(7MSBs)状态寄存器ST0指令寄存器IR数据存储器地址第6页/共23页第六页,共24页。使用直接寻址方式(fngsh)的步骤(1)设置数据页面将当前数据页面(0511)装入DP。可通过(tnggu)LDP指令或其
5、他能向ST0装入值的任意指令来装载DP。LDP指令仅加载DP而不影响ST0的其他位,并明确指出装入的DP值。例:LDP#32;初始化数据页面指针(2)设置偏移量提供7位偏移量作为指令的操作数。例:ADD1h;将当前数据页面中偏移量为1处的数据加到累加器第7页/共23页第七页,共24页。注意(zhy)(1)在所有程序中必须初始化DP。(2)如果一个程序中所有指令均访问同一个数据页,只需在程序的前面装入DP,而不必在采用直接(zhji)寻址方式的每个指令之前设置数据页。若访问新的数据页,需重新装入新的DP值。(3)用直接(zhji)寻址方式的指令其操作数不加前缀“#”。第8页/共23页第八页,共2
6、4页。例3:使用(shyng)直接寻址的ADD指令。LDP#4;设置数据页面为4(地址:0200h027Fh)ADD9h,5;将数据存储器地址0209h中的内容左移5位后和累加器内容相加第9页/共23页第九页,共24页。例4:使用直接寻址的ADD指令。LDP#5;设置(shzh)数据页面为5(地址:0280h02FFh)ADD9h,16;将数据存储器地址0289h中的内容左移16位后和累加器内容相加第10页/共23页第十页,共24页。例5:使用直接寻址的ADDC指令。LDP#500;设置数据页面为500(地址(dzh):FA00hFA7Fh)ADDC6h;数据存储器地址(dzh)FA06h中的
7、内容和进位位(C)一起和累加器内容相加第11页/共23页第十一页,共24页。4.3 间接(jin ji)寻址方式利用8个16位的辅助寄存器AR0AR7可提供灵活且功能强大的间接寻址方式。辅助寄存器的内容作为一个16位地址可以访问64K数据存储器中的任意单元。除了具有立即数或没有操作数的指令外,所有(suyu)的指令都能使用间接寻址方式。第12页/共23页第十二页,共24页。4.3.1辅助(fzh)寄存器的选择若选择某个辅助寄存器,可将数值07装入ST0的高3位D15、D14、D13,该3位为辅助寄存器指针ARP。由ARP指向(zhxin)的AR称当前AR。在使用间接寻址方式时,当前AR的内容是
8、数据存储器的访问地址。如果指令需要从数据存储器读数据,则ARAU就将地址送入数据读地址总线(DRAB),如果指令需要向数据存储器写数据,ARAU将该地址送到数据写地址总线(DWAB)。指令使用该数据值后,ARAU可使当前辅助寄存器的内容增加或减少。第13页/共23页第十三页,共24页。4.3.2间接(jinji)寻址的选择(1)无增量或减量指令使用当前辅助寄存器的内容作为数据存储器的地址,但当前辅助寄存器的内容不变。(2)加1或减1指令使用当前辅助寄存器的内容作为数据存储器的地址,但当前辅助寄存器的内容增加1或减少(jinsho)1。(3)加或减1个变址量AR0的值是这个变址量。指令使用当前辅
9、助寄存器的内容作为数据存储器的地址,然后使当前辅助寄存器的内容增加或减少(jinsho)一个变址量。(4)按逆向进位增加或减少(jinsho)一个变址量 AR0的值是这个变址量指令使用当前辅助寄存器的内容作为数据存储器的地址,然后使当前辅助寄存器的内容增加或减少(jinsho)一个变址量。此时,加或减是按逆向进位方式进行的,主要用于傅立叶变换。第14页/共23页第十四页,共24页。间接(jinji)寻址操作数操作数选项实例*+*-*0+*0-*BR0+*BR0-不增加也不减少增加1减少1增加变址量减少变址量按逆向进位增加变址量按逆向进位减少变址量LT * 将当前AR所指向的数据存储空间的内容装
10、入临时寄存器TREGLT *+ 将当前AR所指向的数据存储空间的内容装入临时寄存器(TREG),并且当前AR的内容增加1LT *- 将当前AR所指向的数据存储空间的内容装入临时寄存器(TREG),并且当前AR的内容减少1LT *0+ 将当前AR所指向的数据存储空间的内容装入临时寄存器(TREG),并且将AR0的内容加到当前AR的内容中LT *0- 将当前AR所指向的数据存储空间的内容装入临时寄存器(TREG),并且从当前AR的内容减去AR0的内容LT *BR0- 将当前AR所指向的数据存储空间的内容装入临时寄存器(TREG),并且按逆向进位方式从当前AR的内容减去AR0的内容LT *BR0+
11、将当前AR所指向的数据存储空间的内容装入临时寄存器(TREG),并且按逆向进位方式将AR0的内容加到当前AR的内容中第15页/共23页第十五页,共24页。4.3.3下一次的辅助(fzh)寄存器修改AR的指令完成时,它所指定的寄存器成为当前(dngqin)AR。指定下一次AR的指令可以向ARP载入一个新值。当ARP装入此值时,ARP中先前的值被加载到ARB中。例6:MAR*,AR1;将1装入ARP,使AR1成为下一次辅助寄存器LT*+,AR2;将当前(dngqin)辅助寄存器AR1的内容作为地址,把该地址单元的内容装入临时寄存器TREG;然后将AR1的内容加1;再使AR2成为下次使用的辅助寄存器
12、MPY*;将AR2的内容作为地址,把该地址单元的内容和TREG的内容相乘,乘积送入乘积寄存器PREG中,下次使用的辅助寄存器仍为AR2第16页/共23页第十六页,共24页。4.3.4修改(xigi)辅助寄存器(1)使用专用指令修改辅助寄存器LAR:直接将操作数指定的内容装入AR。ADRK:将当前AR值加一立即数。SBRK:将当前AR值减一立即数。MARK:将当前AR值加、减1或加、减一个变址量。(2)利用任何一条(ytio)支持间接寻址操作数的指令都能修改AR。第17页/共23页第十七页,共24页。4.3.5间接(jinji)寻址操作码的格式8MSBs1ARUNNAR15 14 13 12 1
13、1 10 9 8 7 6 5 4 3 2 1 0采用间接寻址时加载到指令寄存器的指令字的格式8MSBs 用于指出指令类型和指令所访问的数据移位信息 1 直接或间接指示符。0-直接寻址;1-间接寻址ARU 辅助寄存器ARU更新代码,决定当前辅助寄存器是否进行和如 何进行增加或减少N 下一个辅助寄存器指示符N。说明该指令是否改变辅助寄存器指针ARP的值。N=0-辅助寄存器指针ARP的内容(nirng)保持不变; N=1-下一个辅助寄存器AR被装入辅助寄存器指针ARPNAR下一个辅助寄存器的值第18页/共23页第十八页,共24页。ARU代码在当前AR上完成的算术运算65400000100000001
14、1111111111对当前AR无操作当前AR-1当前AR当前AR+1当前AR保留当前AR-AR0当前AR(逆向进位)当前AR-AR0当前AR当前AR+AR0当前AR当前AR+AR0当前AR(逆向进位)当前辅助寄存器ARU代码(dim)的作用第19页/共23页第十九页,共24页。间接( jinji)寻址操作码字段的各位及其说明指令操作码的各位操作数操作1587 6 5 4 32 1 08MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs8MSBs1 0 0 0 01 0 0 0 1 1 0 0 1 01 0 0 1 1
15、 1 0 1 0 01 0 1 0 1 1 1 0 0 0 1 1 0 0 11 1 0 1 0 1 1 0 1 11 1 1 0 0 1 1 1 0 11 1 1 1 01 1 1 1 1NARNARNARNARNARNARNARNARNARNARNARNARNARNAR*,ARn*-*-,ARn*+*+,ARn*BR0-*0-*BR0-,ARn*0-,ARn*0+*0+,ARn*BR0+*BR0+,ARn对当前AR无操作NARARP当前AR-1当前AR当前AR-1当前AR; NARARP当前AR+1当前AR当前AR+1当前AR; NARARP当前AR-RCAR0当前AR+当前AR-RCAR
16、0当前AR+; NARARP当前AR-AR0当前AR当前AR-AR0当前AR; NARARP当前AR+AR0当前AR当前AR+AR0当前AR; NARARP当前AR+AR0当前AR+当前AR+AR0当前AR+; NARARP第20页/共23页第二十页,共24页。例7:当前辅助寄存器的值不增加(zngji)也不减少。ADD*,8例8:当前辅助寄存器的值增加(zngji)1。ADD*+,8,AR4例9:当前辅助寄存器的值减少1。ADD*-,8例10:当前辅助寄存器增加(zngji)一个变址量。ADD*0+,8例11:当前辅助寄存器减少一个变址量。ADD*0-,84.3.6举例(jl)第21页/共2
17、3页第二十一页,共24页。例12:当前辅助寄存器按照(nzho)逆位方式增加变址量。ADD*BR0+,8例13:当前辅助寄存器按照(nzho)逆位方式减去变址量。ADD*BR0-,8第22页/共23页第二十二页,共24页。感谢您的欣赏(xnshng)!第23页/共23页第二十三页,共24页。内容(nirng)总结立即寻址方式,即需要寻找的数就在指令里,不需要到存储器中去找,也称为立即数寻址。可通过LDP指令或其他能向ST0装入值的任意指令来装载DP。LDP指令仅加载DP而不影响ST0的其他位,并明确指出装入的DP值。将当前数据页面中偏移量为1处的数据加到累加器。若访问新的数据页,需重新装入新的DP值。利用8个16位的辅助寄存器AR0AR7可提供灵活(ln hu)且功能强大的间接寻址方式。不增加也不减少。然后将AR1的内容加1第二十四页,共24页。