文档库 最新最全的文档下载
当前位置:文档库 › C54x

C54x

C54x
C54x

1、DSP芯片内部采用改进的哈佛结构,允许同时取指令和取数据,而且还允许在程序空间和数据空间之间相互传送数据。所谓哈佛结构,是将程序和数据的存贮空间分开,各有各的地址总线和数据总线。这样同一条指令可以同时对不同的存贮空间进行读操作或写操作,从而提高了处理速度。和哈佛结构相配合的就是流水线操作。如果一条指令仅仅对一个数据空间操作,哈佛结构就失去其存在的意义。而DSP指令又不可避免地需要一些单操作数指令。

所谓流水线操作,就是将各条指令执行过程的几个阶段(取指、译码、取操作数、执行)重迭进行,执行完第一条指令的第一步后,紧接执行该指令的第二步,同时执行下条指令的第一步,使得指令执行加快,使大多数指令都可以在单个指令周期内完成。

2、DSP芯片内部采用多总线结构,′C54X内部有8条16位总线,即1条程序总线,3条数据总线,和4条地址总线。程序总线PB传送取自程序存贮器的指令代码和立即操作数或系数表中的数据;数据总线CB和DB传送读自数据存贮器的操作数;数据总线EB传送写到存贮器的数据;地址总线传送执行指令所需的地址。

3、DSP执行一条指令,需要经过取指、译码、取操作数和执行等几个阶段。由于采用流水线结构,使指令执行的这几个阶段重迭进行。′C54X有一个6级深度的流水线,在任何一个机器周期内,可以有1~6条不同的指令在同时工作,每条指令工作在不同级的流水线上。

4、′C54X可寻址64K字程序空间,64K字数据空间,64K字I/O空间,总共可寻址192K字空间,而′C548和′C549的程序空间可扩展到8M(即8192K)字。

5、′C54X中,内部存贮器的形式有DARAM、SARAM和ROM三种,RAM(包括DARAM和SARAM)总是安排到数据存贮空间,也可以构成程序存贮空间;ROM一般构成程序存贮空间,也可部分地安排到数据存贮空间。所谓双寻址RAM(DARAM)就是每个机器周期内可以进行两次存取操作的RAM存贮器,而单寻址RAM(SARAM)就是每个机器期间内只能进行一次存取操作的RAM存贮器。

6、在处理器工作方式状态寄存器PMST中有3个状态位MP/ 、OVLY和DROM,用来安排′C54X 片内存贮器作为程序或数据空间。若MP/ =0,则片内ROM安排到程序空间。若MP/ =1,则片内ROM不安排到程序空间。若OVLY=0,则片内RAM只安排到数据存贮空间。若OVLY=1,则片内RAM安排到程序和数据空间。若DROM=0,则片内ROM不安排到数据空间。若DROM =1,则片内ROM安排到数据空间。

7、为了增强处理器的性能,′C54X对片内ROM进行分块,这样可以在对片内ROM的某一块取指的同时,又可对片内ROM别的块读数据。为了增强处理器的性能,′C54X对片内RAM 也进行分块,分块以后,可以在同一周期内从同一块DARAM中取出两个操作数并将数据写入另一块DARAM中。

8、′C548和′C549采用分页扩展方法,把程序空间分成128页,每页64K字,使其程序空间可扩展到8M字。因此,它们有23根地址线,增加了一个额外的存贮器映象寄存器——程序计数器扩展寄存器(XPC)。当片内RAM安排到程序空间时,每页程序存贮器分成两部分:一部分是公共的32K字;另一部分是各自独立的32K字;当片内ROM被寻址(MP/MC=0),它只能在0页,不能映象到程序存贮器的其它页。

9、′C54X有两类特殊功能寄存器,它们都映象到数据存贮器空间的0页,第一类是CPU寄存器,它们映象到数据空间的0000~001FH地址范围内,主要用于程序的运算处理和寻址方式的选择及设定,第二类是外围电路寄存器,它们映象到数据空间的0020H~005FH区域内,主要用于控制片内外设,包括串行通信控制寄存器组、定时器控制寄存器组、机器周期设定寄存器组等。

10、指数编码器可以在单个周期内执行EXP指令,求得累加器中数的指数值,并以2的补码的形式存放到T寄存器中。累加器的指数值=冗余符号位-8,也就是为消去多余符号位而将累加器中的数值左移的位数,当累加器数值超过32位时指数时个负值。

11、对于′C54X来说,不同型号器件的CPU是相同的,它由以下基本部件组成:40位的ALU、2个40位累加器、桶形移位寄存器(移位数为-16~31)、乘法器/加法器单元、比较选择和存储单元CSSU、指数编码器、CPU状态和控制寄存器。

12﹑累加器A和B都可分为三部分:保护位﹑高阶位和低阶位。其中,保护位用作计算时的数据余量,以防止诸如自相关那样的迭代运算时溢出。

13﹑桶形移位寄存器的任务是为输入的数据定标,包括在ALU运算前对来自数据存贮器的操作数或累加器的值进行定标﹑对累加器的值进行移位﹑归一化处理等。

14﹑′C54X CPU有一个17位×17位硬件乘法器,它与一个40位专用加法器相连,乘法器/加法器单元可以在一个流水线状态周期内完成一次乘法累加(MAC)运算。

当ST1中的小数方式位FRCT=1,乘法器工作在小数相乘方式,乘法结果自动左移1位,以消去多余的符号位。

15﹑比较﹑选择和存储单元CSSU是专为Viterbi算法设计的硬件单元,只要将ST1中的C16位置1,ALU就被配置成双16位工作方式,所有的双字指令都变成双16位的算术运算指令。ALU可以在一个机器周期内完成两个16位数的加/减运算,结果分别存放在累加器的高16位和低16位,然后可以利用CMPS指令对累加器的高16位和低16位进行比较,并选择较大者存放到指令所规定的存贮单元中。

16﹑状态寄存器0中,ARP字段是作为辅助寄存器指针,在间接寻址单操作数时,用来选择辅助寄存器,当DSP工作在标准方式时,不能修正ARP,它必须置“0”。

17﹑状态寄存器0中,DP字段称数据存贮器页指针,在直接寻址方式,若ST1中的CPL=0,该字段(9位)与指令中给出的低7位地址一起形成一个16位直接寻址存贮器的地址。

18﹑处理器工作方式状态寄存器PMST中的IPTR字段(9位)为中断的向量指针,它指示中断向量所驻面的128字程序存贮器的位置,DSP复位时,这9位字段全部置“1”,所以复位向量总是驻面在程序存贮器空间FF80H。

19﹑′C54X寻址存贮器有两种基本形式:16位数和32位数。在32位数寻址时,先处理高有效字,后处理低有效字。如果寻址的第1个字处在偶地址,那么第2个字就在下一个(较高

的)地址。如果寻址的第1个字处在奇地址,那么第2个字就处在前一个(较低的)地址。

20﹑′C54X共有七种寻址方式,分别为立即寻址﹑绝对寻址﹑累加器寻址﹑直接寻址﹑间接寻址﹑存贮器映象寄存器寻址﹑堆栈寻址。

21﹑立即寻址就是在指令中已经包含有执行指令所需的操作数。′C54X中的立即数有两种形式;即短立即数和长立即数。

22﹑绝对寻址,就是在指令中包含有所要寻址的存贮单元的16位地址。

23﹑累加器寻址,就是利用累加器的数值(低16位或低23位)作为地址来读写程序存贮器。

24﹑直接寻址,就是在指令中包含有数据存贮器地址(dma)的低7位,由这7位dma作为偏移地址值,与基地址值(DP或SP)一道构成16位数据存贮器地址。

25﹑间接寻址就是利用8个辅助寄存器(AR0~AR7)中的任一个ARX中的内容作地址寻址64K字数据存贮空间中的任一个存贮单元。

26﹑间接寻址方式中的位码倒序寻址,就是以ARX为指针访问数据存贮器之后,再把ARX 的内容加/减AR0中的内容进行指针调整时,是以位倒序的方式进行,即进位/借位是从左到右,而不是从右到左。

27﹑间接寻址方式中的循环寻址,就是在存贮器中设置一个长度为R的循环缓冲区,用来保存最新的一批数据,缓冲区基地址的N个最低有效位必须为0,即N是满足>R的最小整数。将R值存放在循环缓冲区长度寄存器BK中,并指定一个辅助寄存器ARX指向循环缓冲区,寻址时以ARX的低N位作为循环缓冲区的偏移量进行所规定的寻址操作,并根据以下循环寻址方法修改偏移量,再返回ARX的低N位。

If0≤index+step

Index=index+step

Elseifindex+step≥BK

index=index+step-BK

Elseifindex+step<0

index=index+step+BK

注:循环缓冲区的有效基地址即ARX的低N位为0时所得值;尾地址就是用BK的低N位代替ARX的低N位所得到的,循环缓冲区的索引index就是ARX的低N位,步长step(必须小于BK)可以±1,也可由AR0或长立即数给定。

28﹑存贮器映象寄存器寻址是用来修改存贮器映象寄存器的内容,而不改变当前的DP或SP 的值。可以有两种方式来产生MMR的地址。

①直接寻址方式:不管DP或SP为何值,数据存贮器的高9位地址均置0,利用指令中给出的低7位地址访问MMR;

②间接寻址方式:数据存贮器的高9位地址被置0,用当前辅助寄存器中的低7位寻址MMR,寻址后当前辅助寄存器的高9位被迫置为“0”。

29﹑堆栈寻址,就是利用堆栈指针SP来寻址。

30﹑′C54X的程序计数器PC是一个16位计数器,其中的内容为即将取指的某条指令的代码(包括立即数﹑系数表)在程序存贮器中的地址。

复位时,(PC)=FF80H,顺序执行程序时,PC是按PC+1方式修改,对于分支转移指令,子程序调用与返回﹑中断等操作,都将强行改变PC的内容。

31﹑′C54X的指令系统中条件操作指令有条件分支转移指令﹑条件执行指令XC﹑条件存贮指令﹑条件调用与返回指令。

32﹑′C54X有两条能对其下条指令进行重复操作的指令RPT和RPTZ,重复执行的次数等于重复计数器的内容(RC)+1。RC中的内容不能编程设置﹑只能由重复指令提供的操作数加载。重复操作功能使得那些乘法/累加和数据块传送等多周期指令在执行一次之后变成单周期指令。

33﹑单条重复指令一旦被取指﹑译码,直到重复循环完成以前,对所有中断(包括NMI,但不包括)均不响应,但在执行重复操作期间,如果′C54X响应HOLD信号,那么若ST1中的HM位为0,则继续操作,否则暂停操作。

34﹑执行块重复操作指令RPTB NEXT-1时,控制逻辑自动将(PC)+2→RSA,将NEX-1→REA,同时将1→BRAF,之后每执行一次程序块重复操作,BRC减1,直到BRC减到0,便将0→BRAF,因此,在执行块重复操作RPTB之前,必须通过装载指令把重复执行次数n-1加载到BRC。

35﹑上电后,且时钟电路已正常工作,在复位引脚输入端加上至少2个机器周期的低电平,′C54X便可完成复位操作。复位后(变成高电平)将PC置成FF80H,处理器从FF80H处取指,并开始执行程序,复位后PMST中的中断向量指针IPTR置成1FFH,ST1中的中断方式位INTM 置成1,关闭所有的可屏蔽中断,中断标志寄存器IFR清0,对SP指针没有初始化。

36﹑复位后,PMST中的MP/ 位记载MP/ 引脚的状态,如果MP/ =0,处理器便从片内ROM 地址FF80H处取指开始执行程序,如果MP/ =1,处理器则从片外程序存贮器地址FF80H处取指开始执行程序。

37﹑′C54X支持硬件中断,也支持软件中断,硬件中断包括由外部中断口信号触发的外部硬件中断和由片内外围电路信号触发的内部硬件中断。软件中断是由指令INTR﹑TRAP或RESET

要求的中断。

38﹑′C54X的可屏蔽中断有外部引脚—输入的中断;片内外围电路,如定时器﹑串行口﹑并行口HPI等引起的中断。′C54X的非屏蔽中断包括所有的软件中断,以及两个外部硬件中断和中断。硬件中断对′C54X所有操作方式都产生影响,而中断对′C54X的任何操作都不会产生影响,′C54X响应NMI中中断时,所有其它中断被禁止。

39﹑当一个中断出现的时候,IFR中的相应中断标志位置1。直到中断得到处理为止,或′C54X 复位(为低电平),或将1写到IFR中的相应位,或利用相应的中断号执行INTR指令。

40﹑′C54X中开放可屏蔽中断的条件是ST1中的INTM位=0,IMR中的相应位为1。而非屏蔽中断不受INTM位的影响,且在IMR寄存器中无相应标志位。

41﹑INTR软件中断是不可屏蔽的中断,它不受ST1中的中断屏蔽位INTM的影响,当CPU 响应INTR中断时,INTM位置1,关闭其它可屏蔽中断。而TRAP指令也是不可屏蔽中断,但它不影响INTM位的状态。

42﹑RESET指令也是一种不可屏蔽的软件中断,它不受INTM位的影响,但指令执行后将INTM 位置1。硬件复位对ST0﹑ST1及PMST均产生影响,而软件复位不影响PMST。

43﹑′C54X对于可屏蔽中断,响应的条件是:中断优先级别最高﹑ST1中的INTM位为0,IMR 中的相应位为1。

44﹑′C54X中,中断向量地址是由PMST中的IPTR(中断向量指针﹑9位)作为高9位和中断向量序号(5位﹑左移2位﹑低位补0)作为低7位所组成。

45﹑′C54X允许紧跟在延迟分支转移指令后面的2条单字,或一条双字指令先执行完毕,从而使延迟分支转移指令变成一条2周期指令。

46﹑′C54X片内的双寻址存贮器DARAM分成若干独立的存贮器块,允许CPU在单个周期内对其访问2次,意即:

①在单周期内允许同时访问DARAM的不同块;

②允许处于流水线同一级的两条指令分别访问两个存贮器块;

③允许处于流水线不同级上的两条指令访问同一存贮器块。均不会发生时序上的冲突。

47﹑为什么允许CPU在单周期内访问DARAM 2次?这是因为′C54X规定对DARAM访问,有的在前半周期,有的在后半周期。其中取指和读第一个数据是安排在前半周期。而读第二个数据和写数据是安排在后半周期。因此,如果CPU同时(都在前半或后半周期)访问DARAM 就会造成时序上的冲突。此时CPU可通过将写操作延迟一个周期或者插入一个空周期的办法,自动解决时序上的冲突。

48﹑′C54X的单寻址存贮器SARAM也是分块的,CPU可以在单个周期内对每个存贮器块访问一次,但不能同时访问同一个存贮器块。否则就会出现时序上的冲突。此时,将另一次寻址操作自动地延迟到下一个周期,于是导致了流水线等待1个周期。

49、由于CPU的资源是有限的,当某一资源同时被一个以上流水线级访问时就可能发生时序上的冲突,其中有些冲突可以由CPU通过延迟寻址的方法自动缓解,有些需要由程序员重新安排指令或插入NOP指令加以解决。对下列存贮器映象寄存器,如果在流水线中同时对它们寻址就可能发生冲突:ARX、BK、SP、T、PMST、ST0、ST1、BRC及累加器A、B,解决冲突的办法就是在这些寄存器或字段写操作后面插入若干条NOP指令。需要插入的周期数可查阅等待周期表。在′C54X指令中,有些带有保护性操作,如STM、MVDK、MVMM、MVMD 等,双字和三字指令都会提供隐含的保护周期,这样一来,有时可以不插入或少插入NOP 指令了。

50、′C54X片内定时器是一个软件可编程定时器,它主要由定时器寄存器TIM、定时器周期寄存器PRD和定时器控制寄存器TCR组成,TIM是一个16位减1计数器,PRD是一个16位的时间常数寄存器。

通过编程可以控制定时器产生定时中断,定时中断的周期为CLKOUT×(TDDR+1)×(PRD +1)

51、对定时器初始化编程步骤

(1)先将TCR中的TSS位置1,关闭定时器;

(2)加载PRD;

(3)重新加载TCR(使TDDR初始化,令TSS位为0,以接通CLKOUT;TRB位置1,以产生正脉冲信号,加载定时器时间常数),启动定时器。

要开放定时器中断,必须(设STI中的INTM=1):

⑴将1写到IFR中TIN位,该位变成0,清除尚未处理完的定时器中断;

⑵将IMR中的TINT位置1,开放定时器中断;

⑶将STI中的INTM清0,从整体上开放中断(开放所有可屏蔽中断)。

52、时钟发生器为′C54X提供时钟信号。时钟发生器由内部振荡器和锁相环(PLL)电路两部分构成。PLL兼有频率放大和信号提纯的功能,所以′C54X的外部频率源的频率可以比CPU 的时钟频率低,这样就能降低因高速开头时钟所造成的高频噪声。

53、′C54X有两种形式的PLL:硬件配置的PLL和软件可编程PLL。所谓硬件配置的PLL,就是通过设定′C54X的3个引脚CLKMD1、CLKMD2和CLKMD3的状态,选定时钟方式。软件可编程PLL,通过软件编程可以选择以下两种时钟方式之一:

①PLL方式,这是靠PLL电路将移入时钟CLKIN乘以从0。25~15共31个系数中的一个系数作为CPU时钟。

②DIV方式,将输入时钟CLKIN除以2或4提供给CPU,这时所有的模拟电路包括PLL电路都关断,功耗最小。

54、软件可编程PLL,在芯片复位时,时钟方式由3个引脚CLKMD1、CLKMD2、CLKMD3的状态决定。复位后可以对16位的时钟方式寄存器CLKMD编程加载,以配置成所要求的时钟方式。

55、在PLL锁定之前,它是不能用作′C54X时钟的,为此可以通过对CLKMD寄存器中的PLLCOUNT 8位字段编程,以自动延迟定时直到PLL锁定为此。这主要靠PLL中的锁定定时器,它是一个8位减1计数器。当时钟发生器从DIV工作方式转移到PLL工作方式时,锁定定时

器工作,当CLKMD中的PLLCOUNT字段的计数值加载给PLL锁定定器后,每来16个输入时钟CLKIN计数器减1,直到减到0,PLL才开始对′C54X定时,所以锁定延迟时间的设定范围为(0~255)×16×CLKIN个周期。

56、PLL锁定时间与CLKOUT频率的关系如图1-35所示。由CLKOUT的值可以从图上求得锁定时间,有了锁定时间,便可按下式求出PLLCOUNT的值了:PLLCOUNT(十进制数)>锁定时间/16×TCLK IN

57、主机接口HPI是一个8位并行口,用来与主设备或主处理器接口。外部主机是HPI的主控者,它可以通过HPI直接访问CPU的存储空间,包括存贮器映象寄存器。HIP是主机的一个外围设备。′C54X与主机传送数据时,HPI能自动地将外部接口传来的连接的8位数组合成16位数后传送给′C54X。

58、HPI主要由HPI存贮器(HPI RAM)、HPI地址寄存器(HPIA)、HPI数据锁存器(HPID)、HPI控制寄存器(HPIC)和HPI控制逻辑五个部分组成。HPI RAM为2K字DARAM,主要用于′C54X 与主机之间传送数据,也可作为双寻址RAM或程序RAM。HPIA只能被主机寻址,寄存器中存放的是主机要访问的HPIRAM单元地址。HPID也只能被主机直接访问,其中的内容是主机当前读/写HPI RAM的数据。HPIC可被′C54X也可被主机访问。

59、HPI有两种工作方式:共用寻址方式SAM和仅主机寻址方式HOM。在共用寻址方式下,主机和′C54X都能寻址HPI RAM,在仅主机寻址方式下,仅能让主机寻址HPI RAM,如果工作时序周期发生冲突,则主机有更高优先权。′C54X等待一个周期。

60、HPI存贮器地址的自动增量特性(使引脚HCNTL1、HCNTL0=01,进入地址自动增量方式),可以用来连续寻址HPI RAM,在自动增量方式,每进行一次读操作,都会使HPIA事后增1,每进行一次写操作,都会使HIPA事先增1。

61、HPIC寄存器是一个16位的寄存器,其中有4个状态位控制着HPI的操作。由于主机接口总是传送8位字节,在主机这一边就以相同内容的高字节与低字节通过8位HPI数据总线传送给HPIC(选择HCNTL1和HCNTL0均为0)。在′C54X这一边HPIC的高位是不用的,控制/状态位都在低4位,寻址HPIC的地址为002CH。

62、′C54X具有高速、全双工串行口,它有三种形式:标准同步串行口SSP、缓冲串行口BSP 和时分多路串行口TDM。′C54X的串行口都是双缓冲的。

63、标准同步串行口SSP是由16位数据接收寄存器DRR、数据发送寄存器DXR、接收移位寄存器RSR、发送移位寄存器XSR以及控制电路所组成。收、发部分还有与之相关的时钟、帧同步脉冲信号,串行数据可按8位字节或16位字转换。

64、缓冲串行口BSP是在标准同步串行口的基础上增加了一个自动缓冲单元ABU,它是一种增强型的标准串行口。ABU利用独立于CPU的专用总线,让串行口直接读/写′C54X的内部存贮器。

65、BSP有两种工作方式:非缓冲方式和自动缓冲方式。当工作在非缓冲方式时ABU是透明

的,数据传送操作与标准同步串行口一样,串行口产生以字为基础的中断加到CPU,作为接收和发送中断。当工作在缓冲方式时,串行口直接与′C54X内部存贮器进行16位数据传送。

66、时分多路串行口TDM是将时间间隔分成若干个子间隔,按事先规定,每一个子间隔表示一个通信信道,′C54X TDM最多可以有8个TDM信道可用,每个器件可以用1个信道发送数据,用1个或多个信道接收数据。

67、TDM串行口也有两种工作方式:非TDM方式和TDM方式,当工作在非TDM方式时,其功能与标准同步串行口是一样的。

68、标准同步串行口的工作原理?接口操作受串行口控制寄存器SPC控制。

69、′C54X通过外部总线与外部存贮器以及I/O设备相连,外部总线由数据总线、地址总线以及一组控制信号线所组成。当CPU寻址片内存贮器时,外部数据总线呈高阻状态,地址总线及、、均保持先前的状态,如果PMSR中的地址可见位AVIS=1,那么CPU执行指令时的内部程序存贮器的地址就出现在外部地址总线上,同时指令地址采集信号IAQ有效。

通过READY信号和片内软件可编程等待状态发生器,可以使处理器与慢速的存贮器及I/O口设备接口。当外部设备需要寻址′C54X的外部程序、数据和I/O空间时,可以利用HOLD和HOLDA信号,达到控制′C54X的外部资源的目的。

70、′C54X外部是单总线结构,每个周期只允许进行一次寻址,否则就会发生流水线冲突,因此′C54X规定了流水线各阶段操作的优先级别:数据寻址比程序寻指有较高的优先权,在所有的CPU数据寻址完成以前程序存贮器取指操作是不可能开始的。

71、′C54X片内有两个部件——等待状态发生器和分区转换逻辑电路,控制着外部总线的工作。

软件可编程等待状态发生器可以将外部总线周期延长多达7个机器周期,如果外部器件要求插入7个以上的等待周期,则可以利用硬件READY线来接口,当所有的外部寻址都配置在0等待状态时,加到等待状态发生器的时钟被关断。

72、′C54X将程序空间和数据空间都分成两个32K字块,I/O空间由一个64K字块组成。软件等待状态寄存器每3位一个字段,共5个字段,分别对应这5个存贮空间,用来定义各个空间插入等待状态的数目0~7。

73、可编程分区转换逻辑允许′C54X在外部存贮器分区之间切换时不需在外部为存贮器插入等待状态。当跨越外部程序或数据空间中的存贮器分区界线寻址时,分区转换逻辑会自动地插入一个周期。分区转换控制寄存器BSCR中的分区对照位4位字段,决定外部存贮器分区的大小。在下列几种情况下,分区转换逻辑可以自动插入一个附加的周期。

①当PS—DS位置1时,一次程序存贮器/数据存贮器读之后,紧跟着一次数据存贮器/程序存贮器读操作。

DSP汇编指令学习笔记

Knowledge 问题 谁在DSP的汇编语言中加入了NOP指令? NOP指令加入的条件是什么? About DSP 1.DSP是实时数字信号处理的核心和标志。 2.DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数), 数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。 3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了 运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。 4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换) 具有 哈弗结构 把指令空间与数据空间隔离的存储方式。 这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。 传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。 改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。 冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。 Pipeline(流水线)技术 是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指

习题(中断与接口及答案)

单片机练习三中断与接口 一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为( A )。 A. 375K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为( B )。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是( D )。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是( D )。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位( D )。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择( C )。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为( B )。 B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为( C )。 DY2: MOV R6, #2 DLP1: MOV R7, #250 DLP2: DJNZ R7, DLP2 DJNZ R6, DLP1 RET A.1ms B. C. 2ms D. 4ms 9. 串行口中断入口地址是( D )。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是( A )。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ 11. MCS-51串行口工作于方式2时,传送的一帧信息为( C )。 A. 8位 B. 16位 C. 11位 D. 12位 12. MCS-51单片机有( B )内部中断源。 A. 2个 B. 3个 C. 4个 D. 5个 13. T1作为计数器,工作于方式2,不需门控位参于控制,其控制字为( A,C )。 A. 60H B. 06H C. 66H D. 00H 14. 已知(60H)=23H,(61H)=61H,运行下列程序62H内容为( A )。 CLR C MOV A, #9AH SUBB A,60H ADD A, 61H DA A MOV 62H, A A. 38H B. D8H C. DBH D. 3EH 15. 设系统的晶振频率为6MHZ,下列子程序DELAY的延时时间约为( B )。 DELAY: MOV R2, #0FAH L2: DJNZ R2, L2

汇编常用伪指令

一、基本段定义格式常用结构STACK SEGMENT PARA 'STACK; DB 100 DUP('STACK') STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,data MOV DS,AX MOV ES,AX MOV AL,4CH INT 21H CODE ENDS END START ------------------------------------------------------------------------------------------------------------------------ 段名segment[定位][组合][段字][‘类别’] ... 段名ends (1)定位 段定位(align)属性——指定逻辑段在主存储器中的边界: BYTE:段开始为下一个可用的字节地址(xxxx xxxxb),属性值为1 WORD:段开始为下一个可用的偶数地址(xxxx xxx0b),属性值为2 DWORD:段开始为下一个可用的4倍数地址(xxxx xx00b),属性值为4 PARA:段开始为下一个可用的节地址(xxxx 0000b),属性值为16 PAGE:段开始为下一个可用的页地址(0000 0000b),属性值为256 简化段定义伪指令的代码和数据段默认采用WORD定位,堆栈段默认采用PARA定位。完整段定义伪指令的默认定位属性是PARA。(2)组合 PUBLIC: 所有此类型的同名段组合成一个逻辑段,公用一个段地址,运行时装入同一个物理段中。 COMMON : 所有此类型的同名段具有相同的起始地址(覆盖),共享相同的存储区域。 AT <数值表达式> : 按绝对地址定位,段地址就是表达式的值。

DSP汇编指令总结

DSP汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) 长立即数寻址(双指令字) 第一指令字 第二指令字 16位常数=16384=4000h 2、直接寻址 ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。N规定是否改变ARP值,(N=0,不变)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条); 4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条); 4.3.1.6、移位和循环移位指令(4条); 4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条) 4.3.3、存储器与I/O操作指令(8条)4.3.3.1、数据移动指令(4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); ▲ADD ▲ADDC(带进位加法指令) ▲ADDS(抑制符号扩展加法指令) ▲ADDT(移位次数由TREG指定的加法指令) 4.3.1.2、减法指令(5条); ★SUB(带移位的减法指令) ★SUBB(带借位的减法指令) ★SUBC(条件减法指令) ★SUBS(减法指令) ★SUBT(带移位的减法指令,TREG决定移位次数)4.3.1.3、乘法指令(2条); ★MPY(带符号乘法指令) ★MPYU(无符号乘法指令) 4.3.1.4、乘加与乘减指令(6条); ★MAC(累加前次积并乘)(字数2,周期3) ★MAC(累加前次积并乘) ★MPYA(累加-乘指令) ★MPYS(减-乘指令) ★SQRA(累加平方值指令) ★SQRS(累减并平方指令) 4.3.1.5、其它算数指令(3条); ★ABS(累加器取绝对值指令) ★NEG(累加器取补码指令) ★NORM(累加器规格化指令) 返回 4.3.1.6、移位和循环移位指令(4条); ▲ SFL(累加器内容左移指令) ▲ SFR(累加器内容右移指令) ▲ROL(累加器内容循环左移指令) ▲ROR(累加器内容循环右移指令) 返回 4.3.1.7、逻辑运算指令(4条); ▲ AND(逻辑与指令) ▲ OR(逻辑或指令) ▲ XOR(逻辑异或指令) ▲ CMPL(累加器取反指令) 返回 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条)

IA-32中常见的伪指令

TITLE 伪指令将整行标为注释 INCLUDE伪指令后跟文件名,指定从某一文件中拷贝必需的信息 .code伪指令用来标记代码段的开始,程序中所有可执行语句都放于此处 PROC伪指令允许声明一个过程并且附带参数列表,其使用格式为 label PROC { [,parameter_1] } 每个参数的格式为参数名:类型 ENDP伪指令标识子程序的结束 END伪指令标明该行是汇编程序的最后一行,编译器将忽略该行后面的所有内容 .386伪指令指出了程序要求的最低CPU(Intel386) .MODEL伪指令指示编译器哪种模式程序生成代码 STDCALL伪指令允许程序调用MS-Windows函数 PROTO伪指令声明了程序使用的子程序 INVOKE是一个用于调用过程或函数的汇编伪指令 BYTE,SBYTE等类似的,用于定义数据的伪指令。早期还是用DB,但DB无法区分是否有符号DUP操作使用一个常量表达式作为计数器来重复分配存储空间。即使用DUP可以一次分配多个空间,并且决定对此空间进行全部初始化或全部都不初始化 .DAT A伪指令可用于声明未初始化数据,它在定义大块的未初始化数据时非常有用,因为它可以缩小编译后的程序尺寸 =(等号伪指令)将符号名和整数表达式联系起来。以=定义的符号可重定义任意多次EQU伪指令将符号名和整数表达式或任意文本联系起来。三种使用格式 name EQU expression 有效的整数表达式 name EQU symbol 已被=或EQU定义的符号 name EQU 用EQU定义的符号不能在同一源代码文件中重复定义 TEXTEQU伪指令可用来创建文本宏(text macro) OFFSET操作符返回一个变量相对于其所在段开始的偏移,即返回数据标号的偏移地址PTR操作符允许重载变量的默认尺寸 TYPE操作符返回数组中每个元素的大小(以字节计算) LENGTHOF操作符返回数组内元素的数目。注意对在DUP的嵌套使用和换行的情况SIZEOF操作符返回数组初始化时占用的字节数。即返回LENGTHOF和TYPE返回值的乘积ALLIGN伪指令将变量的位置按字节、字、双字边界对齐ALLIGN 1|2|4。数据对齐可能会浪费一部分存储空间,但CPU处理存储在偶数地址的数据比处理存储在奇数地址的 数据要快 LABEL伪指令允许插入一个标号并赋予其尺寸属性而无需分配任何实际的存储空间 JMP指令导致向代码段内的目标地址做无条件转移 LOOP指令提供了一种将程序块重复执行特定次数的简单方法。ECX被自动用作计数器。并且注意LOOP指令的执行是分两步:首先,ECX减1,接着与0比较。根据比较的 结果来决定是否发生跳转 .NOLIST伪指令禁止编译器在创建的列表文件中显示这些源文件行。 .LIST伪指令允许显示后面文件行 USES与PROC伪指令配套使用的USES操作符允许列出被过程修改的所有寄存器,它只是编译器做两件事情:首先,在过程的开始出生成PUSH指令在堆栈上保存寄存器;其 次,在过程的结束处生成POP指令恢复这些寄存器的值。 LOCAL伪指令在过程内声明一个或多个命名局部变量,语句必须紧跟在PROC伪指令所在行

习题(中断定时部分)

1、2 填空题 1、单片机计数器最大的计数值为 _____________ 。 2、当把定时器/计数器T0 定义为可自动重新装入初值的8 位定时器/计数器 时,________为8 位计数器,______为常数寄存器。 3、若系统晶振频率是12MHz,利用定时器/计数器T1 定时1ms,在方式1 下定时初值为__________。 4、当计数器产生计数溢出时,把定时器/计数器的TF0(TF1)位置“1”。对计数溢出的处理,在中断方式时,该位作为 _____位使用;在查询方式时,该位作_____位使用。 5、在定时器T0工作方式3下,欲使TH0停止工作,应执行一条______的指令。 6、在定时器工作方式1下,计数器的宽度为16位,如果系统晶振频率为6MHz,则最大定时时间为 _______,若系统晶振频率为12MHz,则最大定时时间为 ______。 7、8051单片机内部设有两个16位定时器/计数器,即_____ 和 _____。 8、T0由两个8位特殊功能寄存器_______和________组成,T1由 ______ 和______组成。 9、定时时间与定时器的______ 及______有关。 10、MCS-51的定时器/计数器T0的门控信号GATE设置为1时,只有______引脚为高电平且由软件使______置1时,才能启动定时器/计数器T0工作。 11、当T0为方式______ ,T1为方式______的时候,8051单片机的定时器可提供3个8位定时器/计数器。 12、定时器/计数器的工作方式3是指的将____________拆成两个独立的8位计数器。而另一个定时器/计数器此时通常只可作为_________________使用。13、8051单片机外部中断请求信号有电平触发方式和__________触发方式两种。在电平触发方式下,当采集到INT0、INT1的有效信号为__________时,激活外部中断。 14、8051单片机的P0~P3口均是______位I/O口,其中的P0口和P2口除了可以进行数据的输入/输出外,通常还用来构建系统的______________和 _____________。当连接输入/输出设备时,常选_________做输入/输出口。 二、选择题 1、在下列寄存器中,与定时/计数控制无关的是() A、TCON B、TMOD C、SCON D、IE 2、在工作方式0下,计数器是由TH的全部8位和TL的5位组成,因此其计数范围是() A、1~8192 B、0~8191 C、0~8192 D、1~4096 3、如果以查询方式进行定时应用,则应用程序中的初始化内容应包括()

实验二 常用伪指令 2010214228

实验二常用伪指令的使用 一.实验目的: 进一步熟悉变量定义伪指令及各种运算符的使用。 二.实验内容: 调试实验指导中给出的程序,查看数据区的内容,回答相关问题。三.操作步骤 1.建立源程序文件如图3-1所示。 DATA SEGMENT ARRY1 DB 12,-18,32,68,-9 COUNT EQU $-ARRY1 ORG 08H ARRY2 DW 15,26,38 STR1 DB 'ABCD' DATA1 DW ARRY2 DATA2 DD ARRY2 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,STR1 MOV BL,COUNT MOV DX,OFFSET ARRY2 MOV AX,SEG ARRY2 MOV BL, BYTE PTR DATA1+1 MOV BL,BYTE PTR DATA2 MOV CX,WORD PTR DATA2 MOV AH,4CH ; 调用21H号中断的4CH号功能,返回DOS INT 21H CODE ENDS END START 图2-1 2. 根据数据区定义画出数据区的存储示意图 地址内容变量名 0710:0000 0CH ARRY1 0710:0001 EEH 0710:0002 20H

0710:0003 44H 0710:0004 F7H 0710:0008 0FH ARRY2 0710:0009 00H 0710:000A 1AH 0710:000B 00H 0710:000C 26H 0710:000D 00H 0710:000E 41H STR1 0710:000F 42H 0710:0010 43H 0710:0011 44H 0710:0012 00H DA TA1 0710:0013 00H 0710:0014 08H DA TA2 0710:0015 00H 0710:0016 10H 0710:0017 07H 3.回答以下问题: 1)DATA段中DA TA1和DATA2里存放的数据的物理意义是什么? 答:DATA1中存放ARRY1的偏移地址,占一个字,低位字节占用第一个字节地址,高位字节占用第二个字节地址。DATA2存放ARRY2的段基址和偏移地址,偏移地址占用低位字,段基址占用高位字。 2)COUNT所表示的值是多少?其物理意义是什么? 答:COUNT用来计算ARRY1占用的字节数,其值是5 3)将STR1 DB'ABCD' 改为STR1 DW'ABCD' ,则STR1数据区的内容会发生 什么变化? 答:由DB改为DW后STR1数据区的内容为0041H,0042H,0043H,0044H 4. 单步运行程序中带下划线的语句,查看每一条语句运行后寄存器的变化,用准确的语言描述该指令所执行的操作。如:指令MOV AX,[BX] 执行的操作是将寄存器BX中的内容作为有效地址,将其所指向的连续两个字节的存储单元的内容送到AX 中。 答: 注:本次实验无须提交源程序文件,只提交实验报告即可。

STM 常用汇编指令

在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。 ARM指令集可以分为六大类,分别为数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。 ARM指令使用的基本格式如下: 〈opcode〉{〈cond〉}{S}〈Rd〉,〈Rn〉{,〈operand2〉} opcode操作码;指令助记符,如LDR、STR等。 cond可选的条件码;执行条件,如EQ、NE等。 S可选后缀;若指定“S”,则根据指令执行结果更新CPSR中的条件码。 Rd目标寄存器。 Rn存放第1操作数的寄存器。 operand2第2个操作数 arm的寻址方式如下: 立即寻址 寄存器寻址 寄存器间接寻址 基址加偏址寻址 堆栈寻址 块拷贝寻址 相对寻址 这里不作详细描述,可以查阅相关文档。 数据处理指令 Load/Store指令 程序状态寄存器与通用寄存器之间的传送指令 转移指令 异常中断指令 协处理器指令 在S3C2410、S3C2440的数据手册中对各种汇编指令有详细的描述;这里只对较常见的作写介绍。 1、相对跳转指令:b、bl 这两条指令的不同之处在于bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。 这两条指令的可跳转范围是当前指令前后32M。 b funa .... funa: b funb ....

funb: .... 2、数据传送指令mov,地址读取伪指令ldr mov指令可以把一个寄存器的值赋给另外一个寄存器,或者把一个常数赋给寄存器。 mov r1,r2 mov r1,#1024 mov传送的常数必须能用立即数来表示。当不能用立即数表示时,可以用ldr命令来赋值。ldr是伪命令,不是真实存在的指令,编译器会把它扩展成真正的指令;如果该常数能用“立即数”来表示,则使用mov指令,否则编译时将该常数保存在某个位置,使用内存读取指令把它读出来。 ldr r1,=1024 3、内存访问指令ldr、str、ldm、stm ldr既可以指低至读取伪指令,也可以是内存访问指令。当他的第二个参数前面有'='时标伪指令,否则表内存访问指令。 ldr指令从内存中读取数据到寄存器,str指令把寄存器的指存储到内存中,他们的操作数都是32位的。 ldr r1,[r2,#4] ldr r1,[r2] ldr r1,[r2],#4 str r1,[r2,#4] str r1,[r2] str r1,[r2],#4 寄存器传送指令可以用一条指令将16个可见寄存器(R0~R15)的任意子集合(或全部)存储到存储器或从存储器中读取数据到该寄存器集合中。与单寄存器存取指令相比,多寄存器数据存取可用的寻址模式更加有限。多寄存器存取指令的汇编格式如下: LDM/STM{}Rn{!}, 4、加减指令add、sub add r1,r2,#1 sub r1,r2,#1 5、程序状态寄存器的访问指令msr,mrs ARM指令中有两条指令,用于在状态寄存器和通用寄存器之间传送数据。修改状态寄存器一般是通过“读取-修改-写回”三个步骤的操作来实现的。这两条指令分别是: 状态寄存器到通用寄存器的传送指令(MRS) 通用寄存器到状态寄存器的传送指令(MSR) 其汇编格式如下: MRS{}Rd,CPSR|SPSR 其汇编格式如下:

DSP 汇编指令缩写

ABS Absolute value of Accumulator ADD add to accumulator ADDC add to accumulator with carry ADDT add to accumulator with shift specified by TREG AND and with accumulator CMPL complement accumulator LACC load accumulator with shift LACL load low accumulator and clear high accumulator LACT load accumulator with shift specified by TREG NEG negate accumulator NORM normalize contents of accumulator OR or with accumulator ROL/ROR rotate accumulator left/right SACH/SACL store high/low accumulator with shift SFL/SFR shift accumulator left/right SUB subtract from accumulator SBUC conditional subtract SUBS subtract from accumulator with sign extension suppressed SUBT subtract from accumulator with shift specified by TREG XOR exclusive or with accumulator ZALR zero low accumulator and load high accumulator with rounding ADRK add short limmediate value to AR BANZ branch on AR not zero CMPR compare AR with AR0 LAR load AR MAR modify AR STR store AR SBRK subtract short limmediate APAC add PREG to accumulator LPH load PREG LT load TREG LTA load TREG and ACC previous product LTD load TREG ACC previous product and move date LTS load TREG and subtract previous product MAC multiply and accumulate MACD multiply and accumulate wit data move MPY multiply MPY A multiply and accumulate previous product MPYS multiply and subtract previous product MPYS multiply unsign PAC load accumulator with PREG SPAC subtract PREG from accumulator SPH/SPL store high/low PREG SPM set PREG output shift mode

PLC常用指令(很全的)

一、顺控指令 1 触点指令 00 LD 逻辑操作开始 01 LDI 逻辑非操作开始 02 AND 逻辑乘 03 ANI 逻辑乘非 04 OR 逻辑加 05 ORI 逻辑加非 2 连接指令 06 ANB AND逻辑块与 07 ORB OR逻辑块或 08 MPS 存储操作结果 09 MRD 从MPS读取操作结果 10 MPP 从MPS读取操作结果并清除结果 3 输出指令 11 OUT 软元件输出 12 SET 软元件置位 13 RST 软元件复位14 PLS 在输入信号的上升沿 15 PLF 在输入信号的下降沿 16 CHK 软元件输出翻转 4 移位指令 17 SFT 元件移1位 18 SFTP 元件移1位 5 主控指令 19 MC 主控开始 20 MCR 主控复位 6 结束指令 21 FEND 结束主程序 22 END 总的程序末尾, 返回第0步 7 其它指令 23 STOP 停止 24 NOP 空操作 二基本指令 1 比较指令 16位数据比较 25 LD= 当S1=S2, 接通, 当S1≠S2, 断开 26 AND= 27 OR= 28 LD<> 当S1≠S2, 接通, 当S1=S2, 断开 29 AND<> 30 OR<> 31 LD> 当S1>S2, 接通, 当S1≤S2, 断开 32 AND> 33 OR> 34 LD<= 当S1≤S2, 接通, 当S1>S2, 断开 35 AND<= 36 OR<= 37 LD< 当S1= 当S1≥S2, 接通, 当S1= 42 OR>= 32位数据比较 43 LDD= 当(S1+1,S1)=(S2+1,S2), 接 通 44 ANDD= 45 ORD= 46 LDD<> 当(S1+1,S1)≠(S2+1,S2),接 通 47 ANDD<> 48 ORD<> 49 LDD> 当(S1+1,S1)>(S2+1,S2), 接 通 50 ANDD> 51 ORD> 52 LDD<= 当(S1+1,S1)≤(S2+1,S2),接 通 53 ANDD<= 54 ORD<=

习题(中断与接口及答案)

中断与接口及答案 一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为()。A. 3750K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为()。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是()。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是()。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位()。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择()。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为()。 A.001BH B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为()。 DY2:MOV R6,#2 DLP1:MOV R7,#250 DLP2:DJNZ R7,DLP2 DJNZ R6,DLP1 RET A.1ms B. 1.5ms C. 2ms D. 4ms 9. 串行口中断入口地址是()。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是()。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ 11. MCS-51串行口工作于方式2时,传送的一帧信息为()。 A. 8位 B. 16位 C. 11位 D. 12位 12. MCS-51单片机有()内部中断源。 A. 2个 B. 3个 C. 4个 D. 5个 13. T1作为计数器,工作于方式2,不需门控位参于控制,其控制字为()。 A. 60H B. 06H C. 66H D. 00H 14. 已知(60H)=23H,(61H)=61H,运行下列程序62H内容为()。 CLR C MOV A,#9AH SUBB A,60H ADD A,61H DA A MOV 62H,A A. 38H B. D8H C. DBH D. 3EH

DSP28335汇编教程

DSP28335汇编教程 当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。 6.1汇编语言指令集概述 在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。 在进行汇编讲解之前先来了解一下开发的核心——CPU。在TMS320C2000系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。 C28x芯片具有3种操作模式: 1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统, 因此,一般应使C28x芯片工作于该种模式。 2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式 下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。 3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x 代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。 本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。 6.1.1 DSP中的操作数 汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。 如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明

中断习题和参考题参考答案(课后)

中断习题和参考题 1、什么是中断向量?中断向量表是什么?非屏蔽中断的类型为多少?8086 中断系统优先级顺序怎样? ①所谓中断响量,实际上就是中断处理子程序的入口地址,每个中断类型对应一个中断响量 ②中断向量按照中断类型的顺序在内存0段0单元开始有规则排列的一张表 ③类型02H ④内部中断>非屏蔽中断>可屏蔽中断>单步中断 2、8259的全嵌套和特殊全嵌套方式有何异同?优先级自动循环是什么?什么特殊屏蔽方式?如何设置成该方式? ①全嵌套方式是8259A最常用的工作方式,只有在单片情况下,在全嵌套方式中,中断请求按优先级0-7进行处理,0级中断的优先级最高。特殊全嵌套方式和全嵌套方式基本相同,只有一点不同,就是在特殊全嵌套方式下,还可满足同级中断打断同级中断,从而实现一种对同级中断请求的特殊嵌套,而在全嵌套方式中,只有当更高级的中断到时,才会进行嵌套。 ②优先级自动循环方式一般在系统中多个中断源优先级相等的场合。在这种方式下,优先级队列是在变化的,一个设备受到中断服务以后,它的优先级自动降为最低。 ③仅仅禁止同级中断嵌套,开放高级中断和低级中断④两步:1步设置OCW 3 , 设置成特殊屏蔽方式,2步设置OCW 1 屏蔽某级中断。 3、8259有几种中断结束方式?应用场合如何? 1.中断自动结束方式,不需要设置中断结束命令,在单片系统中且不会出现中断嵌套时用。 2.一般中断结束方式,在全嵌套方式下用。 3.特殊中断结束方式,在任何场合均可使用。 4、8259的ICW 2 与中断类型码有什么关系?说明类型码为30H,36H,38H的异同。 ①高五位相同,低三位不同(中断类型码的低三位和引脚的编码有关,ICW2的低三位无意义) ②30H,36H高五位相同,ICW 2=30H, 30H为8259A IR 对应的中断类型码, 36H为8259A IR 对应的中断类型码。 38H ICW 2=38H 38H为8259A IR 对应的中断类型码

PIC16系列_单片机常用伪指令(汇编)

PIC 单片机端口电平变化中断使用必须注意的问题 PICC18使用说明 PIC 单片机常用伪指令 PIC单片机2009-02-19 11:16:40 阅读8 评论0 字号:大中小订阅 3.2.3 MPASM 的伪指令 我们在第一章中已经详细介绍了中档PIC 单片机的35 条指令,源程序的编写主要就是用这些基本的指令实现你的控制任务。但为了增加源程序的可读性和可维护性,我们引入了伪指令的概念。伪指令本身不会产生可执行的汇编指令,但它们可以帮组“管理”你编写的程序,其实用性和必要性绝不亚于35 条正真的汇编指令。我们在此着重介绍最常用的几种 伪指令。 #include 或include #include 伪指令的作用是把另外一个文件的内容全部包含复制到本伪指令所在的位置。 被包含复制的文件可以是任何形式的文本文件,当然文件中的内容和语法结构必须是MPASM 能够识别的。最经常被“include”的是针对PIC 单片机内部特殊功能寄存器定义的包含头文件,在MPLAB 安装后它们全部放在路径“ C:\Program Files\MPLAB IDE\MCHIP_Tools”下,每一个型号的PIC 单片机都有一个对应的预定义包含头文件,扩展名是“.inc”。除了一些符号预定义文件,你也可以把现有的其它程序文件作为一个代码模块直接“包含”进来作为自己程序的一部分。见例3-01。 #include ;把预定义的PIC16F877A 寄存器符号包含到此处 #include ”math.asm” ;把现有的程序文件包含进来作为自己代码的一部分 例3-01 请注意被包含文件的引用方式。一种是<>尖括号引用,这种引用意味着让编译器去默认的路径下寻找该文件,MPASM 默认的寄存器预定义文件存放路径即为上面提及的MPLAB 安装后的目录;另一种是””双引号引用,这种引用方式的意思是指示编译器从引号中指定的全程文件路径下寻找该文件。例3-01 中”math.asm”没有指定路径,即意味着在当前项目路径下寻找math.asm 文件。如果编译器找不到被包含的文件,将会有错误信息告 知。 请在你的源程序中尽量用MPLAB 标准头文件定义的寄存器符号。一来这些被定义的寄存器符号和芯片数据手册上的描述一一对应,理解起来即直观又容易;二来如果用你自己定义符号就缺乏一个大家能一起交流的标准平台,其他人要解读你的代码时将费时费力。故例3-01 中的首行#include 包含引用伪指令可以说是PIC 单片机程序编写时的标准必备。

dsp汇编指令系统介绍(精)

汇编指令集 本节根据指令的功能来分,提供六张表来说明指令集的概况: 累加器、算数和逻辑指令(表2); 辅助寄存器和数据页指针指令(表3); TREG、PREG和乘法指令(表4); 转移指令(表5); 控制指令(表6); I/O和存储器操作(表7)。 在每张表中,指令按字母顺序排列。执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。 为了参照起见,我们先定义这六张概述表的符号意义: ACC 累加器。 AR BITX CM 辅助寄存器。 4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。 2位数值,CMPR指令执行CM值所声明的比较: 若CM=00,测试当前AR=AR0否; 若CM=01,测试当前ARAR0否; 若CM=11,测试当前AR≠AR0否。 Shift TP 4位右移量。用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低, TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。 ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。 52 表2 累加器、算数和逻辑指令 ABS 周期 |(ACC)|→ACC 1 (ACC)+(数据存储器地址)×1 2shift→ACC (ACC)+(数据存储器地址)×

216→ACC 1(ACC)+k→ACC 1 shift (ACC)+lk×2→ACC 2 指令功能 (ACC)+(数据存储器地址)+(C)→ ACC 寻址方式 直接/间接 直接/间接短立即数长立即数 指令说明 ACC取绝对值 移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。寻址短立即数时,加操作不受SXM的影响,且不能重复执行。 ADD ADDC 1 直接/间接该指令抑制符号扩展 该指令抑制符号扩展;无论SXM为何值,数据均作无符号16位数看待。当SXM=0和 直接/间接 移位次数等于0时,ADDS与ADD指令结果相同。 被寻址的数据寄存器单元的内容左移并加 直接/间接到ACC,移位次数由TREG的低4位确定, SXM位的值控制移位时是否作符号扩展。 使用直接/间接寻址,ACC的低位字与数据直接/间接存储器单元的值作与运算,结果存在ACC 的低字,ACC的高位字清0。使用立即数寻 址,长立即数可以左移,移位时,32位中长立即数未被长立即操作数填充的位均被清零。 长立即数累加器中的内容用其逻辑反取代指定的数据存储器单元的内容或16位常数直接/间接左移并加载到ACC,低位填0,若SXM= 1,高位用符号位扩展;若SXM=0,则填直接/间接0。 长立即数 指定的数据存储器单元的内容或用0扩展

习题(中断与接口及答案)

一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为()。 A. 3750K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为()。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是()。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是()。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位()。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择()。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为()。 B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为()。 DY2: MOV R6, #2 DLP1: MOV R7, #250 DLP2: DJNZ R7, DLP2 DJNZ R6, DLP1 RET A.1ms B. C. 2ms D. 4ms 9. 串行口中断入口地址是()。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是()。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ

微机常用指令伪指令_2012

常用指令、常用伪指令 一、常用指令: (一)数据传送指令 MOV d,s PUSH s POP d LEA d,s IN 累加器,端口 OUT 端口,累加器 (二)算术运算指令 ADD d,s ADC d,s INC d SUB d,s SBB d,s DEC d CMP d,s MUL s IMUL s DIV s IDIV s (三)逻辑运算和移位循环指令 AND d,s OR d,s XOR d,s NOT d TEST d,s SAL d,count SAR d,count SHL d,count SHR d,count ROL d,count ROR d,count RCL d,count RCR d,count (四)串操作指令 MOVSB / MOVSW CMPSB /CMPSW SCASB / SCASW

LODSB / LODSW STOSB / STOSW 重复前缀:REP,REPE/REPZ,REPNE/REPNZ (五)程序控制指令 JMP 目标标号 CALL 过程名 RET JA 目标标号 JAE 目标标号 JB 目标标号 JBE 目标标号 JG 目标标号 JGE 目标标号 JL 目标标号 JLE 目标标号 JC 目标标号 JNC 目标标号 JE/JZ 目标标号 JNE/JNZ 目标标号 LOOP 目标标号 INT 中断类型 IRET (六)处理器控制指令 CLD STD CLI STI HLT NOP 二、常用伪指令 1、数据定义 DB(定义字节);DW(定义字);DD(定义双字); 重复算符DUP; DB ’字符串’ DW <地址表达式>、DD <地址表达式> (教材P139例4.25)2、符号定义 名字EQU <表达式> 3、段定义 段名SEGMENT ……

相关文档