我有这个数组工作。程序正确循环,但这是我所能达到的。
我试图了解如何将第一个元素13保存到另一个寄存器,然后在程序保存时 循环时,将数组中的下一个元素添加到该寄存器,并在添加完所有元素后在我退出时显示所有元素的总和。
问题是当我尝试这样做时,我一直在非法使用寄存器错误或分段错误...我对语法或如何使用寄存器进行打印一无所知。我们的教授没有给我们提供很多文档供您浏览,而且我在网上搜索了一段时间也没有运气。
谢谢
@
@ int ary[] = {13, 44, 7, 29};
@ int main()
@ { for (int index = 0; index < 4; index++)
@ printf("ary[%d] = %d\n", index, ary[index]);
@ }
@ ---------------------------------------
@ Data Section
@ ---------------------------------------
.data
.balign 4
output: .asciz "ary[%d] = %d\n"
ary: .int 13
.int 44
.int 7
.int 29
@ ---------------------------------------
@ Code Section
@ ---------------------------------------
.text
.global main
.extern printf
.extern scanf
main: push {ip, lr} @ push return address + dummy register
@ for alignment
mov r5, #0 @ index = 0
ldr r4, =ary @ get the address of ary
for: cmp r5, #4 @ index < 4?
bge exit @ no
print: mov r1, r5 @ print index
ldr r2, [r4, r5, LSL #2] @ get ary[index]
ldr r0, =output
bl printf @ print index and ary[index]
add r5, r5, #1
b for
exit: pop {ip, pc} @ pop return address into pc