Assembly ARM组装中的STR指令不';t工作(使用KEIL)

Assembly ARM组装中的STR指令不';t工作(使用KEIL),assembly,arm,stm32,keil,Assembly,Arm,Stm32,Keil,我试图在内存中存储一个值。我的代码在这里: TTL TEST global main AREA PROGRAM, CODE, READONLY ENTRY main ADR R0, DATA MOV R1, #5 STR R1, [R0] HALT B HALT DATA DCD 10 END

我试图在内存中存储一个值。我的代码在这里:

        TTL TEST
        global main

        AREA PROGRAM, CODE, READONLY
        ENTRY

main
        ADR     R0, DATA
        MOV     R1, #5
        STR     R1, [R0]

HALT        B       HALT

DATA    DCD     10

        END

我使用的是KEIL uvision4,目标是STM32F407VGT微处理器。调试代码时,内存窗口中没有任何更改。出什么问题了?

这是我从以前的代码中重写的一段代码。(我没有再次测试)

通过添加
区域asectionname、DATA、READWRITE
,下面的行将被放置在RAM区域中,并且能够被读取和写入
datadcd10
声明一个名为
DATA
的变量,该变量的大小为1个单词,初始值为10。(
DCD
分配一个完整的字,
DCB
分配一个字节)


请看一下这篇文章,以进一步了解如何操作和如何工作。

在我看来,您似乎已将
数据
变量放置在
code
区域
,该区域为
只读
@Michael我不知道如何在arm assembly中定义单独的区域。我尝试在数据之前添加“区域程序数据、数据、读写”,但没有成功。我已将“只读”改为“读写”,但它对我也不起作用。那么读它可能是个好主意。@Michael,我已经读过很多遍了!但这并没有帮我解决这个问题
DCD 10
发出一个值为
10
的单词(在当前区域中)。
   PRESERVE8
   TTL TEST
   global main

   AREA asectionname, DATA, READWRITE
DATA DCD 10

   AREA PROGRAM, CODE, READONLY
   ENTRY

main
   ADR  R0, DATA
   MOV  R1, #5
   STR  R1, [R0]

HALT 
   B    HALT
   END