设ARM 数据存储采用小端格式,R0=0x241a3c5,
R1=0x9000,写出下面指令的执行结果:
STR R0, [R1]
LDR R2, [R1]
LDRB R3, [R1,#2]
AREA ByteCopY, CODE, READONLY
COUNT EQU 0x44332211
A1 EQU 0x40003000
ENTRY
start
LDR R1,=COUNT
MOV R0,R1,LSR#24
LDR R1,=A1
STR R0,[R1]
END
经过分析,题目所给的情况下R0=0x241a3c5,R1=0x9000,采用小端存储方式,也就是说,R0的最低字节在内存地址上是最前面的,而R0的最高字节在内存地址上是最后面的。因此,根据小端存储方式,最低字节在前,最高字节在后的原则,R0的存储方式应该是C5 3C 1A 24。同理,R1的存储方式应该是00 90。
在此情况下,执行以下指令的结果是将R1的高16位数据与低16位数据交换后,保存到地址0x40003000中。具体指令如下:
LDR R3,=A1
MOV R0,R1,LSR#16
AND R2,R1,#0XFF
ORR R0,R0,R2
STR R0,[R3]
该指令的详细步骤如下:
因此,最终结果是在地址0x40003000中存储了0x0000C5。