




已阅读5页,还剩153页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,2,Smem:16位单寻址操作数。 Xmem:16位双寻址操作数,从DB数据总线上读出。 Ymem:16位双寻址操作数,从CB数据总线上读出。 dmad:16位立即数,数据存储器地址。 pmad:16位立即数,程序存储器地址。 PA: 16位立即数,I/O口地址。 src: 源累加器(A或B)。 dst: 目的累加器(A或B)。 lk: 16位长立即数。,第一节 TMS320C54x的寻址方式,缩 写,3,1立即数寻址 2绝对地址寻址 3累加器寻址 4直接寻址 5间接寻址 6存储器映象寄存器寻址 7堆栈寻址,寻址分类,4,1立即数寻址,在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。,特 点,指令中包含有执行指令所需要的操作数。 立即数分为3、5、8或9位的短立即数和16位的长立即数两种。 短立即数可包含在单字或双字指令中,长立即数在双字指令中。,注 意,举例,5,特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。,用途:用于对寄存器初始化。,支持立即数的指令,6,2绝对地址寻址,特 点,在指令中包含有所要寻址的存储单元的16位地址。这个16位的地址可以用其所在单元的地址标号或者16位符号常数来表示。,绝对寻址有四种类型 : 数据存储器地址(dmad)寻址; 程序存储器地址(pmad)寻址; 端口(PA)寻址; *(1k)寻址。,7,(1)数据存储器地址(damd)寻址,方法,MVKD SAMPLE,*AR3 LD 93h,A,举例,8,用一个符号或一个具体的数来确定程序存储器中的一个地址,(2)程序存储器地址(pmad)寻址,方法,MVPD TABLE,*AR4 MVPD 90h,*AR4,举例,9,用一个符号或一个常数来确定外部I/O口地址,(3)PA寻址 端口(PA),方法,PORTR FIFO,*AR5 PORTR 90h,*AR5,举例,10,用一个符号或一个常数来确定数据存储器中的一个地址,(4)*(lk)寻址,方法,LD *(BUFFER),A,举例,特点,11,绝对寻址总结,16位地址表示形式: 地址符号,如:TABLE; 16位数值,如:89AB、1234。,特点:指令中包含一个固定的16位地址,能寻 址所有数据、程序和I/O存储空间,但 运行速度慢,需要较大的存储空间。,用途:用于对速度要求较低的场合。,12,用累加器中的数值作为地址来读写程序存储器。,方法,READA Smem WRITA Smem,举例,特点,3累加器寻址,13,注 意:, 大多数C54x用A的低16位作为程序存储器的地址,而C548和C549是以A的低23位作为程序存储器地址,C5402是以A的低20位作为程序存储器地址;, 上述两条指令重复使用时,累加器A自动增减;, 只能使用累加器A寻址程序空间。,14,用一个符号或一个常数来确定7位偏移值,与DP或SP共同形成16位的数据存储器实际地址。,4直接寻址,方法,指令格式:,15,地址形成过程:,当CPL=0时,,高9位,低7位,16位数据 存储器地址,CPL=0 7位dma域与9bit的DP相结合 形成16位的数据存储器地址。 CPL=1 7位dma域加上(正偏移)SP 的值形成16位的数据存储器地址。,16,地址形成过程:,当CPL=1时,,高9位,低7位,16位数据 存储器地址,SP+dmad,17,DP地址的范围是从0511(29-1),将存储器分成512页。,以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。,7位dmad范围是从0127,每页有128个可以访问的单元。,SP可以指向存储器中的任意一个地址。dmad可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元,18,可以在不改变DP或SP的情况下,随机地寻址128个存储单元中的任何一个单元。,RSBX CPL LD #x,DP LD u,A ADD v,A = SSBX CPL LD X1,A ADD Y2,A,举例,特点,用途,主要用于要求运算速度较快的场合,19,例1:数据存储器存储数据如图所示,采用数据页指针DP直接寻址,完成x,y单元的两个数据求和。,RSBX CPL,LD #3,DP,LD x,A,ADD y,A,;CPL复位 ;立即数3赋给DP ;x单元的数据送入A ;完成x和y单元的数 据相加,LD #3,DP,LD #3,DP,0 0000 0011,LD x,A,LD x,A,111 1111,0 0000 0011,111 1111,01FF,1000,00 0000 1000,01FF,1000,ADD y,A,000 0000,0 0000 0011,000 0000,0180,0001,0001,+,1001,0180,0001,1001,00 0000,ADD y,A,ADD y,A,LD #4,DP,LD #4,DP,RSBX CPL,LD #3,DP,0 0000 0011,LD x,A,111 1111,00 0000 1000,LD #4,DP,0 0000 0100,ADD y,A,000 0000,+,0,0,5,1,00 0000,00 0000 1500,20,例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。,SSBX CPL,LD 1,A,ADD 2,A,;CPL置位 ;x单元的数据送入A ;完成x和y单元的数 据相加,SP,x:,y:,SP,x:,y:,SSBX CPL,LD 1,A,x:,0200H,1=0201H,0100,00 0000 0100,0100,x:,ADD 2,A,2=0202H,y:,0050,0,00 0000,5,1,0,+,y:,0050,00 0000 0150,21,5间接寻址,方法,特点,22,(1)单操作数寻址,LD *AR1,B,23,注1:寻址16位字时增/减量为1,32位字时增/减量为2。 注2:这种方式只能用写操作指令。 注3:这种方式不允许对存储器映像寄存器寻址。,24,注1:寻址16位字时增/减量为1,32位字时增/减量为2。,25,注3:这种方式不允许对存储器映像寄存器寻址。,26,1) 循环寻址,许多算法,如卷积,相关和FIR滤波等,都需要在存储器中实现一个循环缓冲器。在这些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口。当新的数据来到时,缓冲器就会覆盖最早的数据。 循环缓冲器实现的关键是循环寻址的实现。C54x间接寻址中提供了循环寻址的方式,以%表示。,27,循环寻址的有效地址计算,循环缓冲区的参数主要包括:长度寄存器(BK)、有效基地址(EFB)、尾地址(EOB)。 BK:定义了循环缓冲区的大小R。大小为R的循环缓冲器其地址要始于最低N位为零的地址。并且R要满足下面的条件:2NR EFB:循环缓冲器的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置 0后所得到的值。 EOB:是通过用BK的低N位代替ARx的低N位得到。,例如:缓冲区长度R=32, 若2N32, 则N=6。 缓冲区开始的地址:xxxx xxxx xx00 0000B 缓冲区长度R=32装入循环缓冲长度寄存器BK中。,28,29,循环缓冲器的指示index就是ARx的低N位,步长step就是加到辅助寄存器,或从辅助寄存器中减去的值。循环寻址的算法如下:,if 0 index+step BK; index = index + step else if index + step BK; index = index + step BK else if index + step 0; index = index + step + BK,30,循环寻址要遵循的原则 :,循环缓冲区的长度R小于2N,且地址从一个低N位为0的地址开始; 步长小于或等于循环缓冲区的长度; 所使用的辅助寄存器必须指向缓冲区单元。,31,2) 位倒序寻址,用于快速傅氏变换算法FFT。,位码顺序寻址:按照二进制递增规律寻址。如:0000,0001,0010,0011,1111。,如:0000,1000,0100,1100,1111。,位码倒序寻址:根据二进制递增码,按其位码倒序的规律进行寻址。,32,33,34,35,倒序寻址主要用于FFT算法中,位倒序寻址提高了执行速度和在FFT算法程序中使用存储器的效率。 在这种寻址方式中,用到两个辅助寄存器: AR0:存放的整数N是FFT点数的一半。 ARx:指向数据存放的物理单元。 倒序寻址将AR0加到辅助寄存器ARx中,产生数据存储器的16位地址。 当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。 间接寻址中*ARx+0B表示位倒序寻址。,0110 1000 + 0000 1000 0110 0100,36,例: 设FFT长度为16,则AR0赋值为8,位倒序方式读入数据情况如下:,37,(2)双操作数寻址方式,用于完成执行2次读操作或者1次读和1次写存储的并行操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,两个数据存储器操作数由Xmem和Ymem表示。,Xmem:读操作数;,Ymem:,在两次读操作的指令中,表示一个读操作数;,在一次读和一次写的指令中,表示写操作数。,38,指令格式,MPY *AR2,*AR3,A,39,Xar或Yar 辅助寄存器 00 AR2 01 AR3 10 AR4 11 AR5,辅助 寄存器 选择,双数据存储器操作数寻址的类型,40,总结:间接寻址通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量,进行变址寻址、循环寻址,共有16种修正地址的方式。,用途:用于需要按固定步长寻址的场合。,41,0页寻址。 不影响当前DP或SP值 。用于直接寻址和间接寻址,用来修改存储器映象寄存器,6存储器映象寄存器寻址,功能,LDM PRD,A,举例,特点,方法,高9位数据存储器地址被置0,利用指令中的低位地址访问MMR。,42,C54x共有8条指令可以进行MMR寻址。,LDM MMR,dst ;将MMR加载到累加器 MVDM dmad,MMR ;数据存储器向MMR传送数据 MVMD MMR,dmad ;MMR向指定地址传送数据 MVMM MMRx,MMRy ;MMRx向MMRy传送数据 POPM MMR ;将数据从栈顶弹至MMR PSHM MMR ;将MMR数据压入堆栈 STLM src,MMR ;累加器低位存入MMR STM #lk,MMR ;长立即数lk存入MMR,43,7堆栈寻址,从高地址向低地址方向生长,SP用来管理堆栈,SP始终指向堆栈中所存放的最后一个数据,即SP指针始终指向栈顶。在压入操作时,先减小SP的值,再将数据压入堆栈;在弹出操作时,先从堆栈弹出数据,再增加SP的值。,用来在中断和子程序调用时自动保存程序计数器(PC)中的数值,也能用来保护现场或传送参数,功能,特点,44,进栈操作时,SP先减小,然后数据进入堆栈;, SPSP-1,使SP指向03FEH;,SP,03FEH, 数据进栈,SP=03FEH。,13FF,SP,出栈操作时,数据先出栈,然后SP增加。, SP=03FEH,数据出栈;,SP,13FF, SPSP+1,使SP指向03FFH。,SP,45,采用堆栈寻址的指令:,PSHD Smem ;将Smem中的数据压入堆栈 PSHM MMR ;将MMR中的数据压入堆栈 POPD Smem ;将数据从栈顶弹至Smem中 POPM MMR ;将数据从栈顶弹至MMR中,46,寻址方式总结,47,第二节 程序地址的生成,程序地址生成器(PAGEN)构成,程序计数器(PC) 重复计数器(RC) 块重复计数器(BRC) 块重复起始地址寄存器(RSA) 块重复结束地址寄存器(REA),核心,16位程序计数器(PC)中保存某个内部或外部程序存储器的地址。,地址内容为: 即将取指的某条指令; 某个16位立即操作数; 系数表。 在程序存储器中的地址,48,将程序存储器地址加载到程序计数器的途径,49,1分支转移操作,通过分支转移指令改写PC,来改变程序的流向。,可执行: 分支转移 循环控制 子程序操作,功能,方法,50,条件分支转移 无条件分支转移,BD用指令中所给出的地址加载PC BACCD用所指定的累加器的低16位作为地址加载PC。,带延迟 不带延迟操作,转移种类,BCD如果指令中所规定的条件得到满足,就用指令中所给出的地址加载PC; BANZD如果当前辅助寄存器不等于0,就用指令中所规定的地址加载PC。,BC new,AOV BANZ loop,*AR2-,B next BACC A,51,2调用和返回,转移前,原程序的下条指令的地址被压入堆栈,而在返回时则将这个地址弹出至PC,使被中断了的原程序能继续执行。,当采用调用指令进行子程序或函数调用时,DSP中断当前运行的程序,转移到程序存储器的其它地址继续运行。,功能,方法,无条件调用与返回 有条件调用与返回,带延迟 不带延迟,52,RC cond,CALL sub CALA src,CC sub , cond,RET RETE RETF,条件调用指令,无条件调用指令,无条件返回指令,条件返回指令,53,3条件指令中的条件判断,54,多重条件判断,BC pmad,cond,cond,cond,相与关系,相或关系,BC pmad,cond BC pmad,cond,55,第1组,例如,可以从A类中选一个条件,同时可以从B类中选择一个条件。但是不能从同一类中选择两个条件。 另外,两种条件测试的累加器必须是同一个。,可以同时测试AGT和AOV,但不能同时测试AGT和BGT。,BC pmad,AGT,AOV BC pmad,AGT,BOV,56,第2组,例如,可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件,BC pmad,TC,C,BIO BC pmad,NTC,TC,NBIO,57,特 例,如果条件分支转移出去的地方只有12字的程序段,则可以用一条单周期条件执行指令(XC)来代替分支转移指令: XC n,cond,cond,cond 当n=1,且条件得到满足,就执行紧随此 条件指令后的个字指令。 当n=2,且条件得到满足,就执行紧随此 指令后的1个双字指令或者2条单 字指令。 当条件不满足,就依n的值执行1 条或2条NOP指令。,58,59,4单条指令的重复操作,利用RPT和RPTZ可重复执行其后的一条指令。 重复的次数是指令操作数加1,这个值保存在16位的重复计数寄存器(RC)中。,实现,60,特点1,RC内容不能编程设置,只能由重复指令(RPT和RPTZ)中的操作数加载。操作数n的最大值为65 535,最大重复执行次数为65 535+1。,一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括NMI,但不包括RS)均不响应。,61,重复过程,当RPT指令执行时: 首先把循环的次数装入循环计数器(RC), 其循环次数n由一个16位单数据存储器操作数 Smem或一个8位或16位常数k或lk给定。这样, 紧接着的下一条指令会循环执行n+1次。 循环,RC在执行减1操作时不能被访问。 注意:该循环内不能套用循环。 当RPTZ指令执行时:对目的累加器dst清0, 循环执行下一条指令n+1次。,62,例3-5 利用单条指令的重复操作对数组x5=0,0,0,0,0进行初始化。 .bss x,5 ;为数组x分配5个存储单元 STM #x,AR1 ;将x的首地址赋给AR1 LD #0,A ;对A清零 RPT #4 ;设置重复执行下条指令5次 STL A,*AR1+;对x5各单元清零 或者 .bss x,5 STM #x,AR1 RPTZ A,#4;对A清零并设置重复执行下条指令5次 STL A,*AR1+,63,特点,5块重复操作,利用C54x内部的块重复计数器(BRC,加载值可为065 535)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPTB,可对紧随RPTB、由若干条指令构成的程序块进行重复操作。,功能,使用RPTB指令将重复操作的范围扩大到64K长度的循环回路,注意,1.RPT指令一旦执行,不会停止操作,即使有中断请求也不响应; 2.RPTB指令可以响应中断;,64,块程序重复指令RPTB的操作数是循环回路的结束地址; 其下条指令就是重复操作的内容; 在使用RPTB之前必须先用STM指令将所规定的迭代次数加载到块重复计数器(BRC)中。 单条重复指令执行时关闭所有可屏蔽中断,而块重复操作执行期间可以响应中断。,说明,65,.bss x,5 start: LD #1,16,B STM #4,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B,例3-6,对数组x5中的每个元素加1。,66,对寄存器的占用,6循环的嵌套,执行RPT指令时占用RC寄存器(重复计数器); 执行RPTB指令时要用到BRC、RSA和RSE寄存器。只有一套块重复寄存器,故块重复操作不能嵌套。 由于RPT与RPTB两者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令的循环中,实现循环的嵌套。执行BANZ指令只占用辅助寄存器ARx。不会与RPT RPTB指令相冲突。,嵌套原则,参与嵌套循环的寄存器不能重复使用,67,图3-3 一个三重循环嵌套结构,68,第四节 指令系统概述,TMS320C54x的指令系统分助记符形式和代数式形式两种。 共有指令129条,由于操作数的寻址方式不同,派生至205条。,69,C54x的助记符指令是由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都是用助记符表示。,例如: LD #0FFh, A ;将立即数0FF传送至A,操作码,源操作数,目的操作数,注释,70,4.1 指令系统中的符号,1.指令系统中的符号和缩略语,71,1.指令系统中的符号和缩略语,72,1.指令系统中的符号和缩略语,73,1.指令系统中的符号和缩略语,74,1.指令系统中的符号和缩略语,75,1.指令系统中的符号和缩略语,76,1.指令系统中的符号和缩略语,77,1.指令系统中的符号和缩略语,78,2.指令操作码符号和缩略语,79,2.指令操作码符号和缩略语,80,4.2 TMS320C54x的指令系统,C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。,按指令的功能可分成五大类:,算术运算指令 逻辑运算指令 程序控制指令,装入指令 重复操作指令,81,1. 算术运算指令,算术运算指令是实现数学计算的重要指令集合。 C54x的算术指令具有运算功能强、指令丰富等特点。,包括:,加法指令(ADD) 减法指令(SUB) 乘法指令(MPY) 乘法-累加/减指令(MAC/MAS) 双字运算指令(DADD) 特殊用途指令,82,(1)加法指令,83,(2)减法指令,84,(3)乘法指令,85,(4)乘法-累加和乘法-减法指令,86,(4)乘法-累加和乘法-减法,87,(4)乘法-累加和乘法-减法指令,88,(5)双字算术运算指令,89,(6)特殊运算指令,90,(6)特殊运算指令,91,2. 逻辑运算指令,C54x的指令系统具有丰富的逻辑运算指令。,包括:,与运算指令(AND) 或运算指令(OR) 异或运算指令(XOR) 移位操作指令(SHIFT) 测试操作指令(TEST),92,(1)与运算指令,与逻辑运算指令共有5条。,93,(2)或运算指令,94,(3)异或运算指令,95,(4)移位操作指令,指令格式:操作码 源操作数 ,移位数 ,目的操作数,C54x共有6条移位指令,可实现带进位位循环移位、带TC位循环左移、算术移位、条件移位和逻辑移位等操作。,操 作 码: ROL、ROLTC、ROR、SFTA、SFTC、SFTL,源操作数: src,移 位 数: SHIFT,目的操作数:dst,96,(4)移位操作指令, 带进位位循环左移,操作数src:累加器A或B,指令功能: 累加器src与进位位C循环左移一位。,执行过程: C src(0) src(300) src(311) src(31) C 0 src(3932),指令格式: ROL src,;C的值移入src的最低位,;src左移一位,;src的最高位移入C,;src的保护位清0,97,(4)移位操作指令, 带测试位循环左移,操作数src:累加器A或B,指令功能: 累加器src与测试位TC循环左移一位。,执行过程:,指令格式: ROLTC src, TC的值移入src的最低位, 累加器src左移一位, src的最高位移入TC, src的保护位清0,0,98,(4)移位操作指令, 带进位位循环右移,操作数src:累加器A或B,指令功能: 累加器src与进位位C循环右移一位。,执行过程:,指令格式: ROR src, C的值移入src的31位 累加器src右移一位 src的最低位移入C src的保护位清0,0,99, 算术移位,操作数src:累加器A或B,指令功能: 根据SHIFT,src的内容算术移位。,指令格式: SFTA src, SHIFT , dst,100, 算术移位,执行过程:,当SHIFT 0时,进行算术右移 1) src的第(-SHIFT-1)位复制到进位位C; 2) 40位src右移SHIFT位,结果存入src或dst; 3) 符号扩展处理 若SXM=1,进行符号位扩展。 src(39)写入dst(39(39+SHIFT+1) 若SXM=0,不进行符号位扩展。 0写入dst(39(39+SHIFT+1),101, 算术移位,执行过程:,当SHIFT 0时,进行算术左移 1) src的第(39-SHIET)位复制到进位位C; 2) 40位src左移SHIFT位,结果存入src或dst; 3) 将0置入dst的低SHIFT的各位 0写入dst(SHIFT-1)0),102,(4)移位操作指令, 条件移位,操作数src:累加器A或B,指令格式: SFTC src,103, 条件移位,执行过程: 当src = 0时,将1写入测试位TC; 当src0时,进行条件移位。 若src有两个有效符号位,则移位。 32位src左移一位; 保护位src(3932)不变; 0写入测试位TC。 若src只有一个符号位,则不移位。 1写入测试位TC。,104,(4)移位操作指令,操作数src:累加器A或B,指令格式: SFTL src ,SHIFT ,dst, 逻辑移位,105, 逻辑移位,执行过程: 若SHIFT 0,则进行逻辑左移。 src的第(31-(SHIFT-1)位复制到进位位C; src(31-SHIFT)0)左移SHIFT位存入dst; 0写入dst的低SHIFT位,即0dst(SHIFT-1)0); 0写入dst的高8位,即0dst(3932)。,106,(5)测试操作指令,C54x共有5条测试操作指令。, BIT,指令格式: BIT Xmem,BITC,指令功能: (Xmem(15-BITC)TC 功能说明: 将Xmem的指定位复制到TC位。,操 作 数: Xmem双数据存储操作数 BITC测试位的位代码, 取值:015,107,(5)测试操作指令, BITF,指令格式: BITF Smem,#lk,指令功能: If(Smem)AND lk)= 0 Then 0 TC Else 1 TC 功能说明: 测试Smem中由1k指定的某些位。 若指定的测试位为0,TC=0,否则,TC=1。 lk在测试指定位中起屏蔽作用。,108,(5)测试操作指令, BITT,指令格式: BITT Smem,指令功能: (Smem(15-T(30)TC 功能说明: 将Smem的指定位复制到TC中。 T寄存器的低4位T(30)用于确定测试位 的位代码,位地址对应于15-T(30)。,109,(5)测试操作指令, CMPM,指令格式: CMPM Smem,#lk,指令功能: If (Smem)= lk Then 1 TC Else 0 TC 功能说明: 比较Smem中的操作数与常量1k是否相等。 若(Smem)= 1k,则TC = 1,否则,TC = 0。,110,(5)测试操作指令, CMPR,指令格式: CMPR CC,ARx,操 作 数: CC条件代码,取值:00b11b ARx辅助寄存器AR0AR7,指令功能: If (cond) Then 1 TC Else 0 TC 功能说明: 根据条件代码CC,将指定的ARx与AR0比较。若满足条件,则TC = 1,否则,TC = 0。,111,(5)测试操作指令, CMPR,注意:所有的条件都以无符号操作数的形式参与运算。,112,3. 程序控制指令,C54x的程序控制指令共有31条,可分为6类:,包括:,分支转移指令 子程序调用指令 中断指令 返回指令 堆栈操作指令 其他程序控制指令,113,3.3.4 程序控制指令,(1).分支转移指令,分支转移指令共有6条,可实现无条件转移、有条件转移和远程转移等。,操 作 数: pmad立即数表示的程序存储器 地址。取值:065 535,指令格式: BD pmad, BD,114,(1).分支转移指令,指令格式: BD pmad,功能说明: 将pmad指定的程序存储器地址赋给PC, 实现分支转移。, BD,注 意: 若指令带后缀D,则为延迟方式,紧随 该指令的两条单字指令或一条双字指令 先被取出执行,然后程序再转移。 该指令不能被循环执行。,115,(1).分支转移指令,指令格式: BACCD src, BACCD,操 作 数: src累加器A或B,指令功能: src(150) PC,功能说明: 由src低16位所确定的地址赋给PC。,注 意: 若指令带后缀D,则为延迟方式。 该指令不能被循环执行。,116,(1).分支转移指令,指令格式: BANZD pmad,Sind, BANZD,指令功能: If (ARx) 0) Then pmadPC Else (PC)+2PC,功能说明: 若当前ARx0,则pmad的值赋给PC, 否则,PC值加2。,注 意: 带后缀D为延迟方式。指令不能循环执行。,117,(1).分支转移指令,指令格式: BCD pmad, cond, cond, cond, BCD,指令功能: If (cond(s) Then pmadPC Else (PC)+2PC,功能说明: 若满足特定条件,则pmad的值赋给PC, 否则,PC值加2。,注 意: 带后缀D为延迟方式。指令不能循环执行。,118,119,测试条件的分类,120,(1).分支转移指令,指令格式: FBD extpmad, FBD,操 作 数: extpmad23位立即数表示的程序存储 器地址。取值:07F FFFF,指令功能: (extpmad(150)PC; (extpmad(2216)XPC,功能说明: 将extpmad的高7位(2216)确定的页赋 给XPC,extpmad的低16位赋给PC。,注 意: 带后缀D为延迟方式。指令不能循环执行。,121,(1).分支转移指令,指令格式: FBACCD src, FBACCD,指令功能: (src(150)PC;(src(2216)XPC,功能说明: 将src的高7位(2216) 赋给XPC,src的 低16位(150) 赋给PC。,注 意: 带后缀D为延迟方式。指令不能循环执行。,122,(2).子程序调用指令,子程序调用指令共有5条,可实现子程序的无条件调用、有条件调用和远程调用等,并具有延时操作。,指令格式: CALAD src, CALAD,功能说明:首先将返回的地址压入栈顶保存,然后 将src的低16位赋给PC,实现子程序调用。,123,指令格式: CALLD pmad, CALLD,功能说明: 首先将返回的地址压入栈顶保存,然后 将pmad的值赋给PC,实现子程序调用。,124,指令格式: CCD pmad, cond, cond, cond, CCD,功能说明:若满足条件,则将返回地址压入栈顶,将 pmad的值赋给PC,实现子程序调用。,125, FCALAD,指令格式: FCALAD src,指令功能: 若非延时,(SP)-1SP (PC)+1TOS (SP)-1SP (XPC)TOS (src(150)PC (src(2216)XPC,功能说明: 先将返回地址PC、XPC压入栈顶,然后将 src的低16位值赋给PC,高7位值赋给XPC。,若延时,(SP)-1SP (PC)+3TOS (SP)-1SP (XPC)TOS (src(150)PC (src(2216)XPC,126, FCALLD,指令格式: FCALLD extpmad,指令功能:若非延时,(SP)-1SP (PC)+2TOS (SP)-1SP (XPC)TOS (extpmad(150)PC (extpmad(2216)XPC,功能说明: 先将返回地址PC、XPC压入栈顶,然后将 extpmad的低16位赋给PC,高7位赋给XPC。,若延时,(SP)-1SP (PC)+4TOS (SP)-1SP (XPC)TOS (extpmad(150)PC (extpmad(2216)XPC,127,(3).中断指令,操 作 数: K小于9位的短立即数,指令格式: INTR K,指令功能: (SP)-1SP (PC)+1TOS, INTR,功能说明: 首先将PC值压入栈顶,然后将K所确定的 中断向量赋给PC,执行中断服务子程 序。中断标志寄存器IFR对应位清0且INTM=1。,128,操 作 数: K小于9位的短立即数,指令格式: IRAP K,指令功能: (SP)-1SP (PC)+1TOS, TRAP,功能说明: 首先将PC值压入栈顶,然后将K所确定的 中断向量赋给PC,执行中断服务子程序。,129,(4).返回指令,返回指令共有5条,可实现无条件返回、有条件返回和远程返回等,并具有延时操作。,指令格式: FRETD,指令功能: (TOS)XPC (SP)+1SP (TOS)PC (SP)+1SP, FRETD,功能说明: 长返回指令。先将栈顶低7位赋给XPC。再 把下一个单元的16位值赋给PC,SP加1修正。,130,指令格式: FRETED,指令功能: (TOS)XPC (SP)+1SP (TOS)PC (SP)+1SP 0INTM, FRETED,功能说明: 长中断返回指令。先将栈顶低7位赋给 XPC。再将下一个单元的16位值赋给PC, 同时中断屏蔽位INTM清0。,131,指令功能: If (cond(s) Then (TOS)PC (SP)+1SP Else (PC)+1PC, RCD,功能说明: 若满足条件,栈顶数据弹出到PC,SP加1,若不满足条件,执行PC加1。,指令格式: RCD cond, cond, cond,132,指令功能: (TOS)PC (SP)+1SP, RETD,功能说明: 栈顶16位数据弹出到PC,SP加1。,指令格式: RETD,指令功能: (TOS)PC (SP)+1SP 0INTM, RETED,功能说明: 栈顶16位数据弹出到PC,SP加1,INTM清0。,指令格式: RETED,133,指令功能: (RTN)PC (SP)+1SP 0INTM, RETFD,功能说明: 将快速返回寄存器RTN中的内容赋给PC, 然后SP加1,INTM清0。,指令格式: RETFD,134,(5).堆栈操作指令,堆栈操作指令共有5条,可对系统堆栈进行管理,实现数据的进栈和出栈。,指令格式: FRAME K,指令功能: (SP)+KSP, FRAME,功能说明: 将短立即数偏移K加到SP中。,操 作 数: K9位短立即数,取值:-128127,135,指令格式: POPD Smem,指令功能: (TOS)Smem (SP)+1SP, POPD,功能说明: 由SP寻址的数据存储器单元中的内容复 制到由Smem确定的数据存储器单元中。 然后SP加1。,136, POPM,指令格式: POPM MMR,操 作 数: MMR存储器映像寄存器,指令功能: (TOS)MMR (SP)+1SP,功能说明: 由SP寻址的数据存储器单元中的内容复 制到MMR中,然后修改SP。,137, PSHD,指令格式: PSHD Smem,指令功能: (SP)-1SP Smem TOS,功能说明: SP减1操作后,将存储单元Smem的内容 压入SP指向的数据存储单元。, PSHM,指令格式: PSHM MMR,指令功能: (SP)-1SP MMR TOS,功能说明: SP减1操作后,将MMR的内容压入SP指向 的数据存储单元。,138,(6).其他程序控制指令,指令格式: IDLE K,指令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人民的名义培训
- 税收法制培训
- 培训开营仪式
- 采血点标准操作规程
- 小学英语人教版 (PEP)五年级上册Unit 3 What would you like Part B教案设计
- 小学语文统编版(2024)四年级下册琥珀教案
- 老年营养护理安全与防范
- 物业保安全套培训
- 现场新闻安全生产培训
- 弘扬志愿精神,共创美好校园
- 临榆炸鸡腿加盟合同范本
- 工程造价咨询事务所有限公司操作规程和基本管理制度
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- 保险信息服务合同范本
- 老年人康乐活动-老年节庆活动组织策划
- 预防接种服务提质行动方案2-4-10
- 绿化带改停车位施工方案
- 绿化苗木组织供应及售后服务方案
- 2023-2024学年浙江省环大罗山联盟高一下学期4月期中物理试题(解析版)
- 合用变压器协议
- 护理人员岗位绩效考核评价标准
评论
0/150
提交评论