网站大量收购独家精品文档,联系QQ:2885784924

TMS320C55x汇编语言编程-20161103.ppt.ppt

  1. 1、本文档共121页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TMS320C55x汇编语言编程-20161103.ppt

*Step 3a: 采用间接寻址方法复制x的初始化值到x copy ;这里是标号 AMOV #x,XAR0 ; XAR0 指向变量x AMOV #init, AR6 ; XAR6指向初始化表table MOV *AR6+,*AR0+ ; 复制开始 MOV *AR6+,*AR0+ MOV *AR6+,*AR0+ MOV *AR6+, *AR0+ * Step 3b: 采用直接寻址方法将x的值相加 add ;这里是标号 AMOV #x,XDP ; XDP 指向变量x .dp x ;使DP寄存器值指向变量x的16位地址(对CCS5.3不起作用?) MOV @x,AC0 ADD @x+3,AC0 ADD @x+1,AC0 ADD @x+2,AC0 * Step 3c: 用绝对寻址方法把运算结果写到变量y中 MOV AC0,*(#y) end ;这里是标号 nop B end * #init的16位地址送AR6 (2)链接器命令文件 (test.cmd) test.obj /* 输入文件 */ –o test.out /* 输出文件 */ –m test.map /* map文件*/ MEMORY { DARAM: org= 000100h, len = 8000h SARAM: org= 010000h, len = 8000h } SECTIONS { vars : DARAM table: SARAM .text: SARAM } * * * * 2.符号常数 符号也可被设置成常数值。为了提高程序的可读性,可以用有意义的名称来代表一些重要的常数值。 伪指令.set和.struct/.tag/.endstruct可以用来将常数赋给符号名; 符号常数不能被重新定义; 汇编器的-d选项相当于用一个符号表示一个常数。该符号可用以代替汇编源程序中的对应常数。 在汇编源程序中,可采用下列伪指令对符号进行检测: .if $isdefed(”name”) ;存在 .if $isdefed(”name”) = 0 ;不存在 .if name = value ;等于某数值 .if name != value ;不等于某数值 使用-d选项的格式如下: masm55 –dname=[value] name为定义的符号名 value是赋予该符号的数值。如果忽落value,则该符号的数值将会被赋予1 * 例5-13,符号常数 K .set 1024 ;常数定义 maxbuf .set 2*K value .set 0 delta .set 1 item .struct ;item 结构定义 .int value ;常数value偏移量= 0 .int delta ;常数delta偏移量= 1 i_len .endstruct array .tag item ;数组声明 .bss array, i_len*K * 3. 汇编器预定义的符号常数 汇编器有若干预定义符号, 包括: 美元符号$, 代表段程序指针SPC的当前值; _large_model表示正在使用的存储器模式: 缺省状态下, 该值为0(小模式); 采用–mk选项可使其值为1; 存储器映像寄存器符号, 如AC0~AC3, AR0~AR7, T0~T3等; 可用_large_model编写与存储器模型无关的程序代码: .if _large_model AMOV #addr, XAR2 ;装载23-bit 地址 .else AMOV #addr, AR2 ; 装载16-bit 地址 .endif * 4. 局部标号 局部标号是一种特殊的标号, 使用的范围和影响是临时性的; 局部标号可被取消定义, 并可再次被定义或自动产生; 定义 方法: 取消局部变量的方法: 用$n来定义, n是0~9的十进制数 用NAME?定义, NAME是任何一个合法的符号名; 局部标号不能用伪指令来定义; 使用.newblock伪指令 ; 使用伪指令.sect,.text或.data改变段; 使用伪指令.include或.copy,进入include文件; 达到include文件的结尾, 离开include文件。 * 例5-14,$n局部标号的使用。 (a)正确使用方法: Label1:MOV ADD

文档评论(0)

daoqqzhuan2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档