在手臂的数据区域写作
我在STM32上的手臂组件中写了一个泡沫。
AREA Data1,DATA,READWRITE
ARR DCD 1,3,2,4
如何为数据区域中的数组编写值?我正在使用ldr,= arr加载ARR的地址。但是,当我检查内存时,值全部为零。
AREA main, CODE, READONLY
EXPORT __main
__main
MOV R4,#4; LENGTH OF ARRAY
MOV R5,#3; NUMBER OF ITERATIONS
MOV R6,#3; NUMBER OF COMPARISONS
LDR R0,=ARR; ADDRESS OF ARR[0] FROM DATA AREA
__LOOP1
CMP R5,#0
BEQ __done
CMP R6,#0
BEQ __L2;
LDR R2,[R0,#4]; R2=ARR[i+1]
LDR R1,[R0];
MOV R3,R1;
CMP R1,R2;
BLE __L1;
STR R2,[R1];
STR R3,[R0];
__L1
SUBS R6,#1;
ADDS R0,#4;
B __LOOP1;
__L2
SUBS R5,#1;
MOV R6,R5;
LDR R0,=ARR;
B __LOOP1;
__done
AREA A,DATA,READWRITE
ARR DCD 1,3,2,4
END
I am writing a bubble sort in ARM Assembly on the STM32.
AREA Data1,DATA,READWRITE
ARR DCD 1,3,2,4
How can I write a value to the array in the data area? I am using LDR,=ARR to load the address of ARR. However, when I check the memory, the values are all zero.
AREA main, CODE, READONLY
EXPORT __main
__main
MOV R4,#4; LENGTH OF ARRAY
MOV R5,#3; NUMBER OF ITERATIONS
MOV R6,#3; NUMBER OF COMPARISONS
LDR R0,=ARR; ADDRESS OF ARR[0] FROM DATA AREA
__LOOP1
CMP R5,#0
BEQ __done
CMP R6,#0
BEQ __L2;
LDR R2,[R0,#4]; R2=ARR[i+1]
LDR R1,[R0];
MOV R3,R1;
CMP R1,R2;
BLE __L1;
STR R2,[R1];
STR R3,[R0];
__L1
SUBS R6,#1;
ADDS R0,#4;
B __LOOP1;
__L2
SUBS R5,#1;
MOV R6,R5;
LDR R0,=ARR;
B __LOOP1;
__done
AREA A,DATA,READWRITE
ARR DCD 1,3,2,4
END
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论