题目:定义数据段,数据段包含四字节数据buff1、buff2和buff3三个数据,buff1和buff2的值为0x11223344,取出后进行加法运算,把结果存入buff3。 截图展示运算调试结果,类似于下图,必须把数据段和代码段内容展示出来
AREA DEFINEDATA,DATA,READWRITE
BUFF1 DCD 0x11223344
BUFF2 DCD 0x11223344
BUFF3 DCD 0
AREA MYCODE,CODE,ALIGN=4
ENTRY
export __main
__main
LDR R1,=BUFF1
LDR R2,=BUFF2
LDR R3,=BUFF3
ADD R4,R0,R5
LDR R0,#0x20000000
STR R4,[R0]
END
代码学出来运行报错,显示LDR R0,#0x20000000这一行出错,为什么呀?
参考GPT和自己的思路:
根据你提供的代码和错误信息,可以看出问题是在LDR R0,#0x20000000这一行出现了错误。可能的原因是,R0寄存器是用来保存内存地址的,而0x20000000这个地址可能不是合法的地址,或者没有被映射到系统的内存中。因此建议你检查一下你的代码中使用的内存地址是否合法,并进行修正。另外,也建议你查阅一下相关的资料,加深对ARM汇编指令和STM32芯片的理解,从而更好地解决各种问题。
这个汇编我不太了解,你确定是0x200000 不是 20000H ?
不知道你这个问题是否已经解决, 如果还没有解决的话: