1、第第3章章 TMS320C24X 寻址方式和指令系统寻址方式和指令系统 F 2 4 0 X 系 列系 列 D S P 芯 片 采 用 与芯 片 采 用 与TMS320C240相同的核,所以两者的指相同的核,所以两者的指令系统是相同的。令系统是相同的。3.1 寻址方式寻址方式F240X指令集采用指令集采用3种基本的存储器种基本的存储器寻址方式:寻址方式:立即寻址方式;立即寻址方式;直接寻址方式;直接寻址方式;间接寻址方式。间接寻址方式。3.1.1 立即寻址方式立即寻址方式指令中所需的常数作为指令的操作数直接给出。指令中所需的常数作为指令的操作数直接给出。立即寻址包括:短立即寻址和长立即寻址。立即
2、寻址包括:短立即寻址和长立即寻址。短立即寻址指令:短立即寻址指令:有一个有一个8、9、13位的常数作操作数。位的常数作操作数。短立即寻址指令为一个单指令字,并将常数嵌在该指短立即寻址指令为一个单指令字,并将常数嵌在该指令中。令中。长立即寻址指令:长立即寻址指令:有一个有一个16位的常数作操作数,所以位的常数作操作数,所以要求两个指令字。要求两个指令字。16位常数作为第二条指令发送,常位常数作为第二条指令发送,常数可以是一个绝对常数也可以是一个二进制补码。数可以是一个绝对常数也可以是一个二进制补码。采用短立即寻址的采用短立即寻址的RPT指令指令 RPT#49;将紧跟;将紧跟RPT指令后的那条指令
3、执行指令后的那条指令执行50次。次。指令寄存器中的内容指令寄存器中的内容:1 0 1 1 1 0 1 11 0 1 1 1 0 1 10 0 1 1 0 0 0 10 0 1 1 0 0 0 115 14 13 12 11 10 9 815 14 13 12 11 10 9 87 6 5 4 3 2 1 07 6 5 4 3 2 1 0采用立即寻址的采用立即寻址的RPT代码代码 8位常数位常数49 立即操作数作为立即操作数作为RPT指令字的一部分指令字的一部分。立即操作数以符号立即操作数以符号#为前缀为前缀。长立即寻址的长立即寻址的 ADD指令指令 ADD#65534,2;将数据;将数据655
4、34左移两位后,再将结左移两位后,再将结果加至累加器。果加至累加器。第一条指令字:第一条指令字:1 0 1 1 1 1 1 1 1 0 0 11 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 0 1 015 14 13 12 11 10 9 815 14 13 12 11 10 9 87 6 5 4 3 2 1 07 6 5 4 3 2 1 0采用长立即寻址的采用长立即寻址的ADD代码代码 Shift2 第二条指令字:第二条指令字:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 015 14 13 12
5、 11 10 9 815 14 13 12 11 10 9 87 6 5 4 3 2 1 07 6 5 4 3 2 1 016位常数位常数65534FFFEh 立即操作数包含在第二条指令字中立即操作数包含在第二条指令字中,指令寄存器顺次,指令寄存器顺次接收两个指令字的接收两个指令字的16位值。位值。3.1.2 直接寻址方式直接寻址方式 在直接寻址方式中,指令寄存器的内容为:在直接寻址方式中,指令寄存器的内容为:位位15-8:用于指示指令类型(例如,用于指示指令类型(例如,ADD)和指)和指令所访问的数据值的移位信息。令所访问的数据值的移位信息。位位7:直接直接/间接指示符。间接指示符。0表示为
6、直接寻址;表示为直接寻址;1表示为间接寻址。表示为间接寻址。位位6-0:指示该指令所访问的数据存储器地址的指示该指令所访问的数据存储器地址的偏移量。偏移量。1.用直接寻址方式产生数据地址用直接寻址方式产生数据地址处理器将页指针处理器将页指针DP值:提供地址的值:提供地址的9位高位高有效位,即页码数。有效位,即页码数。指令寄存器中的指令寄存器中的7位最低有效位:提供地址位最低有效位:提供地址的的7位最低有效值,即偏移量。位最低有效值,即偏移量。16位地址位地址 TI公司的公司的TMS320系列芯片将系列芯片将64K的数据存储器分为的数据存储器分为512页,每页页,每页128字称为数据页。字称为数
7、据页。当前数据页由状态寄存器当前数据页由状态寄存器ST0中的中的9位数据页指针位数据页指针(DP)值决定。)值决定。DP值值偏移量偏移量数据存储器数据存储器0000 00000000 0000 .111 1111 第第0页:页:0000h007Fh0000 00001000 0000 .111 1111第第1页:页:0080h-00FFh0000 00010000 0000 .111 1111第第2页:页:0100h017Fh.1111 11111000 0000 .111 1111第第511页:页:FF80hFFFFh2.使用直接寻址方式使用直接寻址方式 处理器用页指针处理器用页指针DP来寻
8、找数据页,用指令寄存器的来寻找数据页,用指令寄存器的低低7位有效位来寻址该页上的特定地址。位有效位来寻址该页上的特定地址。(1)设置数据页:将数据页(设置数据页:将数据页(0-511)装入)装入DP。DP可由可由LDP指令装载,也可由向指令装载,也可由向ST0装载的任何指装载的任何指令来装载令来装载DP。LDP指令直接装载指令直接装载DP,并且不影响,并且不影响ST0的其它位。的其它位。例:例:LDP#32;设置当前数据页为;设置当前数据页为32(1000h-107Fh)注意:在任何程序中都要初始化注意:在任何程序中都要初始化DP。因为上电后不定。因为上电后不定义义DP;复位不初始化;复位不初
9、始化DP。(2)指明偏移量:指明偏移量:7位偏移量由指令的操作数提供。位偏移量由指令的操作数提供。例:例:如果希望如果希望ADD指令取当前数据页的第指令取当前数据页的第5个地址处的数个地址处的数据:据:ADD 5H;将当前数据页中偏移量为;将当前数据页中偏移量为5h处的数据加至处的数据加至累加器累加器说明说明采用直接寻址时,不必每条指令前都要设置数据页。采用直接寻址时,不必每条指令前都要设置数据页。总之,必须保证要访问新的数据页之前改变总之,必须保证要访问新的数据页之前改变DP。3.直接寻址示例直接寻址示例 采用直接寻址的采用直接寻址的ADD指令(移位指令(移位0至至15位)位)LDP#4;数
10、据页设为;数据页设为4(0200h-027Fh)ADD 9H,5;将数据地址;将数据地址0209h处的内容左移处的内容左移5位后加至累加器位后加至累加器 采用直接寻址的采用直接寻址的ADDC指令指令 LDP#500;数据页设为;数据页设为500(FA00h-FA7Fh)ADDC 8H;数据地址;数据地址FA08h处内容和进位值(处内容和进位值(C)被加至累加器被加至累加器 3.1.3 间接寻址方式间接寻址方式 8个辅助寄存器(个辅助寄存器(AR0-AR7)为处理器提供间)为处理器提供间接寻址的接寻址的16位地址,可以访问位地址,可以访问64K数据存储器数据存储器空间的任意单元。空间的任意单元。
11、1.间接寻址操作码格式间接寻址操作码格式:指令寄存器的内:指令寄存器的内容容位位15-8:指示指令类型(例如,指示指令类型(例如,ADD)和指令所访问的数)和指令所访问的数据值的移位信息据值的移位信息位位7:直接直接/间接指示符。间接指示符。0表示为直接寻址;表示为直接寻址;1表示为间接寻址。表示为间接寻址。位位6-4:辅助寄存器更新代码辅助寄存器更新代码ARU,决定当前辅助寄存器,决定当前辅助寄存器是否以及如何进行增或减。是否以及如何进行增或减。位位3:下一个辅助寄存器指示符下一个辅助寄存器指示符N,说明指令是否改变,说明指令是否改变ARP值。值。N=0,ARP内容保持不变;内容保持不变;N
12、=1,下一个辅助寄存器,下一个辅助寄存器NAR的内容装入的内容装入ARP。位位2-0:下一个辅助寄存器的值,包括下一个辅助寄存器下一个辅助寄存器的值,包括下一个辅助寄存器的值。若的值。若N=1,则,则NAR被装入被装入ARP。2.当前辅助寄存器当前辅助寄存器 通过状态寄存器通过状态寄存器ST0中的中的3位辅助寄存器指针位辅助寄存器指针(ARP)来指定)来指定8个辅助寄存器(个辅助寄存器(AR0AR7)的)的某一个作为当前辅助寄存器(某一个作为当前辅助寄存器(AR)。在执行指令的过程中,当前在执行指令的过程中,当前AR的内容作为被访问的内容作为被访问数据存储器的地址。数据存储器的地址。ARP可由
13、可由MAR指令、指令、LST指令或任何支持间接寻指令或任何支持间接寻址的指令来装载。址的指令来装载。3.间接寻址选项间接寻址选项 TMS320C24X提供提供4种间接寻址选项:种间接寻址选项:不增不减;不增不减;增增1或减或减1;增加或减去索引量;增加或减去索引量;增加或减去索引量且反向进位。增加或减去索引量且反向进位。选项选项操作数操作数例子例子不增不减不增不减*LACC *用当前用当前AR所指的数据存储器地址中所指的数据存储器地址中内容装载累加器内容装载累加器增增1*+LACC *+用当前用当前AR所指的数据存储器地址中所指的数据存储器地址中内容装载累加器,然后向当前内容装载累加器,然后向
14、当前AR内容加内容加1减减1*-LACC *-用当前用当前AR所指的数据存储器地址中所指的数据存储器地址中内容装载累加器,然后从当前内容装载累加器,然后从当前AR内容减内容减1加上索引量加上索引量*0+LACC *0+用当前用当前AR所指的数据存储器地址中所指的数据存储器地址中内容装载累加器,然后向当前内容装载累加器,然后向当前AR内容加上内容加上AR0的的内容内容减去索引量减去索引量*0-LACC *0-用当前用当前AR所指的数据存储器地址中所指的数据存储器地址中内容装载累加器,然后从当前内容装载累加器,然后从当前AR的内容减去的内容减去AR0的内容的内容加上索引量,加上索引量,反向进位反向
15、进位*BRO+LACC *BRO+用当前用当前AR所指的数据存储器地所指的数据存储器地址中内容装载累加器,然后向当前址中内容装载累加器,然后向当前AR内容加上内容加上AR0的内,该加法采用反向进位传送的内,该加法采用反向进位传送减去索引量,减去索引量,反向进位反向进位*BRO-LACC *BRO+用当前用当前AR所指的数据存储器地所指的数据存储器地址中内容装载累加器,然后从当前址中内容装载累加器,然后从当前AR内容减去内容减去AR0的内容,该减法采用反向进位传送的内容,该减法采用反向进位传送4.修改辅助寄存器内容修改辅助寄存器内容 用于修改辅助寄存器(用于修改辅助寄存器(AR)内容的特定指令有
16、:)内容的特定指令有:LAR、ADRK、SBRK和和MAR。LAR指令装载指令装载AR;ADRK和和SUBRK分别用来从分别用来从AR中加上或减去一个立中加上或减去一个立即数;即数;MAR指令可使指令可使AR值增加值增加/减少减少1或增加或增加/减少一个索引减少一个索引量。量。另外任何支持间接寻址操作数的指令都可修改辅助寄另外任何支持间接寻址操作数的指令都可修改辅助寄存器。存器。5.辅助寄存器辅助寄存器 除了更新当前辅助寄存器的内容以外,某些指令还除了更新当前辅助寄存器的内容以外,某些指令还可以指明下一个辅助寄存器可以指明下一个辅助寄存器AR。当本条指令执行完之后,下一个辅助寄存器当本条指令执
17、行完之后,下一个辅助寄存器AR便成便成为当前辅助寄存器为当前辅助寄存器AR。例:例:选择新的当前辅助寄存器选择新的当前辅助寄存器ARMAR*,AR1;将当前辅助寄存器;将当前辅助寄存器AR设为设为AR1LACL*+,AR2;用辅助寄存器;用辅助寄存器AR1所指向的地址中内容所指向的地址中内容装载累加器的低装载累加器的低16位,位,AR1内容加内容加1,使,使AR2为当前辅助寄存器为当前辅助寄存器ARSACL*+;将累加器的低;将累加器的低16位存于位存于AR2所指向的地所指向的地址单元,址单元,AR2内容加内容加1。3.2 指令集指令集 根据指令的功能划分为:根据指令的功能划分为:1.累加器、
18、算数和逻辑指令表;累加器、算数和逻辑指令表;2.辅助寄存器和数据页指针指令表;辅助寄存器和数据页指针指令表;3.TREG、PREG和乘法指令表;和乘法指令表;4.转移指令表;转移指令表;5.控制指令表;控制指令表;6.I/O和存储器指令表。和存储器指令表。指令表符号的意义指令表符号的意义 ACC 累加器。累加器。AR当前辅助寄存器。当前辅助寄存器。ARX 用于用于LAR和和SAR指令的指令的3位数据值,指定操作位数据值,指定操作的辅助寄存器。的辅助寄存器。BITX4位数值,用于指定数据存储器中的哪一位将位数值,用于指定数据存储器中的哪一位将被被BIT指令所测试。指令所测试。CM2位数值,位数值
19、,CMPR指令执行指令执行CM值所声明的比值所声明的比较:较:若若CM=00,测试:,测试:(当前当前AR)=(AR0)?;?;若若CM=01,测试:,测试:(当前当前AR)(AR0)?;?;若若CM=11,测试:,测试:(当前当前AR)(AR0)?。?。Shift 4位移位值。位移位值。TP用于条件执行指令的用于条件执行指令的2位数值,代表如下位数值,代表如下4种种条件:条件:若若BIO引脚为低,则引脚为低,则TP=00;若若TC位位=1,则则TP=01;若若TC位位=0,则则TP=10;若无条件,若无条件,则则TP=11。说明说明 表中指令按字母顺序排列;表中指令按字母顺序排列;表中给出了
20、执行每条指令所需要的周期数;表中给出了执行每条指令所需要的周期数;所有指令都假设从内部程序存储器和内部数所有指令都假设从内部程序存储器和内部数 据据存储器中执行;存储器中执行;指令的周期数适用于单指令执行,不适用于重指令的周期数适用于单指令执行,不适用于重复方式。复方式。3.3 典型指令说明典型指令说明申明申明直接寻址时一律认为直接寻址时一律认为DP指针已经指向要寻址的数指针已经指向要寻址的数据区,就不用再重新装载据区,就不用再重新装载DP;而间接寻址时则认为而间接寻址时则认为ARP已经指到当前辅助寄存器已经指到当前辅助寄存器AR,而也不用再单独声明当前,而也不用再单独声明当前AR的值。的值。
21、1.ADD指令指令 对累加器的加操作指令对累加器的加操作指令ADD:将数据存储器单元的数:将数据存储器单元的数或立即数左移后加至累加器。或立即数左移后加至累加器。结果存在累加器中结果存在累加器中。移位时,低位填移位时,低位填0,高位在,高位在SXM1时为符号扩展,时为符号扩展,在在SXM0时填时填0。寻址短立即数时,加操作不受寻址短立即数时,加操作不受SXM的影响,且不能的影响,且不能重复执行。重复执行。ADD 5,2;(;(DP=4:20027Fh)将)将数据存储器单元数据存储器单元0205h的内容左移的内容左移2位之后与位之后与ACC相加,相加,结果存在结果存在ACCADD *+,2,AR
22、0;(;(ARP=4,AR4=282)将)将数据存储器单元数据存储器单元282的内容左移的内容左移2位之后加至位之后加至ACC,结,结果存在果存在ACC,指令执行后,指令执行后AR4=283,ARP0ADD#2;短立即数;短立即数2与与ACC相加,结相加,结果存在果存在ACCADD#1111h,2;长立即数;长立即数1111h左移左移2位后与位后与ACC相加,结果存在相加,结果存在ACC2.AND指令指令和累加器逻辑和累加器逻辑“与与”操作指令操作指令AND:实现被寻址单元:实现被寻址单元的内容和累加器的逻辑的内容和累加器的逻辑“与与”操作,以及长立即数经操作,以及长立即数经过移位之后和连接器
23、进行逻辑过移位之后和连接器进行逻辑“与与”操作。操作。逻辑逻辑“与与”操作之后的结果保存在累加器中。操作之后的结果保存在累加器中。AND 16;(;(DP4:20027Fh)将)将数据存储器单元数据存储器单元0210h的内容与的内容与ACC的内容进行逻辑的内容进行逻辑“与与”操作,结果保留在操作,结果保留在ACC中。中。AND *;(;(ARP=0,AR0=301h)将数据存储器单元将数据存储器单元0301h的内容与的内容与ACC的内容进行逻的内容进行逻辑辑“与与”操作,结果保留在操作,结果保留在ACC中。中。AND#00FFh,4;将立即数;将立即数0FFh左移左移4位位之后和之后和ACC逻
24、辑逻辑“与与”,结果保留在,结果保留在ACC中。中。3.BANZ指令指令辅助寄存器不等于零转移指令辅助寄存器不等于零转移指令BANZ:若当前辅助:若当前辅助寄存器内容不为零,则控制转移至指定的程序存储寄存器内容不为零,则控制转移至指定的程序存储器地址,否则控制转移到下一条指令。器地址,否则控制转移到下一条指令。当前当前AR的缺省修改为减的缺省修改为减1。该指令可用来实现程序的循环执行。该指令可用来实现程序的循环执行。MAR*,AR0;ARP指向指向AR0。LAR AR1,#3;AR1中装入中装入3。LAR AR0,#60h;AR0中装入中装入60h。P1 ADD*+,AR1;将;将AR0所指的
25、数加所指的数加到到ACC,并将,并将AR0的值增的值增1,ARP指向指向AR1。BANZP1,AR0;若;若AR10则循环。则循环。4BCND指令指令条件转移指令条件转移指令BCND:当所规定的条件符合时,控制:当所规定的条件符合时,控制转移到指定的程序存储器地址。转移到指定的程序存储器地址。BCNDP1,LEQ;若;若ACC的内容小于的内容小于等于零时,程序转到等于零时,程序转到P1处开始执行。处开始执行。5.BIT指令指令位测试指令位测试指令BIT:将数据存储器中的指定位的值复制:将数据存储器中的指定位的值复制到状态寄存器到状态寄存器ST1的的TC位。位。将该指令和将该指令和BCND指令结
26、合可判断指定位的状态,并指令结合可判断指定位的状态,并根据该位的状态来控制程序的转移。根据该位的状态来控制程序的转移。BIT0h,15;(;(DP=6)测试)测试300h处的处的最低有效位。最低有效位。BCNDP1,TC;若该位为;若该位为1,则程序转到,则程序转到P1处执行。处执行。6BLDD指令指令数据存储器至数据存储器间的块传送数据存储器至数据存储器间的块传送BLDD:把指定:把指定的数据存储器源地址中的字拷贝到指定的数据存储单的数据存储器源地址中的字拷贝到指定的数据存储单元目的地址中。元目的地址中。源地址和目的地址可由长立即数地址或数据存储器源地址和目的地址可由长立即数地址或数据存储器
27、地址指定。地址指定。注意:注意:如果源地址为长立即数,则目的地址只能为直接或如果源地址为长立即数,则目的地址只能为直接或间接;间接;如果源地址为直接或间接,则目的地址只能为长立如果源地址为直接或间接,则目的地址只能为长立即数。即数。说明说明 该指令不能用于存储器映射的寄存器。该指令不能用于存储器映射的寄存器。使用使用RPT指令重复指令重复BLDD操作期间中断被禁止。操作期间中断被禁止。当当BLDD指令重复使用时,由长立即数指定的源指令重复使用时,由长立即数指定的源(目的)地址保存在(目的)地址保存在PC中,每次重复过程中中,每次重复过程中PC增增1,从而可以访问一串源(目的)地址。从而可以访问
28、一串源(目的)地址。若使用间接寻址方式来指定目的(源)地址,则若使用间接寻址方式来指定目的(源)地址,则在每次重复过程中,可以访问一个新目的(源)地在每次重复过程中,可以访问一个新目的(源)地址。址。若使用直接寻址方式,所指定的源(目的)地址若使用直接寻址方式,所指定的源(目的)地址是个常数,在重复过程中不会被修改。是个常数,在重复过程中不会被修改。BLDD#300h,20h;(;(DP=6:300h37Fh)将)将数据存储器单元数据存储器单元300h的内容复制到数据存储器的内容复制到数据存储器320h。BLDD *+,#321h,AR3;执行前:;执行前:ARP=2,(AR2)=301h,(
29、,(301h)=01h,(,(321h)=0Fh执行后:执行后:ARP=3,(AR2)=302h,(,(301h)=01h,(,(321h)=01h7.CLRC指令指令清除控制位指令清除控制位指令CLRC:指定的控制位清除为:指定的控制位清除为0。指定的控制位为:指定的控制位为:C状态寄存器状态寄存器ST1的进位位的进位位CNF状态寄存器状态寄存器ST1的的RAM配置控制位配置控制位INTM状态寄存器状态寄存器ST0的中断方式位的中断方式位OVM状态寄存器状态寄存器ST0的溢出方式位的溢出方式位SXM状态寄存器状态寄存器ST1的符号扩展方式位的符号扩展方式位TC状态寄存器状态寄存器ST1的测试
30、的测试/控制标志位控制标志位XF状态寄存器状态寄存器ST1的的XF引脚状态位引脚状态位CLRCTC;将;将ST1的的TC位清零。位清零。注:用注:用LST指令也可装入指令也可装入ST0和和ST1寄存器。寄存器。8.IN指令指令从端口输入数据指令从端口输入数据指令IN:从一个:从一个I/O单元读一个单元读一个16位位值到指定的数据存储器单元。值到指定的数据存储器单元。IN#7,1000h;(;(DP=6)从端口地址为)从端口地址为1000h的的外设读数据,并将数据存于数据存储器单元外设读数据,并将数据存于数据存储器单元307h。IN*,5h ;从端口地址为;从端口地址为0005h的外设读数的外设
31、读数据,并将数据存至当前辅助寄存器所指定的数据存据,并将数据存至当前辅助寄存器所指定的数据存储器单元中。储器单元中。9.LACC指令指令装载累加器指令装载累加器指令LACC:将指定的数据存储器单元的:将指定的数据存储器单元的内容或一个内容或一个16位常量左移后送入累加器。位常量左移后送入累加器。移位时,低位填移位时,低位填0,高位在,高位在SXM1时为符号扩展,时为符号扩展,在在SXM0时填时填0。LACC5,4;(;(DP=8:40047fh)将数)将数据存储器单元据存储器单元0405h的内容左移的内容左移4位之后送到位之后送到ACC。LACC*,4;(;(ARP=2,AR2=305h)将)
32、将数据存储器单元数据存储器单元0305h的内容左移的内容左移4位之后送到位之后送到ACC。LACC#1234h,2;将长立即数;将长立即数1234h左移左移2位位之后送到之后送到ACC。10.LACL指令指令装载累加器低位并清零累加器高位指令装载累加器低位并清零累加器高位指令LACL:将被寻:将被寻址数据存储器单元的内容或者被零扩展的址数据存储器单元的内容或者被零扩展的8位常量装入位常量装入累加器的低累加器的低16位,累加器的高半部分填零。位,累加器的高半部分填零。注意注意数据被作为无符号的数据被作为无符号的16位数来处理,而非二进制补位数来处理,而非二进制补码。码。无论无论SXM为何状态,该
33、指令的操作数抑制符号扩展。为何状态,该指令的操作数抑制符号扩展。LACL#10h;将;将10h装载入装载入ACC。LACL1;(;(DP6:300h37Fh)将数据存储器单元将数据存储器单元301h的内容装载入的内容装载入ACCLACL*-,AR4;(;(ARP=0,AR0=301h,(301h)2)将数据存储器单元)将数据存储器单元301h的内容装载的内容装载入入ACC,指令执行完后,指令执行完后AR0=0300h,ARP=4。11.MAR指令和指令和LAR指令指令修改辅助寄存器指令修改辅助寄存器指令MAR:修改辅助寄存器:修改辅助寄存器ARP的值的值,该指令在直接寻址方式下相当于该指令在直
34、接寻址方式下相当于NOP指令。指令。装载辅助寄存器指令装载辅助寄存器指令LAR:将数据存储器的值装载入:将数据存储器的值装载入辅助寄存器。辅助寄存器。LAR和和SAR指令可在子程序调用或中断处理时装载指令可在子程序调用或中断处理时装载和存储辅助寄存器,从而实现在中断或子程序调用时和存储辅助寄存器,从而实现在中断或子程序调用时上下文的保存。上下文的保存。MAR*,AR1;指定当前辅助寄存器;指定当前辅助寄存器为为AR1。MAR*,AR5 ;将当前辅助寄存器;将当前辅助寄存器(AR1)增)增1,并向,并向ARP装入装入5。LARAR1,5H;(;(DP=4:0200h027fh)将数据存储器地址)
35、将数据存储器地址0205h的内容装入的内容装入AR1寄存寄存器。器。LARAR1,#50H;将短立即数;将短立即数0050h装装入入AR1寄存器。寄存器。LARAR1,#1234H;将长立即数;将长立即数1234h装装入入AR1寄存器。寄存器。12.LDP指令指令装载数据页指针指令装载数据页指针指令LDP:将被寻址数据存储器单:将被寻址数据存储器单元的元的9位最低有效位或位最低有效位或9位立即数转入状态寄存器位立即数转入状态寄存器ST0的数据页指针的数据页指针DP。LDP 5;(DP=5:地址:地址0280h02FFh)。DP也可由也可由LST指令装入。指令装入。13.LST指令指令装载状态寄
36、存器指令装载状态寄存器指令LST:将被寻址数据存储器单:将被寻址数据存储器单元中的值装入指定的状态寄存器(元中的值装入指定的状态寄存器(ST0或或ST1)。)。MAR*,AR0LST#0,*,AR1;将辅助寄存器;将辅助寄存器AR0所寻址所寻址的数据存储器单元内容送入状态寄存器的数据存储器单元内容送入状态寄存器ST0,但不包括但不包括INTM位。尽管指定了下一个位。尽管指定了下一个ARP值,但该值被忽略,值,但该值被忽略,ARP不送入不送入ARB。LST#1,0h;(;(DP=6:300h37Fh)将)将数据存储器单元数据存储器单元300h的内容装入的内容装入ST1。LST指令用于子程序调用和
37、中断后恢复状态寄存器。指令用于子程序调用和中断后恢复状态寄存器。注意注意(1)LST#0 操作向操作向ARP装入新值,但并不影响装入新值,但并不影响ST1寄存器中的寄存器中的ARB字段。字段。(2)LST#1 操作中,送入操作中,送入ARB的值也被送入的值也被送入ARP。(3)若在间接寻址方式下用一个操作数来指定下)若在间接寻址方式下用一个操作数来指定下一个一个AR值,则该操作数将被忽略,与之替代的是值,则该操作数将被忽略,与之替代的是将被寻址数据存储器单元所含的将被寻址数据存储器单元所含的3位最高有效位送位最高有效位送入入ARP。(4)状态寄存器中的保留位读出总为)状态寄存器中的保留位读出总
38、为1。写这些位。写这些位不起作用。不起作用。14.LTD指令指令装载装载TREG寄存器指令寄存器指令LTD:将数据寄存单元的内容:将数据寄存单元的内容加载到加载到TREG。按按PM状态位指定的方式对乘积寄存器的内容进行移位,状态位指定的方式对乘积寄存器的内容进行移位,并把移位后的值与并把移位后的值与ACC相加,结果放在相加,结果放在ACC中。中。指定的数据存储单元的内容拷贝到地址加指定的数据存储单元的内容拷贝到地址加1的数据存储的数据存储单元。单元。LTD 123;(;(DP=5:028002FFh,PM=0:乘:乘积不移位)执行前:(积不移位)执行前:(2FBh)=0022h,(,(2FCh
39、)=0000h,(,(TREG)=0003h,(,(PREG)=000Fh,(ACC)=0005h。执行后:(。执行后:(2FBh)=0022h,(2FCh)=0022h,(,(TREG)=0022h,(,(PREG)=000Fh,(,(ACC)=14h。LTD*,AR3;(;(PM0)执行前:)执行前:ARP=1,(AR1)=02FBh,(,(2FBh)=0022h,(,(2FCh)=0000h,(,(TREG)=0003h,(,(PREG)=000Fh,(ACC)=0005h。执行后:。执行后:ARP=3,(,(AR1)=02FBh,(,(2FBh)=0022h,(,(2FCh)=0022
40、h,(TREG)=0022h,(,(PREG)=000Fh,(,(ACC)=0014h。注意注意数据传送功能可通过连续存储块的边界;数据传送功能可通过连续存储块的边界;该指令移动数据的功能不能用于外部数据寄存器或该指令移动数据的功能不能用于外部数据寄存器或存储器映射的寄存器;存储器映射的寄存器;若若LTD被用于外部数据存储器,则功能与被用于外部数据存储器,则功能与LTA相同。相同。15.MACD指令指令乘且累加并带数据移动指令乘且累加并带数据移动指令MACD:可以完成以下功:可以完成以下功能:能:(1)按按PM状态位指定的方式把先前的乘积移位状态位指定的方式把先前的乘积移位,再再与与ACC的内
41、容相加;的内容相加;(2)把指定的数据存储单元的内容加载到把指定的数据存储单元的内容加载到TREG;(3)将存放在将存放在TREG寄存器中的数据存储单元值乘寄存器中的数据存储单元值乘以指定的程序存储器地址中的内容;以指定的程序存储器地址中的内容;(4)将指定的数据存储器地址中的内容复制到下一将指定的数据存储器地址中的内容复制到下一个数据存储器。个数据存储器。MACD0FF00h,08h;(;(DP=6:0300h037Fh;PM=0;CNF=1:B0配置为程序存储器)配置为程序存储器)执行前:数据存储器(执行前:数据存储器(308h)=23h,(,(309h)=18h,程序存储器(程序存储器(
42、FF00h)=4h,(,(TREG)=45H,(PREG)458972h,(,(ACC)=723EC41h。执行后:数据存储器(执行后:数据存储器(308h)=23h,(,(309h)=23h,程序存储器(程序存储器(FF00h)=4h,(,(TREG)=23H,(PREG)8Ch,(,(ACC)=76975B3h。说明说明当重复当重复MAC指令时指令时,每重复一次包含在每重复一次包含在PC中的程序存中的程序存储器地址加储器地址加1。若使用间接寻址指定数据存储器地址则每次重复时就若使用间接寻址指定数据存储器地址则每次重复时就可以访问新的数据存储器地址;可以访问新的数据存储器地址;若使用直接寻址
43、方式指定的数据存储器地址是常数,若使用直接寻址方式指定的数据存储器地址是常数,重复时不会对其进行修改。重复时不会对其进行修改。若若MACD寻址存储器映象寄存器或外部存储器作为数寻址存储器映象寄存器或外部存储器作为数据存储器单元,则据存储器单元,则MACD功能与功能与MAC相同,数据移相同,数据移动不会发生。动不会发生。16.MPY指令指令乘指令乘指令MPY:T寄存器内容和被寻址数据存储器单元寄存器内容和被寻址数据存储器单元的内容相乘,其结果转入的内容相乘,其结果转入P寄存器中。寄存器中。若使用短立即数寻址,则若使用短立即数寻址,则T寄存器和带符号的寄存器和带符号的13位位常数相乘;常数相乘;无
44、论无论SXM为何值,短立即数总是靠右对齐并在相乘为何值,短立即数总是靠右对齐并在相乘之前进行符号扩展。之前进行符号扩展。MPY 5;(;(DP=4:0200h027Fh)将)将数据存储器单元数据存储器单元205h的内容和的内容和TREG寄存器中的内寄存器中的内容相乘,结果保存在容相乘,结果保存在PREG中。中。MPY *,AR2;(;(ARP=1,AR1=40Dh)将数)将数据存储器单元据存储器单元40Dh的内容和的内容和TREG寄存器中的内寄存器中的内容相乘,结果保留在容相乘,结果保留在PREG中,指令执行完后中,指令执行完后ARP=2MPY 031h;立即数;立即数0031h和和TREG寄
45、存器中寄存器中的内容相乘,结果保存在的内容相乘,结果保存在PREG中。中。17.RPT指令指令重复执行下一条指令重复执行下一条指令RPT:紧接:紧接RPT后的那条指令被后的那条指令被执行执行n次,次,n为为RPTC初值加初值加1。若使用直接或间接寻址,则被寻址的数据存储器单元若使用直接或间接寻址,则被寻址的数据存储器单元中的值送入重复计数器(中的值送入重复计数器(RPTC););若使用短立即数寻址,则若使用短立即数寻址,则8位立即数送入位立即数送入RPTC。RPT#20;执行;执行NOP指令指令21次。次。NOP说明说明在上下文切换时不能保存在上下文切换时不能保存RPTC的值,所以重复的值,所
46、以重复循环被认为是多周期指令,它不能被中断。循环被认为是多周期指令,它不能被中断。器件复位时,器件复位时,RPTC被清零。被清零。18.SACH指令指令移位并存储累加器高位指令移位并存储累加器高位指令SACH:将整个累加器复:将整个累加器复制到输出移位寄存器中,然后全部制到输出移位寄存器中,然后全部32位数左移位数左移0 7位,位,再将移位后数值的高再将移位后数值的高16位复制到数据存储器。位复制到数据存储器。在移位时,低位填零,高位丢失,累加器内容不变。在移位时,低位填零,高位丢失,累加器内容不变。SACH10,1;(;(DP4:0200h027Fh)将将ACC的左移的左移1位,高位,高16
47、位存至数据存储器单元位存至数据存储器单元020Ah中。中。SACH*+,AR2;(;(ARP=1)将)将ACC的高的高16位存至位存至AR1指向的数据存储器单元,操作完指向的数据存储器单元,操作完成之后成之后ARP=2。19.SACL指令指令移位并存储累加器低位指令移位并存储累加器低位指令SACL:将整个累加器复:将整个累加器复制到输出移位寄存器中,然后全部制到输出移位寄存器中,然后全部32位数左移位数左移0 7位,位,再将移位后数值的低再将移位后数值的低16位复制到数据存储器。位复制到数据存储器。在移位时,低位填零,高位丢失,累加器内容不在移位时,低位填零,高位丢失,累加器内容不变。变。SA
48、CL10,1;(;(DP4:0200h027Fh)将)将ACC的左移的左移1位,低位,低16位存至数据存储位存至数据存储器单元器单元020Ah中。中。SACH*+,AR2;(;(ARP=1)将)将ACC的高的高16位存至位存至AR1指向的数据存储器单元,指向的数据存储器单元,操作完成之后操作完成之后ARP=2。20.SAR指令指令存储辅助寄存器指令存储辅助寄存器指令SAR:将指定的辅助寄存器:将指定的辅助寄存器(ARx)内容存入被寻址数据存储器单元。)内容存入被寻址数据存储器单元。注意注意在间接寻址方式中,在间接寻址方式中,SAR指令同时也要对当前辅助指令同时也要对当前辅助寄存器内容进行修改时
49、,寄存器内容进行修改时,SAR将在增、减辅助寄存将在增、减辅助寄存器内容前将辅助寄存器值存至数据存储器。器内容前将辅助寄存器值存至数据存储器。SAR AR0,30h ;(;(DP=6:0300h037Fh)将将AR0的值存至数据存储器单元的值存至数据存储器单元0330h中。中。SAR AR0,*+;将;将AR0的值存入其指向的数的值存入其指向的数据存储器单元,同时据存储器单元,同时AR0的值增的值增1。执行前:执行前:ARP=0,AR00400h,(,(0400h)0000h执行后:执行后:ARP=0,AR00401h,(,(0400h)0400h21.SBRK指令指令从当前辅助寄存器中减去立
50、即数指令从当前辅助寄存器中减去立即数指令SBRK:从指定:从指定的辅助寄存器中减去的辅助寄存器中减去8位立即数值,其结果替换原有位立即数值,其结果替换原有的辅助寄存器中的内容。的辅助寄存器中的内容。减法在辅助寄存器算术单元(减法在辅助寄存器算术单元(ARAU)中进行,立)中进行,立即数值作为即数值作为8位正数处理。位正数处理。所有辅助寄存器的算术运算都是无符号的。所有辅助寄存器的算术运算都是无符号的。SBRK#20h;指令执行前:;指令执行前:ARP=5,AR5=0050h,;指令执行后:;指令执行后:ARP=5,AR5=0030h。22.SETC指令指令设置控制位指令设置控制位指令SETC:
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。