资源描述:
《dsp课件4-程序编写和调试环境》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章DSP程序编写和调试环境电气学院应电系蔡涛西三楼光伏实验室Office:87543658-822Mobile:13100699485Email:CaiTao@hust.edu.cn4.1伪指令及相关概念1.伪指令宏指令汇编指令伪指令(Directives)是在汇编和连接的时候提供控制信息和数据,并不产生目标代码。宏指令(MacroDirectives)用户自己创建的指令,在汇编时将其展开并汇编为对应的目标代码。如看门狗。汇编指令(AssemblerDirectives)在汇编时将产生一一对应的目标代码。一.相关概念2.段页段:目标文件的最
2、小单位称为段,它是在存储器中占有连续空间的代码块或数据块。页:64K的数据存储器可以分为512个数据页,每页的大小是128字。3.输出段在SECTIONS伪指令描述的输出文件中定义的段,这些段被定义好了内容以及怎么被分配。4.源列表文件将源文件进行汇编,在产生目标文件的同时,还可以产生源列表文件。它是在汇编器对源程序进行汇编后产生的目标代码和源语句的列表文件。可以优化编译器输出。5.宏定义与子程序的区别宏定义为了简化汇编语言源程序的书写,通常把一些出现较为频繁的程序段定义为宏指令,当程序需要被执行时,只需要一条宏调用语句。使用宏指令的优点在于可以有效的
3、缩短源程序的长度,节省代码占用内存空间,使得代码易读,同时减少了重复书写引起的错误。子程序是一个程序段,在程序中通过跳转指令调用,在每次调用的时候,都需要把整个子程序复制到内存中运行,占用更多的内存空间。6.SPC(SectionProgramCounters)汇编器为每个段保留一个独立的程序计数器(SPC),汇编器从0地址开始处理每一个段,同一个段均按顺序存放。连接器根据每个段在内存图的最后位置进行再定位。二.伪指令的功能伪指令的功能包括:1.把代码和数据汇编到指定的段。2.为未定义的变量保存空间。3.控制列表(LIST)文件。4.分配存储器。5.汇
4、编条件块。6.定义全局变量。7.指定汇编器能得到的宏。8.检查符号调试信息。三.伪指令的分类1.段定义伪指令:把汇编程序的各个部分与适当的段(数据块或程序块)联系起来。.bss,.data,.text,.sect,.usect;2.初始化常数伪指令:在当前段中汇编数值。.bes,.space,.byte,.field,.float,.bfloat,.int.word,.long,.blong,.string;3.段程序计数器排列伪指令:使段程序计数器SPC指向预定的位置(例如页边界)。.align,.even;4.引用其他文件伪指令:提供或者获取文件的
5、信息。.copy,.include,.global,.def,.ref,.mlib;5.条件汇编伪指令:.if,.elseif,.else,.endif,.loop,.break,.endloop;6.汇编时的符号伪指令:把自定义的符号等同于常数值或者字符串;.asg,.eval,.set,.equ,.struct,.endstruct,.newblock7.其他伪指令:.end,.label,.mmregs,.port,.sblock,.version,.emsg,.wmsg;四.常用的伪指令的讲解1.align用途:.align伪指令重置短程序计数
6、器(SPC),使其指向下一个页边界,以保证后面的代码从一个数据页开始。汇编器将原页中间的未用空间用含NOP指令的字填充,一直填到该页边界。例5.10000SPLK#0,AX;0页:0000~0079H0080.align;从下一页00080H开始0080…0081…0082…0100.align;从下一页00100H开始0100SPLK#0,BX新的一页2.word,.int把一个或多个16位的值存储在当前段连续的字中。例:.word0FFFFH.word0FFFFH.word0FFFFH3.bss用法:.bss符号,字长[,块标志].bss该指令表示
7、在RAM中保留空间。(1)符号是一个必要参数,它指向.bss保留空间的第一个地址。(2)字长也是必需参数,它是一个绝对表达式,表示汇编器在.bss段内分配多个字。(3)块标志是可选参数,如果不指定块标志或指定为0,则汇编器在当前.bss段SPC处分配空间;如果块标志为1,则汇编器将检查当前SPC和页边界之间是否有足够的空间为变量分配,若有就连续分配,若无就从下页开始分配。4.copy,.include当汇编器遇到.copy和.include伪指令时,将停止汇编当前的源文件语句,而去编译.copy和.include文件中的语句,然后继续汇编.copy和.
8、include后开始的源文件语句。.copy,.include告诉编译器从其他文件中读入源语句