This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28377S:ASM 地址模式

Guru**** 2482105 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/816068/ccs-tms320f28377s-asm-address-mode

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

在 CCS 汇编语言中、如何使用 DP 寄存器直接寻址模式访问由 C 语言定义的32位长整数数数组? 如何将数组的页地址分配给 DP 寄存器? 它是否与通用全局变量相同?

例如、在 C 程序中定义了数组 uint32 xA [80]、并通过汇编语言程序中的"MOVW DP、#_XA"语句访问该数组。

如何在汇编语言程序中通过间接寻址模式访问上述数组的 XA[60]? "MOVL XAR2、 #_XA"语句是否会将数组的起始地址分配给寄存器?然后、通过"MOVL ACC、*+ XAR2[60]"语句访问数据 XA[60]。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以使用与区域相关的符号将数据变量(如数组)分配给特定存储器地址。 例如、在您的 C 文件中、您可能具有:

    #pragma DATA_SECTION (XA、"ForumDataSection")
    无符号长 XA[80];

    然后、在链接器命令文件的 SECTIONS 部分:
    ForumDataSection:>RAMGS10,page = 1 align(2)

    这会将 XA 的第一个地址放置在地址0x16000处

    如果您要调用汇编函数来访问 XA 中的元素、则可以使用直接寻址加载第一个值、如下所示...

    MOVW DP、#_XA
    MOVL XAR2、#_XA

    (笑声) 然后访问61元素、如下所示...


    MOV AR0、#60
    MOVL ACC、*+ XAR2[AR0]


    不能使用"MOVL ACC、*+ XAR2[60]"、因为"60"大于该寻址模式支持的3个位。 您将需要一个单独的 AR 寄存器;AR0或 AR1。 更多相关信息、请参阅 CPU 指令集指南的第5章。

    但愿这对您有所帮助。

    此致、

    Richard