【问题标题】:How to write at least two `area`s in ARM assembly?如何在ARM汇编中至少写两个`区域?
【发布时间】:2014-12-09 05:15:52
【问题描述】:

我正在尝试编写一个区域来定义我在 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

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

【问题讨论】:

  • 您可以发布您尝试过的内容吗?我不清楚你错过了什么
  • 只是AREA name, attribute,...,其中属性为CODEDATA等。到底哪里出了问题?
  • 我编辑了这个问题。这是我出错的地方,我不知道如何从 CODE 区域访问 MYSTR。

标签: arm keil


【解决方案1】:

我怀疑您可能遇到问题,因为您不能使用ADR 来引用另一个AREA 中的符号。见this section of the fine manual

您可能想改用LDR r0, =MYSTR

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

[注意:如果您显示您收到的确切错误消息以及您在上面的代码中使用的命令行,将会很有帮助。]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多