如何在ARM程序集中编写至少两个`area`s?

时间:2014-12-09 05:15:52

标签: arm keil

我正在尝试编写一个在RAM上定义数据的区域,以及我的代码区域。我试图这样做,但我无法让它发挥作用。我还尝试使用EXPORTIMPORT,但在使用时无法解决各种错误。

    AREA HEAP, READWRITE, ALIGN=3
MYSTR   DCB "JaVid",0

    AREA RESET, CODE, READONLY
        ;IMPORT MYSTR

        ENTRY
        ADR R0, MYSTR   ;STRING POINTER

NEXT    LDRB R1, [R0]   ;CHARACTER HOLDER
        CMP R1, #'a'
        BLT OK
        CMP R1, #'z'
        BGT OK

        ;WE NEED TO SWITCH
        SUB R1, #'a'-'A'

OK      STRB R1, [R0], #1
        B NEXT

    END

请您举例说明它是如何完成的?

1 个答案:

答案 0 :(得分:0)

我怀疑您可能遇到问题,因为您无法使用ADR来引用其他AREA中的符号。见this section of the fine manual

您可能希望改为使用LDR r0, =MYSTR

此外,您的循环似乎没有终止。

[注意:显示您获得的确切错误消息以及您使用上述代码的命令行会很有帮助。]