问题描述
- 汇编程序在CCS中运行时出现4个错,请问该如何修改?
-
;---------------------------------------------------------------; ;输入参数: ; ;ar0 -->指向输入缓冲起始地址的指针,也就是待交织的数据的首地址 ; ;ar1 -->指向交织表起始地址的指针 ; ;ar2 -->指向输出缓冲起始地址的指针,也就是交织完的数据的地址 ; ;ar3 -->待交织数据的长度,以比特表示 ; ;---------------------------------------------------------------- ;uninter_word -->待交织的数据的长度,以字表示 ; ;inter_bit -->交织数据的比特位置 ; ;loc_bit -->待交织数据的比特位置 ; ;loc_word -->待交织数据的字的位置 ; ;---------------------------------------------------------------; .def inter_R inter_R: ldm ar3,a ;待交织数据的长度 sftl a,-4 ;长度/16 得到待交织数据所占的字数 stl a,uninter_word ;存储待交织数据的长度(字的个数) stm #15,BRC ;循环的次数为 16 outstart: st #0000h,inter_bit ;字内比特起始位置为 0 inerstart: rptb i_inner-1 ;循环开始 ld *ar1,-4,a ;由交织表的数据得到此输出比特在待交织数据中的 WORD 位置 stl a,loc_word ;将此 WORD 位置保存起来 ld #15,b ;由交织表的数据得到此输出比特在待交织数据 and *ar1+,b ;中的 BIT 位置 stl b,loc_bit ;将此 BIT 位置保存起来 ld #1,a rsbx c ;清 C rpt loc_bit rol a ;将 1<<loc_bit+1 ror a stlm a,ar4 ;保存 A 中的数据 ldm ar0,b ;保存 AR0 中的数据 ldm ar0,a ;在输入缓冲区中寻找要交织的 BIT 的字的位置 add loc_word,a ;ar0+loc_word stlm a,ar0 ldm ar4,a and *ar0,a ;a 中的第 loc_bit 个比特就是需要交织到此比特位置的数据 stlm b,ar0 rsbx c rpt loc_bit ror a ;数据右移到 A 的最低位中 rol a rsbx c rpt inter_bit rol a ;A<<inter_bit,inter_bit 是输出缓冲当前字中 ror a ;要处理的比特位置 ssbx c ;置 C ld #0ffffh,16,b or #0fffeh,b rpt inter_bit rol b ror b and *ar2,b ;清除输出缓冲此比特位置原有的数据 or a,b ;将 A 中的数据通过“或”操作写入输出 B 中 stl b,*ar2 ;将 B 中的数据写入输出缓冲区中 addm #0001h,inter_bit ;输出缓冲中待操作的比特位置加 1 nop i_inner mar *ar2+ ;输出缓冲中待操作的字位置加 1 ld uninter_word,a sub #1,a ;待交织数据的字的长度减 1 stl a,uninter_word and #0ffffh,a ;判断整字的待交织数据是否交织完 bc outstart,aneq ;没有交织完则继续交织,否则去判断剩下的数据够不够一个字 ldm ar3,a ;如果待交织数据长度除以 16 所得余不为 0 and #15,a ;的话,还要继续处理最后一个字的数据 bc endprog,aeq sub #1,a stlm a,brc stm #0000h,ar3 B inerstart endprog: ret
不知道图片能否上传,再把错误陈列下:
"c:tic5500cgtoolsbincl55" -g -q -fr"C:/ti/tutorial/jiaozhi2/Debug" -d"_DEBUG" -@"Debug.lkf" "jiaozhi.asm" "jiaozhi.asm", ERROR! at line 13: [E9999] Syntax Error .def inter_R ^ "jiaozhi.asm", ERROR! at line 13: [E9999] Invalid mnemonic specified .def inter_R ^ "jiaozhi.asm", REMARK at line 55: [R5571] This instruction may corrupt the carry bit if the M40 bit is set (see the C55x silicon exceptions errata; Advisory CPU_41) addm #0001h,inter_bit ;输出缓冲中待操作的比特位置加 1 "jiaozhi.asm", REMARK at line 57: [R5573] Any BKxx and BSAxx updates are not pipline protected against MAR operations within 5 cycles (see line 55) (see the C55x silicon exceptions errata; Advisory CPU_43) i_inner mar *ar2+ ;输出缓冲中待操作的字位置加 1 "jiaozhi.asm", ERROR! at EOF: [E0300] The following symbols are undefined: 3 Assembly Errors, No Assembly Warnings uninter_word loc_word loc_bit inter_bit Errors in Source - Assembler Aborted Compile Complete, 4 Errors, 0 Warnings, 2 Remarks.
解决方案
直接删掉.def inter_R
开头的中文字符及分号删掉,定义四个变量
uninter_word
inter_bit
loc_bit
loc_word
解决方案二:
http://bbs.csdn.net/topics/391954650
时间: 2024-10-31 18:18:21