正序
.data
fmt:.asciz "%d\n"
array:.word 0,1,2,3,4,5,6,7,8,9
.equ n,(.-array)/4 //n是数组的个数,因为一个元素占4字节,10x4元素为40字节,除以4即得到10
.text
.global main
main:
push {lr}
ldr r4,=array
mov r5,#0 //作为下标比较使用,类似c中的for i
loop:
ldr r0,=fmt
ldr r1,[r4],#4
add r5,#1
bl printf
cmp r5,#n
blt loop
mov r0,#0
pop {lr}
mov pc,lr
.end
逆序
.data
fmt:.asciz "%d\n"
array:.word 0,1,2,3,4,5,6,7,8,9
.equ n,(.-array)/4 //n是数组的个数,因为一个元素占4字节,10x4元素为40字节,除以4即得到10
.equ len,(.-array)-4 //获取数组总体字节数,因为逆序输出需要指针指向数组最后一项
.text
.global main
main:
push {lr}
ldr r4,=array
mov r5,#0
add r4,#len
loop:
ldr r0,=fmt
add r5,#1
ldr r1,[r4],#-4 //按照字节数-4来获取对应的下标数,从而实现逆序
bl printf
cmp r5,#n
blt loop
mov r0,#0
pop {lr}
mov pc,lr
.end