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