




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容寻址方式指令集典型指令说明第三章TMS320C24X寻址方式和指令系统
13.1寻址方式
TMS320LF240x指令集采用3种基本的存储器寻址方式:立即寻址方式(1)、直接寻址方式(2)和间接寻址方式(3)。在立即寻址方式(1)中,指令中所需要的常数作为指令的操作数直接给出。当需要访问数据存储器时,可采用直接(2)或间接寻址方式(3)。直接寻址方式将指令字的7位与数据存储器页指针(DP)的9位连接起来,形成16位数据存储器地址;间接寻址通过8个16位辅助寄存器访问数据存储器。23.1.1立即寻址方式在立即寻址方式中,指令字中包含指令所需的一个常数。在指令中常数前加“#”用于表示立即操作数。1.短立即寻址方式,采用短立即寻址的指令将一个8位、9位或13位的常数作为操作数。短立即寻址指令为一个单指令字,并且有一个常数嵌在该指令中。3例3.1采用短立即寻址的RPT指令:
43.1.1立即寻址方式
2.长立即寻址方式:指令将一个16位常数作为操作数,这种指令需要两个指令字。该常数为第2指令字,该16位值可以是绝对常数或二进制补码。52例3.2采用长立即寻址的ADD指令:63.1.2直接寻址方式在直接寻址方式中,数据存储器地址以128为单位被分成若干块,这些块被称作数据页。
64K的数据存储器总共包含512个数据页,标号从0~511,见图3.3。7当前数据页由状态寄存器STO中的9位数据页指针(DP)值决定。除数据页之外,处理器还必须知道该页上被访问的特定单元,这取决于7位偏移量,8l.使用直接寻址方式使用直接寻址方式时,处理器用页指针DP来寻找数据页,用指令寄存器的低7位有效位来寻址该页上的特定地址。设置数据页将合适的值(从0-511)装入DP。
LDP#32;设置当前数据页为32(1000h~107Fh)指明偏移量
7位偏移量由指令的操作数提供。
ADD5H;将当前数据页中偏移量为5处的数据;加至累加器9注:采用直接寻址时,不必每条指令前都要设置数据页。如果一段代码的所有直接寻址指令都访问同一个数据页,则只需在该段代码的最前面装载一次DP值。总之,必须保证要访问新的数据页之前改变DP。102.直接寻址示例例3.3采用直接寻址的ADD指令(移位0~15位):
LDP#4;数据页设为4(0200h~027Fh)ADD9H,5;将数据地址0209h处的内容;左移5位后加至累加器例3.4采用直接寻址的ADDC指令;
LDP#500;数据页设为500(FA00h~FA7Fh)ADDC8H;数据地址FA08h处内容和进位;值(C)被加至累加器113.1.3间接寻址方式
8个辅助寄存器(AR0~AR7)为处理器提供了强大而灵活的寻址能力,提供间接寻址的16位地址,可以访问64K数据存储器空间的任意单元。l.当前辅助寄存器通过向状态寄存器ST0中的3位辅助寄存器指针(ARP)装入0-7,可选择特定的辅助寄存器。ARP可由MAR指令、LST指令或任何支持间接寻址的指令来装载。辅助寄存器指针ARP所指的寄存器被作为当前辅助寄存器或简称为当前AR。执行指令过程中,当前AR的内容用作被访问的数据存储器地址。122.间接寻址选项
TMS320C24x提供4种间接寻址选项:不增不减,增1或减1,增加或减去索引量,增加或减去索引量且反向进位。133.下一次的辅助寄存器除了更新当前辅助寄存器的内容以外,某些指令还可以指明下一个辅助寄存器AR,当本条指令执行完之后,下一个辅助寄存器AR便成为当前辅助寄存器AR。例3.5选择新的当前辅助寄存器ARMAR*,ARl
;将当前辅助寄存器AR设为ARlLACL*+,AR2;用辅助寄存器ARl所指向的地址;中内容装载累加器的低16位,;ARl内容加1;AR2为当前;辅助寄存器ARSACL*+;将累加器的低16位存于AR2所指;向的地址单元,AR2内容加1144.间接寻址示例例3.6不增不减
ADD*,8;把当前辅助寄存器指向的数据;存储器地址的内容左移8位之后;加至累加器例3.7减1ADD*-,8 ;对比和例3.6有何不同?156.修改辅助寄存器内容用于修改辅助寄存器(AR)内容的特定指令有:LAR、ADRK、SBRK和MAR。LAR指令装载AR;ADRK和SUBRK分别用来从AR中加上或减去一个立即数;MAR指令可使AR值增加/减少1或增加/减少一个索引量。另外任何支持间接寻址操作数的指令都可修改辅助寄存器。163.2指令集根据指令的功能来分,提供6张表来说明指令集的概况:累加器、算数和逻辑指令,见表3.2;辅助寄存器和数据页指针指令,见表3.3;TREG、PREG和乘法指令,见表3.4;转移指令,见表3.5;控制指令,见表3.6;I/O和存储器操作,见表3.7。17先定义这6张概述表的符号意义。ACC累加器。AR辅助寄存器。ARX用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。BITX4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。CM2位数值,CMPR指令执行CM值所声明的比较:若CM=00,测试当前AR=AR0否;若CM=01,测试当前AR<AR0否;若CM=10,测试当前AR>AR0否;若CM=11,测试当前AR≠AR0否。SHIFT4位右移量。TP用于条件执行指令(BCND)的2位数值,代表如下4种条件;若BIO引脚为低,TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=1l。18(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,SACL19(2)辅助寄存器指令修改当前AR:ADRK,MAR,SBRK加载、保存AR:LAR,SAR转移:BANZ比较:CMPR20(3)TREG、PREG和乘法加载TREG:LT,LTA,LTD,LTP,LTS加载、保存PREG:APAC,LPH,PAC,SPAC,SPH,SPL乘法、平方:MPY,MPYA,MPYS,MPYU,SQRA,SQRS相乘并累加(移动):MAC,MACD21(4)转移转移无条件转移:B,BACC条件转移:BANZ,BCND调用无条件调用:CALA,CALL条件调用:CC返回无条件返回:RET条件返回:RETC中断:INTR,NMI,TRAP22(5)控制位测试:BIT,BITT置位、清零:CLRC,SETC加载、保存ST0、ST1:LST,SST出、入栈:PUSH,POP,PUSHD,POPD加载DP、PM:LDP,SPM重复:RPT23(6)I/O和存储器指令数据(块)移动:BLDD,BLPD,DMOV读、写I/O设备:IN,OUT表的读/写操作:TBLR,TBLW立即数加载数据存储器:SPLK24加法指令25装载累加器
指令2627移位
指令28减法指令29减法指令30313233相乘并累加指令34乘法指令35平方指令36转移指令37调用指令返回指令3839404142433.3典型指令说明假设直接寻址一律认为DP指针已经指向要寻址的数据区,就不用再重新装载DP,而间接寻址则认为辅助寄存指针ARP已经指到当前辅助寄存器AR,也不用再声明当前AR。
441.对累加器的加操作ADD指令
ADD指令执行的操作是将数据存储器单元的数或立即数左移后加至累加器。语法:ADDdma[,shift]ADDdma,16ADDind[,shift[,ARn]]ADDind,16[,ARn]ADD#kADD#lk[,shift]45举例:ADD5,2
;(DP=4:0200h~027Fh)将数据;存储器单元205h的内容左移2位;之后与ACC相加,结果存在ACC
ADD*+,2,AR0
;(ARP=4,AR4=282)将数据;存储器单元282的内容左移2
;位之后加至ACC,结果存在;ACC,指令执行后AR4=283,
;ARP=0
46
ADD#2
;短立即数2与ACC相加,;结果存在ACC
ADD#1111h,2
;长立即数llllh左移2位后与;ACC相加,结果存在ACC47
2.和累加器逻辑“与”操作指令ANDAND指令用来实现被寻址单元的内容和累加器的逻辑“与”操作,以及长立即数经过移位之后和累加器进行逻辑“与”操作。逻辑“与”操作之后的结果保存在累加器中。语法:ANDdmaANDind[,ARn]AND#lk[,shift]AND#lk,1648举例:AND16
;(DP=4:0200—027Fh)将数据存储器单元
;210h的内容与ACC的内容进行;逻辑“与”操作,结果保留在ACC中
AND*
;(ARP=0,AR0=0301h)将数据存储器单元
;301h的内容与ACC的内容进行逻辑“与”;操作,结果保留在ACC中
AND#00FFh,4
;将立即数00FFh左移4位之后和;ACC逻辑“与”,结果保留在ACC中493.辅助寄存器不等于零转移指令BANZ
若当前辅助寄存器内容不为零,则控制转移至指定的程序存储器地址,否则控制转移到下一条指令。当前AR的缺省修改为减1。该指令可用来实现程序的循环执行。语法:BANZpma[,ind[,ARn]]举例:
MAR*,AR0
;ARP指向AR0
LARARl,#3
;ARl中装入3
LARAR0,#60h
;AR0中装入0060hP1:ADD*+,ARl
;将AR0所指的数加到ACC,并将;AR0的值增1,设置AR1为当前AR
BANZP1,AR0
;若ARl≠0则循环,(AR1)-1,
;且重新设置AR0为当前AR50
4.条件转移指令BCND
当所规定的条件符合时,控制转移到指定的程序存储器地址。语法:BCNDpma,cond1[,cond2][,…]
BCNDP1,LEQ
;若ACC的内容小于等于0时,程;序转到P1处开始执行51
5.位测试指令BIT
该指令将数据存储器中的指定位的值复制到状态寄存器STl的TC位。将该指令和BCND指令结合可判断指定位的状态,并根据该位的状态来控制程序的转移。语法:BITdma,bitcodeBITind,bitcode[,ARn]
BIT0h,15
;(DP=6)测试0300h处的最低;有效位
BCNDP1,TC
;若该位为l,则程序转到P1处;执行526.数据存储器至数据存储器间的块传送BLDD
把指定的数据存储单元器源地址中的字拷贝到指定的数据存储单元目的地址中。源地址和目的地址可由长立即数地址或数据存储器地址指定。语法:BLDD#lk,dmaBLDD#lk,ind[,ARn]BLDDdma,#lkBLDDind,#lk[,ARn]53举例:
BLDD#300h,20h
;(DP=6;0300h~037Fh)将数;据存储器单元0300h的内容复;制到数据存储器0320h
BLDD*+,#321h,AR3
;执行前:ARP=2,(AR2)=030lh,(030lh)=0001h,(0321h)=000Fh
;执行后:ARP=3,(AR2)=0302h,(030lh)=OOOlh,(0321h)=0001h547.清除控制位指令CLRCCLRC指令将指定的控制位清除为0。指定的控制位为下述控制位之一:
C状态寄存器STl的进位位
CNF状态寄存器STl的RAM配置控制位
INTM状态寄存器ST0的中断方式位
OVM状态寄存器ST0的溢出方式位
SXM状态寄存器STl的符号扩展方式位
TC状态寄存器STl的测试/控制标志位
XF状态寄存器STl的XF引脚状态位语法:CLRCcontrolbit举例:CLRCTC;将STl的TC位清0558.从端口输入数据指令ININ指令从一个I/O单元读一个16位值到指定的数据存储器单元。IS引脚变为低电平,用以指示访问I/O口。
IN7,1000h
;(DP=6)从口地址为1000h的;外设读数据,并将数据存于;数据存储器单元0307h
IN*,5h
;从口地址为0005h的外设读数;据,并将数据存至当前辅助寄;存器所指定的数据存储器单元569.装载累加器的LACC指令
LACC指令执行的操作是将指定的数据存储器单元的内容或一个16位常量左移后送入累加器。移位时,低位填0,高位在SXM=l时为符号扩展,在SXM=0时填0。
LACC5,4
;(DP=8:0400~047Fh)将数据存储器;单元405的内容左移4位之后送到ACC
LACC*,4
;(ARP=2,AR2=0305h)将数据存储器单;元305的内容左移4位之后送到ACC
LACC#1234h,2
;将长立即数1234h左移2位之后;送到ACC5710.装载累加器低位并清累加器高位指令LACLLACL指令将被寻址数据存储器单元的内容或者被零扩展的8位常量装入累加器的低16位,累加器的高半部分填0。无论SXM为何状态,该指令的操作数抑制符号扩展。
LACL#10h
;将0010h装载入ACC
LACL1
;(DP=6:0300h~037Fh)将数据存储;器单元0301h的内容装载入ACC
LACL*-,AR4
;(ARP=0,AR0=0301h,(0301h)=2)
;将数据存储器单元0301h的;内容装载入ACC,指令执行完后
;AR0=0300h,ARP=45811.修改辅助寄存器指令MAR和装载辅助寄存器指令LARMAR指令用来修改辅助寄存器ARP的值。LAR指令用来将数据存储器的值装载入辅助寄存器。LAR和SAR指令可在子程序调用或中断处理时装载和存储辅助寄存器,从而实现在中断或子程序调用时上下文的保存。
MAR*,ARl
;向ARP装入1
59
MAR*+,AR5
;将当前辅助寄存器(ARl)增1,;并向ARP装入5
LARARl,5H
;(DP=4:0200h~027Fh)将数据存储;器地址205的内容装入ARl寄存器
LARARl,#50H
;将短立即数0050h装入ARl寄存器
LARARl,#1234H;将长立即数1234h装入ARl寄存器6012.装载数据页指针指令LDP
该指令将被寻址数据存储器单元的9位最低有效位或9位立即数送入状态寄存器ST0的数据页指针DP。DP也可由LST指令装入。
LDP5
;(DP=5:地址0280h~02FFh)
LDP#0
6113.装载状态寄存器指令LSTLST指令将被寻址数据存储器单元中的值装入指定的状态寄存器(ST0或STl)。LST指令用于子程序调用和中断后恢复状态寄存器。
MAR*,AR0
LST#0,*,ARl
;将辅助寄存器AR0所寻址;的数据存储器单元内容送入状;态寄存器ST0,但不包括INTM
;位。尽管指定了下一ARP值,;但该值被忽略,指定的ARP
;不送入ARB
LST#1,0h
;(DP=6:0300h~037Fh)将数;据存储器单元0300h的内容装;入STl6214.装载TREG寄存器指令LTD(1)LTD指令将数据寄存单元的内容加载到TREG。(2)按PM状态位指定的方式对乘积寄存器的内容进行移位,并把移位后的值与ACC相加,结果放在ACC中。(3)指定的数据存储单元的内容拷贝到地址加1的数据存储单元。
LTD123
;(DP=5;0280h~02FFh,PM=0:乘积不移位)
;执行前:(02FBh)=0022h,(02FCh)=0000h,(TREG)=0003h,(PREG)=000Fh,(ACC)=0005h;执行后:(02FBh)=0022h
(1)(TREG)=0022h,(2)
(PREG)=000Fh,(ACC)=0014h,(3)(02FCh)=0022h,
63
LTD*,AR3
;(PM=0)执行前:ARP=1,(ARl)=02FBh,(02FBh)=0022h,(02FCh)=0000h,(TREG)=0003h,(PREG)=000Fh,(ACC)=0005h执行后:ARP=3,(ARl)=02FBh,(02FBh)=0022h,(1)(TREG)=0022h,(2)
(PREG)=000Fh,(ACC)=0014h(3)(02FCh)=0022h,64
15.乘且累加并带数据移动指令MACD(1)按PM状态位指定的方式把先前的乘积移位,再与ACC内容相加;(2)把指定的数据存储单元的内容加载到TREG;(3)将存放在TREG寄存器中的数据存储单元值乘以指定的程序存储器地址中的内容;(4)将指定的数据存储器地址中的内容复制到下一个数据存储器。65
MACDFF00h,0008h
;DP=6:0300h~037Fh;PM=0;CNF=1:;B0配置为程序存储器
执行前:数据存储器(0308h)=0023h,(0309h)=0018h,程序存储器(FF00h)=0004h,(TREG)=0045h,(PREG)=00458972h,(ACC)=0723EC41h执行后:数据存储器(0308h)=0023h(1)(ACC)=076975B3h,(2)(TREG)=0023h,(3)(PREG)=008Ch,(4)(0309h)=0023h,程序存储器(FF00h)=0004h,6616.乘指令MPYT寄存器内容和被寻址数据存储器单元的内容相乘,其结果转入P寄存器中。若使用短立即数寻址,则T寄存器和带符号的13位常数相乘,无论SXM为何值,短立即数总是靠右对齐并在相乘之前进行符号扩展。
MPY5
;(DP=4:0200h一027Fh)将数据存储器单;元0205h的内容和TREG寄存器中的内容
;相乘,结果保存在PREG中
MPY*,AR2
;(ARP=1,ARl=040Dh)将数据存储器;单元040Dh的内容和TREG中的内容
;相乘,结果保留在PREG中,指令执;行完后ARP=2
MPY#031h
;立即数0031h和TREG相乘,结果保存;在PREG中6717.重复执行下一条指令RPT
若使用直接或间接寻址,则被寻址的数据存储器单元中的值送入重复计数器(RPTC);若使用短立即数寻址,则8位立即数送入RPTC。紧接RPT后的那条指令被执行n+1次,。
PRT#20
;执行NOP指令21次
NOP6818.移位并存储累加器高位指令SACHSACH指令将整个累加器复制到输出移位寄存器中,然后全部32位数左移0~7位,再将移位后数值的高16位复制到数据存储器。在移位时,低位填0,高位丢失,累加器内容不变。
SACH10,1
;(DP=4:0200h~027Fh)将ACC的左移一位,;高16位存至数据存储器单元020Ah中
SACH*+,AR2
;(ARP=1)将ACC的高16位存至ARl指向的数据;存储器单元,操作完成之后ARP=269
19.移位并存储累加器低位指令SACLSACL指令将整个累加器复制到输出移位寄存器中,然后全部32位数左移0-7位,再将移位后数值的低16位复制到数据存储器。在移位时,低位填0,高位丢失,累加器内容不变。
SACL10,1
;(DP=4;0200h~027Fh)将ACC的左;移一位,低16位存至数据;存储器单元20Ah中
SACL*+,AR2
;(ARP=1)将ACC的低16位存至ARl指;向的数据存储器单元,;操作完成之后ARP=27020.存储辅助寄存器指令SARSAR指令将指定的辅助寄存器(ARx)内容存入指定的数据存储器单元。在间接寻址方式中,当SAR指令同时也要对当前辅助寄存器内容进行修改时,SAR将在增、减辅助寄存器内容前将辅助寄存器值存至数据存储器。
SARAR0,30h
;(DP=6:0300h一037Fh)将AR0的;值存至数据存储器单元0330h
SARAR0,*+
;将AR0的值存入辅助寄存器AR0指;向的数据存储器单元,同时AR0
;的值增1
执行前:ARP=0,AR0=0400h,(0400h)=0000h
执行后:ARP=0,AR0=0401h,(0400h)=0400h7121.从当前辅助寄存器中减去立即数指令SBRK
该SBRK指令从指定的辅助寄存器中减去8位立即数值,其结果替换原有的辅助寄存器中的内容。减法在辅助寄存器算术单元(ARAU)中进行,立即数值被作为8位正数处理。所有辅助寄存器的算术运算都是无符号的。
SBRK#20h
执行前:ARP=5,AR5=0050h,执行后:ARP=5,AR5=0030h7222.设置控制位指令SETCSETC指令设置指定的控制位为1。LST指令也可用于装载ST0和STl寄存器。指定的控制位为下述控制位之一:
C状态寄存器STl的进位位
CNF状态寄存器STl的RAM配置控制位
INTM状态寄存器ST0的中断方式位
OVM状态寄存器ST0的溢出方式位
SXM状态寄存器STl的符号扩展方式位
TC状态寄存器STl的测试/控制标志位
XF状态寄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青年文明号活动总结
- 2024-2025学年高中语文 第一单元 一 为政以德教学实录 语文版选修《论语》选读
- 第七章电路 第4节并联电路(2)并联电路的应用教学设计 -2023-2024学年沪教版物理九年级上学期
- 2025年插拔力试验机项目发展计划
- 《我家买新房子了-长方形和正方形的面积》(教学设计)-2023-2024学年三年级下册数学青岛版
- 互金背景下的企业投资组合策略研究
- 九年级英语下册 Unit 4 Life on Mars Integrated skill and Study skills教学实录 (新版)牛津版
- 孕妇睡眠与胎儿成长
- 大数据时代下的信息安全管理策略研究
- T-SDYZXCP 013.2-2024 驴智慧养殖技术规程 第2部分:个体登记
- 粮油烘干中心项目可行性研究报告申请报告
- 定制家具安装手册培训
- 大型企业流程管理与信息化诊断规划方案
- 2025年春新北师大版数学一年级下册课件 综合实践 设计教室装饰图
- 统编版(2025新版)七年级下册语文第二单元知识点复习提纲
- 2025-2030年中国砂石开采市场发展展望与投资策略建议报告
- 个人租赁钢管合同范例
- 2024年中国民用酱油市场调查研究报告
- 四川省大学英语三级考试核心词汇
- 人教版生物8年级下册全册教学课件
- 医院药房人员培训课件
评论
0/150
提交评论