资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 汇编语言6.1 汇编语言格式TMS320汇编语言源程序由源语句组成。源语句包括汇编指令、伪 指令、宏指令。源语句的一般格式为标号: 助记符 操作数1,操作数2, ;注释标号域 助记符域 操作数域 注释域注:“ ”表示该项可缺省。例6.1 SYM1 .set 2 ;符号SYM1等于2BEGIN: LDP SYM1 ;将2装入DP.word 016h ;初始化一个字为16h 1、标号域标号包含132个字母、数字、字符(AZ,a2,09,及$),可识别符号的 大小写,且规定第一个字符不能是数字。标号可以后随冒号(:),冒号并不作为标号的一部分被处理。如果不使用标号,则第一个字必须是空格或分号或星号。当选用标号时,其值是段程序计数器(SPC)的当前值,标号指向与它们相关联的语 句。例如,如果用.word伪指令初始化几个字,那么标号将指向第一个字。行号 SPC 目标代码 源语句10 0040 000A START:.word 0Ah,3,70041 00030042 0007标号也可以单独出现在行中,此时它指向下一行中的指令。如:3 0050 HERE:4 0050 0003 .word 3 ;此行SPC无增量2、助记符域助记符是源语句中的关键部分,不能缺省,它表示本指令的操 作类型。助记符不能从源语句的第一列开始,如果从第一列开始,将 被解释为标号。助记符包括下列操作码之一:(1)汇编指令(例如ABS,MPY,SPH);(2)伪指令(例如.data,.fist,.set);(3)宏指令(例如.macro,.mexit)。3、操作数域 操作数域是跟在助记符域后面的操作数列表,可缺省。如果多于两 个操作数,则只用逗号隔开。操作数可以是常数、符号和表达式。4、注释域注释域可以从源语句行的任一列开始并直至本行的末尾,即仅包 括注释的源语句是有效的。如果它从第一列开始则可以用分号(;)或 星号(*)开始;在行的其他地方开始的注释,必须以分号开始。上述各个域必须用一个或多个空格分开。 6、1、1 常数、字符串和符号 (1)二进制整数:以字母B(或b)结尾,由二进制数字(0,1)组成的数字串。数 字串长度长度最多可达16个二进制数字,如01000110B。(2)八进制整数:以字母Q(或q)结尾,由八进制数字(07)组成的数字串。数 字串长度最多可达6个八进制数字,如100000Q。(3)十进制整数:以字母D(或d)结尾(也可缺省),十进制整数由09数字组成 ,范围从3267865535,如30000。(4)十六进制整数:以字母H(或h)结尾,由十六进制数字09和AF(或af)组 成的数字串。数字串长度最多可达4个十六进制数字。(5)字符常数:包含在单引号中的一个或两个字符的串。每个字符表示为8位 ASCII码,如a定义字符a,并在内部用61H表示。(6)汇编时间常数:用.set伪指令对符号进行赋值,赋值的内容不同,汇编时 符号所表达的含义也就不同。1、常数例如,用.set向符号赋值,则符号成为常数,为了在表达式中 使用此常数,赋予它的值必须是绝对值。SHIFT .set 3LACC *,SHIFT,AR1也可用.set将寄存器名赋予符号常数,此时符号与寄存器为同一 词,如:AUXR1 .set AR1LACC *,0,AUXR12、字符串字符串是包含在双引号内的一串字符,双引号是字符串的一部分。串的 最大长度是变化的,并由每一个使用字符串的伪指令定义。字符在内部被 表示为8位ASCII字符,如:“sample program”定义13个字符的字符串 sample program。字符串用于下列场合:(1).copy “filename”中的文件名;(2).sect “section name”中的段名;(3).byte “chasing”中数据初始化伪指令;(4).string伪指令的操作数。字符串与字符常数不同,字符常数代表一个单独的整数值,而字符 串是字符的列表。 3、符号符号被用做标号、常数及替代符号。符号名最多可由32个字母和数 字混合组成(AZ,az,09,$和_)。符号的第一个字符不能是数字, 符号内不能有空格。用户定义的符号分大小写,例如汇编时ABC,Abc 及abc被识别为3个不同的符号。表达式由运算符、常数和符号组成。有效表达式值的范围是32768+32767。6、1、2 表达式和运算符 表达式内使用的运算符的优先级见下表:高组运算符说明优先级 1+ - 取正 取负 求反低2* / % 乘 除 求模 左移 右移 3+ - |/*将vectors段的最后连接地址赋给endvec符号* .data:align=16 (7)填充值:定义用于填充初始化空位的数值。语法:file=value或 name:value当初始化输出块内有空位存在时,链接器必须提供原始数据以填 充它值填充空位,该数值在存储器内复制直至它填满空位为止。 程序存储器: 地址范围 内容 00000FFF 片内ROMFF00FFFF 片内RAM块B0 数据存储器: 地址范围 内容 00000005 I/O寄存器 0060007F 片内RAM块B2030003FF 片内RAM块B1 3、链接器举例命令文件exmpcmd /* 定义连接器选项 */ -e SETUP /* 定义程序入口 */ -o exmp.out /* 命名输出文件 */ -m exmp.map /* 创建一个输出列表文件 */ /* 定义输入文件 */ exmp.obj /* 连接三个目标文件 */ fft.obj tables.obj /* 定义存储器配置 */ MEMORY PAGE0: ROM: ORIGIN=0000h, LENGTH=1000hRAM_B0: ORIGIN=FF00h, LENGTH=100h PAGE1: IO: ORIGlN=0000h, LENGTH=06hRAM_B2: ORIGIN=0060h, LENGTH=20h RAM_B1: ORIGIN=0300h, LENGTH=100hRAM: ORIGIN=0400h, LENGTH=FC00h /* 定义输出段 SECTIONS .text:ROM, PAGE=0 /*将包含在exmp.obj和fft.obj中的.text块链接到 ROM中 */ int_vecs: load=0,PAGE=0 /*将来自table.obj中int_vecs块的一组中断矢量连接到ROM中的0地址处*/ .data: file=7A1Ch, load=RAM_B0, PAGE=0/*将tabales.obj和fft.obj中的.data块链接到程序存储器RAM块B0中,并在 其后创建256字的空位,用7Alh填充 */tables.obj(.data)fft.obj(.data).=l00h;fftvars:RAM_B2,page=1 /* 创建新块fftvars,并将来自fft.obj的.bss 块链入数据存储器RAM块的B2中*/fft.obj(.bss) .bss:RAM_B1,PAGE=1,FILL=0FFFFh *exmp.obj中的.bss块链接到RAM块B1中。RAM的未用部分被初始化为FFFh* /* 命令文件结束 */然后用下列命令调用连接器:dsplnk exmp.cmd这样将生成一个名为exmp.out的输出文件,可以在TMS320上运行。同时还生成一 个列表文件exmp.map。 6.5 程序举例在程序设计时,如果需要在多个模块中使用相同的设置和中断处理, 通常将芯片中映射至I/O空间的寄存器地址及标号、预置变量和常数的空 间等设置语句集中在一个文件中,称为I/O寄存器头文件(如init.h);将 转移中断矢量地址的指令集中在一个文件中,称为中断矢量头文件(如 vector.h);将定义程序、数据和I/O空间地址块大小和位置的伪指令集中 在一个文件中,称为命令文件(如F206.cmd)。这3个文件称为公用文件。用户在编写自己的应用程序时,用.copy或.include伪指令将I/O寄存 器头文件和中断矢量头文件复制到该应用程序中,形成一个汇编源程序( 如delay.asm),由汇编器进行汇编后生成一个目标文件(如delay.obj)。再 由连接器把该目标文件和命令文件相连接,生成一个可执行文件(如 delay.out)。对于简单的单个应用程序也可不使用这两个头文件,直接在应用程序 中对用到的I/O寄存器和中断转移地址进行设置。 1、公用文件该文件可为LF2407芯片定义程序、数据和I/O空间地址块的大小和位置 ,用于和汇编后的TMS320C2000文件(*.obj)相连接,输出文件名为.out。 对于其他芯片,应对该文件作相应的修改。/* File: LF2407_PM.cmd MEMORY PAGE0 : /* 程序存储空间 * PM : ORIGIN=0h, LENGTH=0044h /* 中断矢量 * PVECS : ORIGIN=0044h, LENGTH=0100h /* 外设中断矢量 * PROG : ORIGIN=0150h, LENGTH=7EAFh /* 以上为32K字片内闪速存储器(0000h8000h)*/ SARAM_P: ORIGIN=8000h, LENGTH=0800h /* 程序空间上的2K字SARAM */ EX1_PM : ORIGIN=8800h, LENGTH=7600h /* 外部RAM */ B0_PM : ORIGIN=0
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号