第三章 指令系统_第1页
第三章 指令系统_第2页
第三章 指令系统_第3页
第三章 指令系统_第4页
第三章 指令系统_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1主要内容主要内容第三章第三章 23 31 1 寻址方式寻址方式 TMS320LF240 xTMS320LF240 x指令集采用指令集采用3 3种基本的存储器寻址方式:种基本的存储器寻址方式:立立即寻址方式即寻址方式(1)(1)、直接寻址方式、直接寻址方式(2)(2)和间接寻址方式和间接寻址方式(3)(3)。 在在立即寻址方式立即寻址方式(1)(1)中,指令中所需要的常数作为指令的中,指令中所需要的常数作为指令的操作数直接给出。操作数直接给出。 当需要访问数据存储器时,可采用当需要访问数据存储器时,可采用直接直接(2)(2)或或间接寻址方间接寻址方式式(3)(3)。直接寻址方式将指令字的。直接

2、寻址方式将指令字的7 7位与数据存储器页指针位与数据存储器页指针(DP)(DP)的的9 9位连接起来,形成位连接起来,形成1616位数据存储器地址;间接寻址通过位数据存储器地址;间接寻址通过8 8个个1616位辅助寄存器访问数据存储器。位辅助寄存器访问数据存储器。 33 31 11 1 立即寻址方式立即寻址方式 在立即寻址方式中,指令字中包含指令所需的一个常在立即寻址方式中,指令字中包含指令所需的一个常数。在指令中常数前加数。在指令中常数前加“#”#”用于表示立即操作数。用于表示立即操作数。1.1.短立即寻址方式短立即寻址方式,采用短立即寻址的指令将一个,采用短立即寻址的指令将一个8 8位、位

3、、9 9位或位或1313位的常数作为操作数。短立即寻址指令为一个单指位的常数作为操作数。短立即寻址指令为一个单指令字,并且有一个常数嵌在该指令中。令字,并且有一个常数嵌在该指令中。4例例3 31 1 采用短立即寻址的采用短立即寻址的RPTRPT指令:指令: 53 31 11 1 立即寻址方式立即寻址方式 2.2.长立即寻址方式长立即寻址方式:指令将一个:指令将一个1616位常数作为操作数,这位常数作为操作数,这种指令需要两个指令字。该常数为第种指令需要两个指令字。该常数为第2 2指令字,该指令字,该1616位值位值可以是绝对常数或二进制补码。可以是绝对常数或二进制补码。62例例3 32 2 采

4、用长立即寻址的采用长立即寻址的ADDADD指令:指令:73 31 12 2 直接寻址方式直接寻址方式 在直接寻址方式中,数据存储器地址以在直接寻址方式中,数据存储器地址以128128为单位被分成若干块,这些块被称作数据页。为单位被分成若干块,这些块被称作数据页。 64K64K的数据存储器总共包含的数据存储器总共包含512512个数据页,标个数据页,标号从号从0 0511511,见图,见图3 33 3。 8当前数据页由状态寄存器当前数据页由状态寄存器STOSTO中的中的9 9位数据页指针位数据页指针(DP)(DP)值决值决定。除数据页之外,处理器还必须知道该页上被访问的特定。除数据页之外,处理器

5、还必须知道该页上被访问的特定单元,这取决于定单元,这取决于7 7位偏移量,位偏移量, 9l.l.使用直接寻址方式使用直接寻址方式 使用直接寻址方式时,处理器用页指针使用直接寻址方式时,处理器用页指针DPDP来寻找数据页,来寻找数据页,用指令寄存器的低用指令寄存器的低7 7位有效位来寻址该页上的特定地址。位有效位来寻址该页上的特定地址。 l设置数据页设置数据页 将合适的值将合适的值( (从从0-511)0-511)装入装入DPDP。 LDP #32 LDP #32 ;设置当前数据页为;设置当前数据页为32(1000h32(1000h107Fh)107Fh)l指明偏移量指明偏移量 7 7位偏移量由

6、指令的操作数提供。位偏移量由指令的操作数提供。 ADD 5H ADD 5H ;将当前数据页中偏移量为;将当前数据页中偏移量为5 5处的数据处的数据 ;加至累加器;加至累加器 10注:采用直接寻址时,不必每条指令前都要设置注:采用直接寻址时,不必每条指令前都要设置数据页。如果一段代码的所有直接寻址指令都访数据页。如果一段代码的所有直接寻址指令都访问同一个数据页,则只需在该段代码的最前面装问同一个数据页,则只需在该段代码的最前面装载一次载一次DPDP值。总之,必须保证要访问新的数据页值。总之,必须保证要访问新的数据页之前改变之前改变DPDP。112 2直接寻址示例直接寻址示例 例例3 33 3 采

7、用直接寻址的采用直接寻址的ADDADD指令指令( (移位移位0 01515位位) ): LDP #4 LDP #4 ;数据页设为;数据页设为4(0200h4(0200h027Fh)027Fh) ADD 9H ADD 9H,5 5 ;将数据地址;将数据地址0209h0209h处的内容处的内容 ;左移;左移5 5位后加至累加器位后加至累加器 例例3 34 4 采用直接寻址的采用直接寻址的ADDCADDC指令;指令; LDP #500 LDP #500 ;数据页设为;数据页设为500(FA00h500(FA00hFA7Fh)FA7Fh) ADDC 8H ADDC 8H ;数据地址;数据地址FA08h

8、FA08h处内容和进位处内容和进位 ;值;值(C)(C)被加至累加器被加至累加器 123 31 13 3 间接寻址方式间接寻址方式 8 8个辅助寄存器个辅助寄存器(AR0(AR0AR7)AR7)为处理器提供了强大而灵为处理器提供了强大而灵活的寻址能力,提供间接寻址的活的寻址能力,提供间接寻址的1616位地址,可以访问位地址,可以访问64K64K数据存储器空间的任意单元。数据存储器空间的任意单元。l.l.当前辅助寄存器当前辅助寄存器 通过向状态寄存器通过向状态寄存器ST0ST0中的中的3 3位辅助寄存器指针位辅助寄存器指针(ARP)(ARP)装入装入0-70-7,可选择特定的辅助寄存器。,可选择

9、特定的辅助寄存器。ARPARP可由可由MARMAR指令、指令、LSTLST指令或任何支持间接寻址的指令来装载。辅助寄存器指令或任何支持间接寻址的指令来装载。辅助寄存器指针指针ARPARP所指的寄存器被作为当前辅助寄存器或简称为当所指的寄存器被作为当前辅助寄存器或简称为当前前ARAR。 执行指令过程中,当前执行指令过程中,当前ARAR的内容用作被访问的数据存的内容用作被访问的数据存储器地址。储器地址。132 2间接寻址选项间接寻址选项 TMS320C24xTMS320C24x提供提供4 4种间接寻址选项:不增不减,增种间接寻址选项:不增不减,增1 1或减或减1 1,增加或减去索引量,增加或减去索

10、引量且反向进位。增加或减去索引量,增加或减去索引量且反向进位。 143 3下一次的辅助寄存器下一次的辅助寄存器 除了更新当前辅助寄存器的内容以外,某些指令还可以除了更新当前辅助寄存器的内容以外,某些指令还可以指明下一个辅助寄存器指明下一个辅助寄存器ARAR,当本条指令执行完之后,下一个,当本条指令执行完之后,下一个辅助寄存器辅助寄存器ARAR便成为当前辅助寄存器便成为当前辅助寄存器ARAR。 例例3 35 5 选择新的当前辅助寄存器选择新的当前辅助寄存器ARAR MAR MAR * *,ARlARl ;将当前辅助寄存器;将当前辅助寄存器ARAR设为设为ARlARl LACL LACL * *+

11、 +,AR2 AR2 ;用辅助寄存器;用辅助寄存器ARlARl所指向的地址所指向的地址 ;中内容装载累加器的低;中内容装载累加器的低1616位,位, ;ARlARl内容加内容加1; AR21; AR2为当前为当前 ;辅助寄存器;辅助寄存器ARAR SACL SACL * *+ + ;将累加器的低;将累加器的低1616位存于位存于AR2AR2所指所指 ;向的地址单元,;向的地址单元,AR2AR2内容加内容加1 1 154 4间接寻址示例间接寻址示例 例例3 36 6 不增不减不增不减 ADD ADD * *,8 8 ;把当前辅助寄存器指向的数据;把当前辅助寄存器指向的数据 ;存存储器地址的内容左

12、移储器地址的内容左移8 8位之后位之后 ;加至累加器;加至累加器 例例3 37 7 减减1 1 ADD ADD * *- -,8 8 ;对比和例对比和例3 36 6有何不同?有何不同?166 6修改辅助寄存器内容修改辅助寄存器内容 用于修改辅助寄存器用于修改辅助寄存器(AR)(AR)内容的特定指令有:内容的特定指令有:LARLAR、ADRKADRK、SBRKSBRK和和MARMAR。LARLAR指令装载指令装载ARAR;ADRKADRK和和SUBRKSUBRK分别用来从分别用来从ARAR中加上或减去一个立即数;中加上或减去一个立即数;MARMAR指令可使指令可使ARAR值增加减少值增加减少1

13、1或增加减少一个索引量。或增加减少一个索引量。另外任何支持间接寻址操作数的指令都可修改辅助寄存器。另外任何支持间接寻址操作数的指令都可修改辅助寄存器。 173 32 2 指令集指令集根据指令的功能来分,提供根据指令的功能来分,提供6 6张表来说明指令集的概况:张表来说明指令集的概况:累加器、算数和逻辑指令累加器、算数和逻辑指令,见表,见表3 32 2;辅助寄存器和数据页指针指令辅助寄存器和数据页指针指令,见表,见表3 33 3;TREGTREG、PREGPREG和乘法指令和乘法指令,见表,见表3 34 4;转移指令转移指令,见表,见表3 35 5;控制指令控制指令,见表,见表3 36 6;I

14、IO O和存储器操作和存储器操作,见表,见表3 37 7。18先定义这先定义这6 6张概述表的符号意义。张概述表的符号意义。ACC ACC 累加器。累加器。 AR AR 辅助寄存器。辅助寄存器。ARX ARX 用于用于LARLAR和和SARSAR指令的指令的3 3位数据值,指定被操作的辅助位数据值,指定被操作的辅助 寄存器。寄存器。BITX 4BITX 4位数值,用于指定数据存储器数值中的哪一位将被位数值,用于指定数据存储器数值中的哪一位将被BITBIT指令所测试。指令所测试。CM 2CM 2位数值,位数值,CMPRCMPR指令执行指令执行CMCM值所声明的比较:值所声明的比较: 若若CM=0

15、0CM=00,测试当前,测试当前AR=AR0AR=AR0否;否; 若若CM=01CM=01,测试当前,测试当前ARAR0ARAR0ARAR0否;否; 若若CM=11CM=11,测试当前,测试当前ARARAR0AR0否。否。SHIFT 4SHIFT 4位右移量。位右移量。TP TP 用于条件执行指令用于条件执行指令( (BCNDBCND) )的的2 2位数值,代表如下位数值,代表如下4 4种条种条件;若件;若BIOBIO引脚为低,引脚为低,TP=00TP=00;若;若TCTC位位1 1,TP=01TP=01;若;若TCTC位位0 0,TP=10TP=10;无条件;无条件TP=1lTP=1l。19

16、(1)累加)累加器、算数器、算数和逻辑指和逻辑指令令算术算术取绝对值取绝对值:ABS求反求反(求补码求补码):NEG求相反数求相反数:CMPL加法加法:ADD,ADDC,ADDS,ADDT减法减法:SUB,SUBB,SUBC,SUBS,SUBT逻辑逻辑逻辑与逻辑与:AND逻辑或逻辑或:OR异或异或:XORACC移位移位,加载加载ACC,存储存储ACC移位移位:ROL,ROR,SFL,SFR加载加载ACC:LACC,LACL,LACT存储存储ACC:SACH,SACL20(2)辅助)辅助寄存器指寄存器指令令修改当前修改当前AR:ADRK,MAR,SBRK加载、保存加载、保存AR:LAR,SAR转

17、移:转移:BANZ比较:比较:CMPR21(3)TREG、PREG和乘法和乘法加载加载TREG:LT,LTA,LTD,LTP,LTS加载、保存加载、保存PREG:APAC,LPH,PAC, SPAC,SPH,SPL乘法、平方:乘法、平方:MPY,MPYA,MPYS, MPYU,SQRA,SQRS相乘并累加相乘并累加(移动移动):MAC,MACD22(4)转移)转移转移转移无条件转移无条件转移:B,BACC条件转移条件转移:BANZ,BCND调用调用无条件调用无条件调用:CALA,CALL条件调用条件调用:CC返回返回无条件返回无条件返回:RET条件返回条件返回:RETC中断中断: INTR,N

18、MI,TRAP23(5)控制)控制位测试位测试:BIT,BITT置位、清零:置位、清零:CLRC,SETC加载、保存加载、保存ST0、ST1:LST,SST出、入栈:出、入栈:PUSH,POP,PUSHD,POPD加载加载DP、PM:LDP,SPM重复:重复:RPT24(6)I/O和存储器和存储器指令指令数据(块)移动:数据(块)移动:BLDD,BLPD,DMOV读、写读、写I/O设备:设备:IN,OUT表的读表的读/写操作:写操作:TBLR,TBLW立即数加载数据存储器:立即数加载数据存储器:SPLK25加法指令加法指令26装载累加器装载累加器 指令指令2728移位移位 指令指令29减法减法

19、 指令指令30减法减法 指令指令31323334相乘并累加相乘并累加 指令指令35乘法乘法 指令指令36平方指令平方指令37转移转移 指令指令38调用指令调用指令返回指令返回指令3940414243443 33 3 典型指令说明典型指令说明 假设直接寻址一律认为假设直接寻址一律认为DPDP指针已经指向要寻址指针已经指向要寻址的数据区,就不用再重新装载的数据区,就不用再重新装载DPDP,而间接寻址则认,而间接寻址则认为辅助寄存指针为辅助寄存指针ARPARP已经指到当前辅助寄存器已经指到当前辅助寄存器ARAR,也,也不用再声明当前不用再声明当前ARAR。 451 1对累加器的加操作对累加器的加操作

20、ADDADD指令指令 ADDADD指令执行的操作是将数据存储器单元的数或立即数指令执行的操作是将数据存储器单元的数或立即数左移后加至累加器。左移后加至累加器。语法语法: ADD dma,shift: ADD dma,shift ADD dma,16 ADD dma,16 ADD ind,shift,ARn ADD ind,shift,ARn ADD ind,16,ARn ADD ind,16,ARn ADD #k ADD #k ADD #lk,shift ADD #lk,shift 46举例举例: : ADD 5 ADD 5,2 2 ;(DP(DP4 4:0200h0200h027Fh)027

21、Fh)将数据将数据 ;存储器单元;存储器单元205h205h的内容左移的内容左移2 2位位 ;之后与;之后与ACCACC相加,结果存在相加,结果存在ACCACC ADD ADD * *+ +,2 2,AR0AR0 ;(ARP=4(ARP=4,AR4=282)AR4=282)将数据将数据 ;存储器单元;存储器单元282282的内容左移的内容左移2 2 ;位位之后加至之后加至ACCACC,结果存在,结果存在 ;ACCACC,指令执行后,指令执行后AR4=283AR4=283, ;ARP=0ARP=0 47 ADD #2 ADD #2 ;短立即数;短立即数2 2与与ACCACC相加,相加, ;结果存

22、在;结果存在ACCACC ADD #1111hADD #1111h,2 2 ;长立即数;长立即数llllhllllh左移左移2 2位后与位后与 ;ACCACC相加,结果存在相加,结果存在ACC ACC 48 2 2和累加器逻辑和累加器逻辑“与与”操作指令操作指令ANDAND AND AND指令用来实现被寻址单元的内容和累加器的逻辑指令用来实现被寻址单元的内容和累加器的逻辑“与与”操作,以及长立即数经过移位之后和累加器进行逻辑操作,以及长立即数经过移位之后和累加器进行逻辑“与与”操操作。逻辑作。逻辑“与与”操作之后的结果保存在累加器中。操作之后的结果保存在累加器中。语法语法: AND dma:

23、AND dma AND ind,ARn AND ind,ARn AND #lk,shift AND #lk,shift AND #lk,16 AND #lk,16 49举例举例: : AND 16 AND 16 ;(DP=4(DP=4:02000200027Fh)027Fh)将数据存储器单元将数据存储器单元 ;210h210h的内容与的内容与ACCACC的内容进行的内容进行 ;逻辑;逻辑“与与”操作,结果保留在操作,结果保留在ACCACC中中 AND AND * * ;(ARP=0(ARP=0,AR0=0301h)AR0=0301h)将数据存储器单元将数据存储器单元 ;301h301h的内容与

24、的内容与ACCACC的内容进行逻辑的内容进行逻辑“与与” ;操作,结果保留在;操作,结果保留在ACCACC中中 AND #00FFhAND #00FFh,4 4 ;将立即数;将立即数00FFh00FFh左移左移4 4位之后和位之后和 ;ACCACC逻辑逻辑“与与”,结果保留在,结果保留在ACCACC中中 503 3辅助寄存器不等于零转移指令辅助寄存器不等于零转移指令BANZBANZ 若当前辅助寄存器内容不为零,则控制转移至指定的程若当前辅助寄存器内容不为零,则控制转移至指定的程序存储器地址,否则控制转移到下一条指令。序存储器地址,否则控制转移到下一条指令。当前当前ARAR的缺省的缺省修改为减修

25、改为减1 1。该指令可用来实现程序的循环执行。该指令可用来实现程序的循环执行。语法语法: BANZ pma,ind,ARn: BANZ pma,ind,ARn举例举例: : MAR MAR * *,AR0AR0 ;ARPARP指向指向AR0AR0 LAR ARlLAR ARl,#3#3 ;ARlARl中装入中装入3 3 LAR AR0LAR AR0,#60h#60h ;AR0AR0中装入中装入0060h0060hP1P1:ADD ADD * *+ +,ARlARl ;将;将AR0AR0所指的数加到所指的数加到ACCACC,并将,并将 ;AR0AR0的值增的值增1 1,设置,设置AR1AR1为当

26、前为当前ARAR BANZ P1BANZ P1,AR0AR0 ;若;若ARl0ARl0则循环,则循环,(AR1)-1,(AR1)-1, ;且重新设置;且重新设置AR0AR0为当前为当前ARAR51 4 4条件转移指令条件转移指令BCNDBCND 当所规定的条件符合时,控制转移到指定的程序存当所规定的条件符合时,控制转移到指定的程序存储器地址。储器地址。语法语法: BCND pma,cond1,cond2,: BCND pma,cond1,cond2, BCND P1BCND P1,LEQLEQ ;若;若ACCACC的内容小于等于的内容小于等于0 0时,程时,程 ;序转到;序转到P1P1处开始执

27、行处开始执行52 5 5位测试指令位测试指令BITBIT 该指令将数据存储器中的指定位的值复制到状态寄存该指令将数据存储器中的指定位的值复制到状态寄存器器STlSTl的的TCTC位。将该指令和位。将该指令和BCNDBCND指令结合可判断指定位的指令结合可判断指定位的状态,并根据该位的状态来控制程序的转移。状态,并根据该位的状态来控制程序的转移。语法语法: BIT dma,bitcode: BIT dma,bitcode BIT ind,bitcode,ARn BIT ind,bitcode,ARn BIT 0hBIT 0h,1515 ;(DP(DP6)6)测试测试0300h0300h处的最低处

28、的最低 ;有效位;有效位 BCND P1BCND P1,TCTC ;若该位为;若该位为l l,则程序转到,则程序转到P1P1处处 ;执行;执行 536 6数据存储器至数据存储器间的块传送数据存储器至数据存储器间的块传送BLDDBLDD 把指定的数据存储单元器源地址中的字拷贝到指定的把指定的数据存储单元器源地址中的字拷贝到指定的数据存储单元目的地址中。源地址和目的地址可由长立即数据存储单元目的地址中。源地址和目的地址可由长立即数地址或数据存储器地址指定。数地址或数据存储器地址指定。 语法语法: BLDD #lk,dma: BLDD #lk,dma BLDD #lk,ind,ARn BLDD #l

29、k,ind,ARn BLDD dma,#lk BLDD dma,#lk BLDD ind,#lk,ARn BLDD ind,#lk,ARn 54举例举例: : BLDD #300hBLDD #300h,20h20h ;(DP(DP6 6;0300h0300h037Fh)037Fh)将数将数 ;据存储器单元;据存储器单元0300h0300h的内容复的内容复 ;制到数据存储器;制到数据存储器0320h0320h BLDD BLDD * *+ +,#321h#321h,AR3AR3 ;执行前:;执行前:ARP=2ARP=2,(AR2)=030lh(AR2)=030lh,(030lh)=0001h(0

30、30lh)=0001h, (0321h)=000Fh(0321h)=000Fh ;执行后:;执行后:ARP=3ARP=3,(AR2)=0302h(AR2)=0302h,(030lh)=OOOlh(030lh)=OOOlh,(0321h)=0001h (0321h)=0001h 557 7清除控制位指令清除控制位指令CLRCCLRC CLRC CLRC指令将指定的控制位清除为指令将指定的控制位清除为0 0。指定的控制位为下述。指定的控制位为下述控制位之一:控制位之一: C C 状态寄存器状态寄存器STlSTl的进位位的进位位 CNF CNF 状态寄存器状态寄存器STlSTl的的RAMRAM配置控

31、制位配置控制位 INTM INTM 状态寄存器状态寄存器ST0ST0的中断方式位的中断方式位 OVM OVM 状态寄存器状态寄存器ST0ST0的溢出方式位的溢出方式位 SXM SXM 状态寄存器状态寄存器STlSTl的符号扩展方式位的符号扩展方式位 TC TC 状态寄存器状态寄存器STlSTl的测试控制标志位的测试控制标志位 XF XF 状态寄存器状态寄存器STlSTl的的XFXF引脚状态位引脚状态位语法语法: CLRC controlbit: CLRC controlbit举例举例: : CLRC TC CLRC TC ;将;将STlSTl的的TCTC位清位清0 0568 8从端口输入数据指

32、令从端口输入数据指令ININ IN IN指令从一个指令从一个I IO O单元读一个单元读一个1616位值到指定的数据存位值到指定的数据存储器单元。储器单元。ISIS引脚变为低电平,用以指示访问引脚变为低电平,用以指示访问I IO O口。口。 IN 7IN 7,1000h1000h ;(DP(DP6)6)从口地址为从口地址为1000h1000h的的 ;外设读数据,并将数据存于;外设读数据,并将数据存于 ;数据数据存储器单元存储器单元0307h0307h IN IN * *,5h5h ;从口地址为;从口地址为0005h0005h的外设读数的外设读数 ;据,并将数据存至当前辅助寄;据,并将数据存至当

33、前辅助寄 ;存器所指定的数据存储器单元;存器所指定的数据存储器单元 579 9装载累加器的装载累加器的LACCLACC指令指令 LACCLACC指令执行的操作是将指定的数据存储器单元的内容或指令执行的操作是将指定的数据存储器单元的内容或一个一个1616位常量左移后送入累加器。移位时,低位填位常量左移后送入累加器。移位时,低位填0 0,高位在,高位在SXM=lSXM=l时为符号扩展,在时为符号扩展,在SXM=0SXM=0时填时填0 0。 LACC 5LACC 5,4 4 ;(DP(DP8 8:04000400047Fh)047Fh)将数据存储器将数据存储器 ;单元;单元405405的内容左移的内

34、容左移4 4位之后送到位之后送到ACCACC LACC LACC * *,4 4 ;(ARP=2(ARP=2,AR2=0305h)AR2=0305h)将数据存储器单将数据存储器单 ;元;元305305的内容左移的内容左移4 4位之后送到位之后送到ACCACC LACC #1234hLACC #1234h,2 2 ;将长立即数;将长立即数1234h1234h左移左移2 2位之后位之后 ;送到;送到ACC ACC 581010装载累加器低位并清累加器高位指令装载累加器低位并清累加器高位指令LACLLACL LACL LACL指令将被寻址数据存储器单元的内容或者被零扩展指令将被寻址数据存储器单元的内

35、容或者被零扩展的的8 8位常量装入累加器的低位常量装入累加器的低1616位,累加器的高半部分填位,累加器的高半部分填0 0。无。无论论SXMSXM为何状态,该指令的操作数抑制符号扩展。为何状态,该指令的操作数抑制符号扩展。 LACL #10hLACL #10h ;将;将0010h0010h装载入装载入ACCACC LACL 1LACL 1 ;(DP(DP6 6:0300h0300h037Fh)037Fh)将数据存储将数据存储 ;器单元;器单元0301h0301h的内容装载入的内容装载入ACCACC LACL LACL * *- -,AR4AR4 ;(ARP=0(ARP=0,AR0=0301hA

36、R0=0301h,(0301h)(0301h)2)2) ;将数据存储器单元;将数据存储器单元0301h0301h的的 ;内容装载入;内容装载入ACCACC,指令执行完后,指令执行完后 ;AR0=0300hAR0=0300h,ARP=4ARP=4591111修改辅助寄存器指令修改辅助寄存器指令MARMAR和装载辅助寄存器指令和装载辅助寄存器指令LARLAR MAR MAR指令用来修改辅助寄存器指令用来修改辅助寄存器ARPARP的值。的值。LARLAR指令用来将数据指令用来将数据存储器的值装载入辅助寄存器。存储器的值装载入辅助寄存器。LARLAR和和SARSAR指令可在子程序调用或中断处理时装载和

37、存储辅助寄指令可在子程序调用或中断处理时装载和存储辅助寄存器,从而实现在中断或子程序调用时上下文的保存。存器,从而实现在中断或子程序调用时上下文的保存。 MAR MAR * *,ARlARl ;向;向ARPARP装入装入1 1 60 MAR MAR * *+ +,AR5AR5 ;将当前辅助寄存器;将当前辅助寄存器(ARl(ARl) )增增1 1, ;并向;并向ARPARP装入装入5 5 LAR ARlLAR ARl,5H5H ;(DP=4(DP=4:0200h0200h027Fh)027Fh)将数据存储将数据存储 ;器地址;器地址205205的内容装入的内容装入ARlARl寄存器寄存器 LAR

38、 ARlLAR ARl,#50H#50H ;将短立即数;将短立即数0050h0050h装入装入ARlARl寄存器寄存器 LAR ARlLAR ARl,#1234H#1234H;将长立即数;将长立即数1234h1234h装入装入ARlARl寄存器寄存器 611212装载数据页指针指令装载数据页指针指令LDPLDP 该指令将被寻址数据存储器单元的该指令将被寻址数据存储器单元的9 9位最低有效位或位最低有效位或9 9位立即数送入状态寄存器位立即数送入状态寄存器ST0ST0的数据页指针的数据页指针DPDP。DPDP也可由也可由LSTLST指令装入。指令装入。 LDP 5LDP 5 ;(DP(DP5 5

39、:地址:地址0280h0280h02FFh)02FFh) LDP #0LDP #0 621313装载状态寄存器指令装载状态寄存器指令LSTLST LST LST指令将被寻址数据存储器单元中的值装入指定的状态指令将被寻址数据存储器单元中的值装入指定的状态寄存器寄存器(ST0(ST0或或STlSTl) )。LSTLST指令用于子程序调用和中断后恢复状指令用于子程序调用和中断后恢复状态寄存器。态寄存器。 MAR MAR * *,AR0AR0 LST #0LST #0,* *,ARlARl ;将辅助寄存器;将辅助寄存器AR0AR0所寻址所寻址 ;的数据存储器单元内容送入状;的数据存储器单元内容送入状

40、;态寄存器;态寄存器ST0ST0,但不包括,但不包括INTMINTM ;位。尽管指定了下一;位。尽管指定了下一ARPARP值,值, ;但该值被忽略,指定的;但该值被忽略,指定的ARPARP ;不送入;不送入ARBARB LST #1LST #1,0h0h ;(DP(DP6 6:0300h0300h037Fh)037Fh)将数将数 ;据存储器单元;据存储器单元0300h0300h的内容装的内容装 ;入;入STlSTl631414装载装载TREGTREG寄存器指令寄存器指令LTDLTD(1)LTD(1)LTD指令将数据寄存单元的内容加载到指令将数据寄存单元的内容加载到TREGTREG。(2)(2)

41、按按PMPM状态位指定的方式对乘积寄存器的内容进行移位,并把移状态位指定的方式对乘积寄存器的内容进行移位,并把移位后的值与位后的值与ACCACC相加,结果放在相加,结果放在ACCACC中。中。(3)(3)指定的数据存储单元的内容拷贝到地址加指定的数据存储单元的内容拷贝到地址加1 1的数据存储单元。的数据存储单元。 LTD 123LTD 123 ;(DP(DP5 5;0280h0280h02FFh02FFh,PM=0PM=0:乘积不移位:乘积不移位) ) ;执行前:;执行前:(02FBh)=0022h(02FBh)=0022h,(02FCh)=0000h(02FCh)=0000h,(TREG)=

42、0003h(TREG)=0003h,(PREG)=000Fh(PREG)=000Fh,(ACC)=0005h(ACC)=0005h;执行后:;执行后:(02FBh)=0022h (02FBh)=0022h (1)(TREG)=0022h(1)(TREG)=0022h,(2) (PREG)=000Fh(2) (PREG)=000Fh, (ACC)=0014h (ACC)=0014h ,(3)(02FCh)=0022h(3)(02FCh)=0022h, 64 LTD LTD * *,AR3AR3 ;(PM(PM0)0)执行前:执行前:ARP=1ARP=1,(ARl(ARl)=02FBh)=02FB

43、h,(02FBh)=0022h(02FBh)=0022h,(02FCh)=0000h(02FCh)=0000h,(TREG)=0003h(TREG)=0003h,(PREG)=000Fh(PREG)=000Fh,(ACC)=0005h(ACC)=0005h执行后:执行后:ARP=3ARP=3,(ARl(ARl)=02FBh)=02FBh,(02FBh)=0022h(02FBh)=0022h,(1)(TREG)=0022h(1)(TREG)=0022h,(2) (PREG)=000Fh(2) (PREG)=000Fh, (ACC)=0014h (ACC)=0014h (3)(02FCh)=002

44、2h(3)(02FCh)=0022h,65 1515乘且累加并带数据移动指令乘且累加并带数据移动指令MACDMACD(1)(1)按按PMPM状态位指定的方式把先前的乘积移位,再与状态位指定的方式把先前的乘积移位,再与ACCACC内容相加;内容相加;(2)(2)把指定的数据存储单元的内容加载到把指定的数据存储单元的内容加载到TREGTREG;(3)(3)将存放在将存放在TREGTREG寄存器中的数据存储单元值乘以指定的程序存储寄存器中的数据存储单元值乘以指定的程序存储器地址中的内容;器地址中的内容;(4)(4)将指定的数据存储器地址中的内容复制到下一个数据存储器。将指定的数据存储器地址中的内容复

45、制到下一个数据存储器。66 MACD FF00hMACD FF00h,0008h0008h ;DP=6DP=6:0300h0300h037Fh037Fh;PM=0PM=0;CNF=1CNF=1: ;B0B0配置为程序存储器配置为程序存储器 执行前:数据存储器执行前:数据存储器(0308h)=0023h(0308h)=0023h,(0309h)=0018h(0309h)=0018h,程序存储器,程序存储器(FF00h)(FF00h)0004h0004h,(TREG)(TREG)0045h0045h,(PREG)=00458972h(PREG)=00458972h,(ACC)=0723EC41h(

46、ACC)=0723EC41h执行后:数据存储器执行后:数据存储器(0308h)(0308h)0023h0023h(1 1)(ACC)=076975B3h(ACC)=076975B3h,(2 2)(TREG)(TREG)0023h0023h,(3 3)(PREG)=008Ch(PREG)=008Ch,(4 4)(0309h)(0309h)0023h0023h,程序存储器,程序存储器(FF00h)(FF00h)0004h0004h,671616乘指令乘指令MPYMPY T T寄存器内容和被寻址数据存储器单元的内容相乘,其结寄存器内容和被寻址数据存储器单元的内容相乘,其结果转入果转入P P寄存器中。

47、若使用短立即数寻址,则寄存器中。若使用短立即数寻址,则T T寄存器和带符号寄存器和带符号的的1313位常数相乘,无论位常数相乘,无论SXMSXM为何值,短立即数总是靠右对齐并为何值,短立即数总是靠右对齐并在相乘之前进行符号扩展。在相乘之前进行符号扩展。 MPY 5MPY 5 ;(DP(DP4 4:0200h0200h一一027Fh)027Fh)将数据存储器单将数据存储器单 ;元;元0205h0205h的内容和的内容和TREGTREG寄存器中的内容寄存器中的内容 ;相乘,结果保存在;相乘,结果保存在PREGPREG中中 MPY MPY * *,AR2AR2 ;(ARP=1(ARP=1,ARlAR

48、l=040Dh)=040Dh)将数据存储器将数据存储器 ;单元;单元040Dh040Dh的内容和的内容和TREGTREG中的内容中的内容 ;相乘,结果保留在;相乘,结果保留在PREGPREG中,指令执中,指令执 ;行完后;行完后ARP=2ARP=2 MPY #031hMPY #031h ;立即数;立即数0031h0031h和和TREGTREG相乘,结果保存相乘,结果保存 ;在;在PREGPREG中中681717重复执行下一条指令重复执行下一条指令RPTRPT 若使用直接或间接寻址,则被寻址的数据存储器单元中若使用直接或间接寻址,则被寻址的数据存储器单元中的值送入重复计数器的值送入重复计数器(R

49、PTC)(RPTC);若使用短立即数寻址,则;若使用短立即数寻址,则8 8位立位立即数送入即数送入RPTCRPTC。紧接。紧接RPTRPT后的那条指令被执行后的那条指令被执行n+1n+1次,。次,。 PRT #20PRT #20 ;执行;执行NOPNOP指令指令2121次次 NOPNOP691818移位并存储累加器高位指令移位并存储累加器高位指令SACHSACH SACH SACH指令将整个累加器复制到输出移位寄存器中,然后全指令将整个累加器复制到输出移位寄存器中,然后全部部3232位数左移位数左移0 07 7位,再将移位后数值的高位,再将移位后数值的高1616位复制到数据存位复制到数据存储器

50、。在移位时,低位填储器。在移位时,低位填0 0,高位丢失,累加器内容不变。,高位丢失,累加器内容不变。 SACH 10SACH 10,1 1 ;(DP=4(DP=4:0200h0200h027Fh)027Fh)将将ACCACC的左移一位,的左移一位, ;高;高1616位存至数据存储器单元位存至数据存储器单元020Ah020Ah中中 SACH SACH * *+ +,AR2AR2 ;(ARP=1)(ARP=1)将将ACCACC的高的高1616位存至位存至ARlARl指向的数据指向的数据 ;存储器单元,操作完成之后;存储器单元,操作完成之后ARP=2ARP=270 1919移位并存储累加器低位指令

51、移位并存储累加器低位指令SACLSACL SACL SACL指令将整个累加器复制到输出移位寄存器中,然后指令将整个累加器复制到输出移位寄存器中,然后全部全部3232位数左移位数左移0-70-7位,再将移位后数值的低位,再将移位后数值的低1616位复制到数据位复制到数据存储器。在移位时,低位填存储器。在移位时,低位填0 0,高位丢失,累加器内容不变。,高位丢失,累加器内容不变。 SACL 10SACL 10,1 1 ;(DP=4(DP=4;0200h0200h027Fh)027Fh)将将ACCACC的左的左 ;移一位,低;移一位,低1616位存至数据位存至数据 ;存储器单元;存储器单元20Ah2

52、0Ah中中 SACL SACL * *+ +,AR2AR2 ;(ARP=1)(ARP=1)将将ACCACC的低的低1616位存至位存至ARlARl指指 ;向的数据存储器单元,;向的数据存储器单元, ;操作完成之后;操作完成之后ARP=2ARP=2712020存储辅助寄存器指令存储辅助寄存器指令SARSAR SAR SAR指令将指定的辅助寄存器指令将指定的辅助寄存器(ARx(ARx) )内容存入指定的数据内容存入指定的数据存储器单元。在间接寻址方式中,当存储器单元。在间接寻址方式中,当SARSAR指令同时也要对当前指令同时也要对当前辅助寄存器内容进行修改时,辅助寄存器内容进行修改时,SARSAR

53、将在增、减辅助寄存器内容将在增、减辅助寄存器内容前将辅助寄存器值存至数据存储器。前将辅助寄存器值存至数据存储器。 SAR AR0SAR AR0,30h30h ;(DP(DP6 6:0300h0300h一一037Fh)037Fh)将将AR0AR0的的 ;值存至数据存储器单元;值存至数据存储器单元0330h0330h SAR AR0SAR AR0,* *+ + ;将;将AR0AR0的值存入辅助寄存器的值存入辅助寄存器AR0AR0指指 ;向的数据存储器单元,同时;向的数据存储器单元,同时AR0AR0 ;的值增;的值增1 1 执行前:执行前:ARP=0ARP=0,AR0=0400hAR0=0400h,

54、(0400h)=0000h(0400h)=0000h 执行后:执行后:ARP=0ARP=0,AR0=0401hAR0=0401h,(0400h)=0400h(0400h)=0400h722121从当前辅助寄存器中减去立即数指令从当前辅助寄存器中减去立即数指令SBRKSBRK 该该SBRKSBRK指令从指定的辅助寄存器中减去指令从指定的辅助寄存器中减去8 8位立即数值,位立即数值,其结果替换原有的辅助寄存器中的内容。减法在辅助寄其结果替换原有的辅助寄存器中的内容。减法在辅助寄存器算术单元存器算术单元(ARAU)(ARAU)中进行,立即数值被作为中进行,立即数值被作为8 8位正数处位正数处理。所有

55、辅助寄存器的算术运算都是无符号的。理。所有辅助寄存器的算术运算都是无符号的。 SBRK #20hSBRK #20h 执行前:执行前:ARP=5ARP=5,AR5=0050hAR5=0050h, 执行后:执行后:ARP=5ARP=5,AR5=0030hAR5=0030h732222设置控制位指令设置控制位指令SETCSETC SETC SETC指令设置指定的控制位为指令设置指定的控制位为1 1。LSTLST指令也可用于装指令也可用于装载载ST0ST0和和STlSTl寄存器。指定的控制位为下述控制位之一:寄存器。指定的控制位为下述控制位之一: C C 状态寄存器状态寄存器STlSTl的进位位的进位

56、位 CNF CNF 状态寄存器状态寄存器STlSTl的的RAMRAM配置控制位配置控制位 INTM INTM 状态寄存器状态寄存器ST0ST0的中断方式位的中断方式位 OVM OVM 状态寄存器状态寄存器ST0ST0的溢出方式位的溢出方式位 SXM SXM 状态寄存器状态寄存器STlSTl的符号扩展方式位的符号扩展方式位 TC TC 状态寄存器状态寄存器STlSTl的测试控制标志位的测试控制标志位 XF XF 状态寄存器状态寄存器STlSTl的的XFXF引脚状态位引脚状态位 SETC TCSETC TC ;将;将STlSTl的的TCTC位置位置1 1742323存储长立即数至数据存储器指令存储长立即数至数据存储器指令SPLKSPLK SPLK SPLK指令将一个指令将一个1616位值写入任何一个数据存储器单元。位值写入任何一个数据存储器单元。在直接寻址方式下使用该指令对数据存储器单元赋值时,在直接寻址方式下使用该指令对数据存储器单元赋值时,通常需要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论