如何在ARM组件中编写至少两个'area'?

如何在ARM组件中编写至少两个'area'?,arm,keil,Arm,Keil,我试着写一个区域来定义RAM上的数据,还有一个区域用来写代码。我试着这么做,但我就是做不到。我还尝试使用导出和导入,但在使用它们时无法解决各种错误 AREA HEAP, READWRITE, ALIGN=3 MYSTR DCB "JaVid",0 AREA RESET, CODE, READONLY ;IMPORT MYSTR ENTRY ADR R0, MYSTR ;STRING POINTER NEXT LD

我试着写一个区域来定义RAM上的数据,还有一个区域用来写代码。我试着这么做,但我就是做不到。我还尝试使用导出和导入,但在使用它们时无法解决各种错误

    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

你能给我举个例子说明它是如何完成的吗?

我怀疑你可能有问题,因为你不能使用ADR来引用另一个区域中的符号。看

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

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


[注意:如果您显示了获得的确切错误消息以及与上述代码一起使用的命令行,这将非常有用。]

您可以发布您尝试过的内容吗?我不清楚你遗漏了什么,只是属性是代码、数据等等。到底出了什么问题?我编辑了这个问题。这就是我出错的地方,我不知道如何从代码区访问MYSTR。