afjzcn
afjzcn
2016-05-20 06:03
采纳率: 50%
浏览 2.8k
已采纳

汇编程序在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:\ti\c5500\cgtools\bin\cl55" -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.
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • afjzcn
    afjzcn 2016-05-24 07:02
    已采纳

    直接删掉.def inter_R
    开头的中文字符及分号删掉,定义四个变量
    uninter_word
    inter_bit
    loc_bit
    loc_word

    点赞 评论
  • devmiao
    devmiao 2016-05-20 17:26
    点赞 评论

相关推荐