代码:
dest EQU 0x40000000
AREA name, CODE, READONLY
ENTRY
MOV r0, #2
LDR r1, =dest
STR r0, [r1]
stop B stop
END
此代码将值 2 写入内存位置 0x40000000。当我将其更改为 0x20000000 时,2 无法写入那里。与 0x3FFFFFFF 相同。当我将内存位置设置为 0x40003FFF 时,2 被打印到该位置,但是当我将地址更改为 0x40004000 时,2 无法在那里打印。对于任何更高的地址位置都是一样的,比如 0x50000000。因此,根据这些输出,似乎 STR 仅将值写入 0x40000000 和 0x40003FFF 之间的有限内存范围。
有谁知道为什么会这样?还是我的代码有问题?我正在使用 Keil uVision5、NXP LPC2140。