- 1、本文档共121页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 【小学】中小学校长(园长)最新版财务人员培训试卷.docx
- 甄嬛传之滴血认亲剧本PPT.pptx
- 基于STM32的智能拐杖设计.doc
- 2023年机械工程测试技术期末试题库汇总全面.doc VIP
- 2025年中国兽用生物制品行业发展前景及投资战略咨询报告.docx
- 国家安全监管总局关于发布金属非金属矿山禁止使用的设备及工艺目录第一二批.pdf VIP
- 甄嬛传英文剧本.docx
- 废旧铅酸蓄电池绿色处理成套设备可行性研究报告建议书.docx
- 儿童早期预警评分系统(Pediatric early warning system,PEWS)评分标准(Brighton).docx
- 长沙市轨道交通4号线普瑞大道站地连墙施工方案.doc VIP
文档评论(0)